2017-04-13 64 views
1

我知道这个问题是一个很长的镜头,但我只是想知道如果有人找到了更好的解决方案。使用boundingRect并不准确,因为它不适用于换行。我不希望使用sizeToFit的原因是,当需要计算大量标签时,会导致相当大的性能损失,从而导致在滚动过程中出现乱码(我正在使用UICollectionView)。有没有准确的方法来计算UILabel的大小,而不使用sizeToFit?

回答

0

有内部方法,使sizeToFit成为可能 - sizeThatFits(_ size: CGSize) -> CGSize。您可以使用它来计算大小,而无需实际转发视图。

除了没有更多。有很多方法,正如你所提到的那样,计算不同字体/属性/任何字符串的边界框,但它们总是有点偏离,因为UI控件的内部布局或边界不能公开访问。即使你现在开始工作,它也会从iOS变到iOS。

作为一种解决方案,我建议缓存大小。模型更改,旋转或集合视图宽度更改无效。

+0

感谢您的快速响应。我将尽快测试性能并更新结果。 – dickyj

+0

sizeThatFits确实会返回正确的结果,但总体而言,我仍然无法解决我认为是AsyncDisplayKit的急躁问题。 – dickyj

+0

只是运行仪器时间分析器并重现抖动 – Alistra

相关问题