分组 UITableViewCell 中的自定义背景绘制
当样式设置为“分组”并且单元格是该部分的第一个或最后一个时,我在 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;
不幸的是,这会生成如下所示的单元格:
有谁知道如何使背景适合单元格的边框吗?
谢谢
–f
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您绘制自定义背景,则还必须自己绘制边框。那里有很多开源的东西。
基本上,您需要知道[在单元格中]它是顶部/中间/底部/单个,然后将其剪切到drawRect中。使用 insertSublayer 你不会走得太远。
查看此处找到的 PageCellBackground 类:
http://cocoawithlove.com/2010/12/uitableview-construction-drawing -and.html
If you draw a custom background, you also have to draw the borders yourself. There's quite some open source stuff out there.
Basically, you need to know [in the cell] if it's top/middle/bottom/single, and cut the stuff in drawRect. You won't come far with insertSublayer.
Check out the PageCellBackground class you find here:
http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html
我还没有尝试过,但 CAGradientLayer 恰好是 CALayer 的子类,所以也许设置它的 borderRadius 可能会起作用。但它会绕过所有角落,因此您可以通过使图层比单元更大并让单元视图将其切掉来补偿这一点。
看看 使用 CALayers 的圆角 UIView - 只有一些角 - 如何? 更多示例
I've not tried it but CAGradientLayer happens to be a subclass of CALayer, so perhaps setting its borderRadius may work. But it rounds all corners then, so you may compensate for that by making the layer bigger than the cell and have the cell view cut it off.
Look at Rounded UIView using CALayers - only some corners - How? for more examples