在分组的UITableViewCell中自定义背景图

问题描述:

当样式设置为“分组”并且单元格为第一个或最后一个部分时,我在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

如果你画一个自定义背景,您还可以自己绘制的边界。那里有很多开源的东西。

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

退房的PageCellBackground类,你在这里找到: http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

+0

大,这似乎是要走的路。谢谢! – flohei

我还没有尝试过,但CAGradientLayer恰好是的CALayer的子类,所以也许它的设置可能borderRadius工作。但是,它会绕过所有的角落,因此您可以通过使图层比单元更大并使单元视图将其切断来弥补这一点。

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