我需要在我的UITableViewCell上添加斜角(顶部为白线,底部为暗线)。我已经添加了CAGradientLayer作为我的cell.layer的子视图。不幸的是我不能使用UIImageView作为我的单元格的背景,所以这需要在代码中完成。有什么建议?谢谢!
这是我现在为我的手机背景所拥有的代码。
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = cell.frame;
gradientLayer.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithRed:0.988 green:0.988 blue:0.988 alpha:1.0] CGColor],
(id)[[UIColor colorWithRed:0.9294 green:0.9294 blue:0.949 alpha:1.0] CGColor],
nil];
[cell.layer insertSublayer:gradientLayer atIndex:0];
这看起来很好,但我想在底部有一条1像素的暗线,在顶部有一条1像素的白线来完成外观。
答案 0 :(得分:6)
您可以并且可能应该使用UIImageView
作为单元格背景。你目前正在做的事实上是非常错误的。
一个UITableViewCell
包含了一个不公正的观点,重要的是要知道你应该在你的观点中挂钩。此层次结构如下:
UITableViewCell
- 永远不要碰这个
backgroundView
- 替换为所有行设置自定义背景。selectedBackgroundView
- 替换为选定/突出显示的行设置自定义背景。contentView
- 请勿设置此项,但请随意添加任意数量的子视图。
titleLabel
detailTitleLabel
imageView
accessoryView
从一开始就不明显如何替换backgroundView
和selectedBackgroundView
。从UITableView
数据源方法返回单元格后,-[tableView:cellForRowWithIndexPath:]
本身将自动设置这些。意味着你设置的任何内容都将被覆盖。
诀窍是实现-[tableView:willDisplayCell:forRowAtIndexPath:]
委托方法,并在此处设置自定义背景。
所有这些都在Table View Programming Guide中得到了很好的解释。
答案 1 :(得分:1)
看看this link。你可以忽略光泽效果,但我认为这就是你想要的。