我有复杂的UICollectionViewCell
,上面有大约10个标签。所以我需要在显示之前用数据填充它们,所以我在collectionView:cellForItemAtIndexPath:
方法中完成它。标签不是固定宽度,并且有一些非必需(优先级小于1000)约束,因此某些标签可以缩小。
每个setText
调用会导致invalidateIntrinsicContentSize
,我认为可以将其标记为无效以使布局在下一个布局过程中发生,但我很惊讶它会对约束进行一些额外的工作,所以滚动真的很棒慢。
为什么要做这项额外的工作?在设置所有标签文本或下一个布局通过后,有没有办法在我的命令中只执行一个?
在iOS 6上滚动非常慢,iOS 8+工作正常。
答案 0 :(得分:0)
我仍然没有回答“为什么”它的行为与提到的相似,但我找到了解决方法:我继承UILabel
并在我知道我不需要内在大小时使用它。这节省了50%的时间用于重新计算布局。
@interface NoIntrinsicSizeLabel : UILabel
@end
@implementation NoIntrinsicSizeLabel
- (void)invalidateIntrinsicContentSize {
return;
}
@end