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

UITableViewCell calling .layer.maskToBounds = YES in subview performance issue

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

awakeFromNib 方法调用此代码
- (void)awakeFromNib {

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

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

我做了很多年的应用程序,这是我第一次看到这个问题。有人知道这里发生了什么以及如何解决这个问题吗?

首先尝试设置这个,

self.layer.masksToBounds = YES;

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

UILabel layer cornerRadius negatively impacting performance

CornerRadius 有时会影响 uitableview 的性能。