2017-04-13 13 views
1

私はこの質問が長いショットであることを知っていますが、誰かがより良い解決策を見つけたのか不思議です。 boundingRectを使用すると、単語の折り返しが機能しないため、正確ではありません。私がsizeToFitを使用したくない理由は、計算するラベルがたくさんあるので、スクロール中にジャーキネスを引き起こす(UICollectionViewを使用しています)ときにかなりのパフォーマンスペナルティが発生するからです。sizeToFitを使用せずにUILabelのサイズを計算する正確な方法はありますか?

答えて

0

sizeToFitを可能にする内部方法があります。sizeThatFits(_ size: CGSize) -> CGSizeです。実際にビューを再レイアウトすることなくサイズを計算するのに使用することができます。

それ以外は何もありません。異なるフォントや属性を持つ文字列の境界ボックスを計算すると言われているように、多くの方法がありますが、UIコントロールには公にアクセスできない内部レイアウトや余白があるため、これらはほとんどありません。あなたが今働くことができても、それはiOSからiOSに大きく変化します。

解決策として、サイズをキャッシュすることを提案します。モデルの変更、回転、またはコレクションビューの幅の変更を無効にします。

+0

迅速な対応に感謝します。私はすぐに結果をテストし、結果を更新します。 – dickyj

+0

sizeThatFitsは正しい結果を返しますが、全体的に私はまだ、私がAsyncDisplayKitが行われていると思われるジャーキネスの問題を解決できません。 – dickyj

+0

単に計測器の時間プロファイラを実行してjankinessを再現します – Alistra

関連する問題