UITableViewCell 在子视图性能问题中调用 .layer.maskToBounds = YES [重复]

Posted

技术标签:

【中文标题】UITableViewCell 在子视图性能问题中调用 .layer.maskToBounds = YES [重复]【英文标题】:UITableViewCell calling .layer.maskToBounds = YES in subview performance issue [duplicate] 【发布时间】:2015-10-09 09:50:50 【问题描述】:

我有一个自定义的UITableViewCell,其中包含一个我想要圆角的UILabel。就像我在设置圆角半径并使用maskToBounds 以编程方式执行此操作之前做过很多次一样。单元格本身是在 Storyboard 中创建的。我从UITableViewCellawakeFromNib 方法调用此代码。

- (void)awakeFromNib 

// Initialization code
_distanceLabel.layer.cornerRadius = 2.0;
_distanceLabel.layer.masksToBounds = YES; 

这可行,但是当 tableViewController 被推送到导航堆栈时,我现在可以看到一个明显的性能问题。在我的设备(iPhone 6)上运行时,tableViewController 的动画现在在从右侧滑入时会卡住。当我注释掉 _distanceLabel.layer.masksToBounds = YES; 行时,推送动画效果很好,并且像往常一样流畅地滑入。

我多年来一直在制作应用程序,这是我第一次看到这个问题。有谁知道这里发生了什么以及如何解决这个问题?

【问题讨论】:

【参考方案1】:

首先尝试设置这个,

self.layer.masksToBounds = YES;

或者如果此解决方案不起作用,请尝试以下链接,其中fknrdcls 以适当的方式给出了非常好的答案,以保护角半径对 uitableview 的负面影响。 基本上 uitableview 是 uiscrollview 的子类,所以下面的解决方案可能会解决您的问题。

UILabel layer cornerRadius negatively impacting performance

CornerRadius 有时会影响 uitableview 的性能。

【讨论】:

以上是关于UITableViewCell 在子视图性能问题中调用 .layer.maskToBounds = YES [重复]的主要内容,如果未能解决你的问题,请参考以下文章

UITableviewcell的性能问题

iOS开发UI篇—UITableviewcell的性能问题

iOS开发UI篇—UITableviewcell的性能优化和缓存机制

自定义 UITableViewCell 中的 UITableView

UIBarButtonItem 未显示在子视图中

在子视图中添加/删除视图时为视图设置动画