自定义UITableViewSectionHeader - 图像与绘图

时间:2012-01-23 13:04:32

标签: ios cocoa-touch uitableview custom-controls

我必须创建自己的UITableView剖面标题视图,顶部有一个边框,底部有一个背景颜色。

我的问题是,实现这一目标的最佳(或最正确)方法是什么?

  • 使用图片?
  • 使用Quartz 2D绘制边框和背景颜色?
  • 是否存在性能差异?

谢谢! (对不起我的英文)

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用CALayers。为视图提供所需的背景颜色,并添加两个图层作为边框。假设您想要单像素边框,则示例(黑色边框,白色背景)将为:

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 24)];
headerView.backgroundCoor = [UIColor whiteColor];

CALayer *topLine = [CALayer layer];
topLine.frame = CGRectMake(0, 0, 320, 1);
topLine.backgroundColor = [UIColor blackColor].CGColor;
[headerView.layer addSublayer:topLine];

// repeat for bottom line

另一种方法是在视图图层上使用borderColor / borderWidth属性,但是您需要执行一些技巧(遮盖或调整视图太宽)以隐藏边框。

图层非常强大,您可以轻松添加渐变,形状和蒙版,而无需弄乱CG绘图。

答案 1 :(得分:0)

如果你需要的只是边框和背景颜色,那么绘制它们肯定是要走的路。如果您将它们与图像进行绘制,性能会更好。尽管UIImages在iPhone中得到了高度优化,但自定义绘图仍可提供更好的性能。