0

指定UILabelされた幅と文字列。ラベルにぴったり収まる pointSize を取得する最良の方法は何ですか?

例: ラベルの幅が 300 px で、文字列は@"Hello, my name is byte". pointSizeその 300 ピクセルで切り捨てずに最大のフォントを調べたいと思います。

私が探求しているいくつかの方法:

1.) ダミーUILabelを作成し、 に設定adjustsFontSizeToFitWidthYESます。次に、そこから pointSize を取得します。これは恐ろしく非効率に思えます。

2.) 返されるサイズが 1 行に相当するまで、別の値で fontSize テストをループします。それでもやり過ぎのようです。

これにアプローチするより良い方法はありますか?

4

1 に答える 1

0

sizeToFit を呼び出してみましたか?

UIlabel *ラベル = .....

[ラベル sizeToFit];

それが役立つことを願っています!

ドキュメントから

sizeToFit レシーバー ビューのサイズを変更して移動し、サブビューを囲むようにします。

  • (void)sizeToFit 説明 現在のビューのサイズを変更して、最も適切なスペースを使用する場合は、このメソッドを呼び出します。特定の UIKit ビューは、独自の内部ニーズに応じてサイズを変更します。場合によっては、ビューにスーパービューがない場合、画面の境界に合わせてサイズが変更されることがあります。したがって、特定のビューのサイズを親ビューに合わせたい場合は、このメソッドを呼び出す前に親ビューに追加する必要があります。

このメソッドをオーバーライドしないでください。ビューのデフォルトのサイズ情報を変更する場合は、代わりに sizeThatFits: をオーバーライドします。そのメソッドは必要な計算を実行し、それらをこのメソッドに返します。その後、変更が行われます。

于 2013-08-22T21:25:48.617 に答える