UITableViewcornerRadius 在 iOS 上存在边框性能问题
Posted
技术标签:
【中文标题】UITableViewcornerRadius 在 iOS 上存在边框性能问题【英文标题】:UITableView cornerRadius with border performance issues on iOS 【发布时间】:2012-06-27 11:15:09 【问题描述】:在启用cornerRadius
、borderWidth
和borderColor
的情况下,我注意到UITableView
的滚动性能很有趣。
self.tableView.layer.cornerRadius = 10.f;
self.tableView.layer.borderWidth = 1.0f;
self.tableView.layer.borderColor = [UIColor whiteColor].CGColor;
如果我删除borderWidth
和borderColor
,那么滚动就可以达到 60 FPS。只要我将这两个属性添加到图层 FPS 滴。
有没有人建议或解释为什么会发生这种奇怪的行为?
非常感谢!
【问题讨论】:
因为它需要更多的绘图操作。 我想是的。通过设置borderWidth
和borderColor
它添加了额外的操作来绘制边框。 cornerRadius
也一样。
为什么会出现问题,因为边框不滚动,只有单元格...?
你也有阴影吗?
嗯,我注意到使用阴影(没有 shadowPath)时性能会大幅下降,但从来没有使用过这个。你是用哪种方法设置的?
【参考方案1】:
CALayer 具有针对此类性能问题的 shouldRasterize 属性。 设置好了
self.tableView.layer.shouldRasterize = YES;
这一行节省了我很多时间和工作。
【讨论】:
【参考方案2】:我刚刚发现带有borderWidth 的cornerRadius 的tableView 性能下降了很多。所以我改为 5.f 而不是 10.f 半径,性能有了惊人的提高。仍然不完美,但明显更好......
【讨论】:
以上是关于UITableViewcornerRadius 在 iOS 上存在边框性能问题的主要内容,如果未能解决你的问题,请参考以下文章
NOIP 2015 & SDOI 2016 Round1 & CTSC 2016 & SDOI2016 Round2游记