1

我知道这个问题是一个很长的问题,但我只是想知道是否有人找到了更好的解决方案。使用 boundingRect 并不准确,因为它不适用于自动换行。我不想使用 sizeToFit 的原因是,当有很多标签要计算时,它会导致相当大的性能损失,从而导致滚动过程中出现抖动(我正在使用 UICollectionView)。

4

1 回答 1

0

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

除了没有别的了。正如您所提到的,有很多方法可以计算具有不同字体/属性/其他内容的字符串的边界框,但它们总是有点偏离,因为 UI 控件具有不可公开访问的内部布局或边距。即使你现在让它工作,它也会从 iOS 到 iOS 发生很大的变化。

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

于 2017-04-13T11:56:46.720 回答