1
我知道这个问题是一个很长的镜头,但我只是想知道如果有人找到了更好的解决方案。使用boundingRect并不准确,因为它不适用于换行。我不希望使用sizeToFit的原因是,当需要计算大量标签时,会导致相当大的性能损失,从而导致在滚动过程中出现乱码(我正在使用UICollectionView)。有没有准确的方法来计算UILabel的大小,而不使用sizeToFit?
我知道这个问题是一个很长的镜头,但我只是想知道如果有人找到了更好的解决方案。使用boundingRect并不准确,因为它不适用于换行。我不希望使用sizeToFit的原因是,当需要计算大量标签时,会导致相当大的性能损失,从而导致在滚动过程中出现乱码(我正在使用UICollectionView)。有没有准确的方法来计算UILabel的大小,而不使用sizeToFit?
有内部方法,使sizeToFit
成为可能 - sizeThatFits(_ size: CGSize) -> CGSize
。您可以使用它来计算大小,而无需实际转发视图。
除了没有更多。有很多方法,正如你所提到的那样,计算不同字体/属性/任何字符串的边界框,但它们总是有点偏离,因为UI控件的内部布局或边界不能公开访问。即使你现在开始工作,它也会从iOS变到iOS。
作为一种解决方案,我建议缓存大小。模型更改,旋转或集合视图宽度更改无效。
感谢您的快速响应。我将尽快测试性能并更新结果。 – dickyj
sizeThatFits确实会返回正确的结果,但总体而言,我仍然无法解决我认为是AsyncDisplayKit的急躁问题。 – dickyj
只是运行仪器时间分析器并重现抖动 – Alistra