UITableViewcornerRadius 在 iOS 上存在边框性能问题

Posted

技术标签:

【中文标题】UITableViewcornerRadius 在 iOS 上存在边框性能问题【英文标题】:UITableView cornerRadius with border performance issues on iOS 【发布时间】:2012-06-27 11:15:09 【问题描述】:

在启用cornerRadiusborderWidthborderColor 的情况下,我注意到UITableView 的滚动性能很有趣。

self.tableView.layer.cornerRadius = 10.f;
self.tableView.layer.borderWidth = 1.0f;
self.tableView.layer.borderColor = [UIColor whiteColor].CGColor;

如果我删除borderWidthborderColor,那么滚动就可以达到 60 FPS。只要我将这两个属性添加到图层 FPS 滴。

有没有人建议或解释为什么会发生这种奇怪的行为?

非常感谢!

【问题讨论】:

因为它需要更多的绘图操作。 我想是的。通过设置borderWidthborderColor 它添加了额外的操作来绘制边框。 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游记

秋的潇洒在啥?在啥在啥?

上传的数据在云端的怎么查看,保存在啥位置?

在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?

存储在 plist 中的数据在模拟器中有效,但在设备中无效

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据