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

时间:2011-09-15 15:57:17

标签: cocoa-touch uitableview quartz-graphics cagradientlayer

当样式设置为“已分组”并且单元格是该节的第一个或最后一个时,我在UITableViewCell中绘制自定义渐变背景时遇到了一些问题。我的方法是简单地创建一个CAGradientLayer并将其添加到视图中,如下所示:

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 个答案:

答案 0 :(得分:2)

如果您绘制自定义背景,您还必须自己绘制边框。那里有很多开源的东西。

基本上,您需要[在单元格中]知道它是顶部/中部/底部/单个,并切断drawRect中的内容。你不会使用insertSublayer。

查看您在此处找到的PageCellBackground课程: http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

答案 1 :(得分:1)

我没有尝试过,但CAGradientLayer碰巧是CALayer的子类,所以设置borderRadius也许可行。但它会围绕所有角落,所以你可以通过使图层比单元格更大并让单元格视图将其剪掉来补偿它。

查看Rounded UIView using CALayers - only some corners - How?了解更多示例