2011-09-15 71 views
1

當樣式設置爲「分組」並且單元格爲第一個或最後一個部分時,我在UITableViewCell中繪製自定義漸變背景時遇到了一些麻煩。我的方法是簡單地創建一個CAGradientLayer並將其添加到這樣的觀點:在分組的UITableViewCell中自定義背景圖

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = rect; 
gradient.colors = [NSArray arrayWithObjects:(id)[_backgroundColorLight CGColor], (id)[_backgroundColorDark CGColor], nil]; 
[self.backgroundView.layer insertSublayer:gradient atIndex:0]; 
self.backgroundView.layer.masksToBounds = YES; 

不幸的是這將產生細胞像這樣的:Background exceeding the edges

有沒有人對如何使背景適合的提示細胞的寄宿生?

感謝
-f

回答

2

如果你畫一個自定義背景,您還可以自己繪製的邊界。那裏有很多開源的東西。

基本上,你需要知道[在單元格中]是否是top/middle/bottom/single,然後在drawRect中剪下東西。你不會使用insertSublayer。

退房的PageCellBackground類,你在這裏找到: http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

+0

大,這似乎是要走的路。謝謝! – flohei

1

我還沒有嘗試過,但CAGradientLayer恰好是的CALayer的子類,所以也許它的設置可能borderRadius工作。但是,它會繞過所有的角落,因此您可以通過使圖層比單元更大並使單元視圖將其切斷來彌補這一點。

Rounded UIView using CALayers - only some corners - How?更多的例子