テキストをUILabel
に収めたいのですが、自動レイアウトを使用しているため、iPhoneによってはUILabel
のサイズが変化しますが、フォントサイズを修正できないため、テキストが切り取られています。
テキストがUILabel
に動的に収まるように制約を設定する方法はありますか?
autoshrinkを使用する必要があります。
すべてのiPhoneは同じCompact width
サイズクラスをポートレートモードで使用する場合、これに依存してラベルサイズを処理することはできません。
プレビューは、iPhone5、iPhone6、iPhone 6+用です
インスペクタで、自動縮小の前に最小フォントスケールまたは最小フォントサイズを選択する必要があります。これにより、コンテンツはフォントのサイズをラベルに合わせて変更できます。
ここでは、最小フォントスケールを0.5に設定しているため、最小サイズは現在のサイズの半分(31.0)です。テキストは、最小のスケール/サイズに達するまで収まります。
(通常、この目的で「文字間隔を狭くする」を使用しないでください。文字間隔を狭くすると、同じフォントサイズが使用され、文字間の間隔が狭くなります。サイズが有効になっています。)
iPad Proなどのワイドスクリーンデバイス、およびiPhone 4S。さまざまなユーザーシステムフォントサイズでテストすることをお勧めします。Settings
> General
> Accessibility
> Larger Text
。
自動縮小では、ラベルに設定されているフォントサイズよりも大きいフォントサイズは調整されません。つまり、ラベルを画面と同じ幅にし、フォントサイズを14のままにすると、そのサイズに達するまでフォントサイズを増加しようとします。
実際に機能させるには、bigフォントサイズを選択します。
自動シュリンクをサイズクラスと組み合わせて、デバイス/向きに応じて最大フォントサイズを変更できます。
UIButton
sでautoshrinkを使用する場合、2行のコードでこの動作を設定できます。
myButton.titleLabel.minimumScaleFactor = 0.5;
myButton.titleLabel.adjustsFontSizeToFitWidth = YES;
サイズクラスを使用してこれを行うことができます。サイズクラスを使用する各ディスプレイディメンションの場合、これにより、通常の幅-通常の高さ、通常の幅-コンパクトの高さ、コンパクトな幅-通常の高さ、コンパクトな幅-コンパクトな高さの4つの抽象デバイスが得られます。次の表は、iOSデバイスとそれに対応するサイズクラスを示しています。 
この特定のサイズクラスのフォントサイズを設定するには、最初にUILabel
を選択します。 [属性]インスペクターの下で、フォントフィールドの横にプラス(+)ボタンが表示されます。 [+]ボタンをクリックし、[コンパクト幅]> [通常の高さ]を選択します(または要件に応じて幅と高さを選択します)。すると、特定のサイズクラス専用の[フォント]オプションの新しいエントリが表示されます。元の[フォント]オプションのサイズはそのままにしますが、wC hR(または選択に応じて)フォントフィールドのサイズを必要なポイント(たとえば14)に変更します。