2016-02-02 24 views
14

私はUILabelに自分のテキストを入れたいですが、別のiPhoneではUILabelのサイズが変わっています。私は自動レイアウトを使用していますが、フォントサイズを修正できないため、テキストが途切れてしまいます。自動レイアウトiOSでフォントサイズを動的に変更するにはどうすればよいですか?

テキストがUILabelに動的に収まるように制約を設定する方法はありますか。

See here the text got cut, because of different screen resolution

+0

フォントサイズを設定する必要が – iAnurag

+0

プログラム的 –

+0

コンテンツ抱い優先順位が251に設定され、それが他の制約に最低のそれぞれの –

答えて

32

あなたは自動圧縮を使用する必要があります。

ポートレートモードではすべてのiPhoneのサイズが同じCompact widthであるため、これを使用してラベルサイズを処理することはできません。


プレビューがiPhone5の、iPhone6とiPhone 6+インスペクタで

enter image description here

ためのもので、あなたは自動圧縮の前で最小のフォントスケールまたは最小フォントサイズを選択する必要があります。これにより、コンテンツがラベルに収まるようにフォントのサイズを変更することができます。

ここでは、最小フォントサイズを0,5に設定して、最小サイズが現在のサイズの半分になるようにします。(31.0)テキストは最小縮尺/サイズに達するまで収まるようにします。

(一般に、「Tighten letter spacing」はこの目的には使用しません。文字の間隔を同じにすると、文字の間隔が狭くなり、切り抜く前にラベルを2%から5%最小フォントスケール/サイズが有効になっている場合。)


あなたは、このようなプロiPadのようなワイドスクリーンデバイスで、また、そのようなiPhone 4Sとして小さな画面上でテストすることをお勧めします。

自動圧縮がラベルに1セットよりも大きなフォントサイズを調整しないだろう、それはあなたがラベルに画面と同じ幅を作るが、にフォントサイズを残せば、それはフォントを増加しようとする意味しますそのサイズに達するまでのサイズ。

実際に動作させるには、大きいのフォントサイズを選択してください。

引き続き、デバイスや向きに応じて最大フォントサイズを変更するために、サイズクラスと自動縮小を組み合わせることができます。あなたはUIButton秒で自動圧縮を使用したい場合には


、あなたはまだ2行のコードでこの動作を設定することができます。

myButton.titleLabel.minimumScaleFactor = 0.5; 
myButton.titleLabel.adjustsFontSizeToFitWidth = YES; 
+0

@Joe Blow巨大なフォントサイズを使用する必要はありません。ラベルに最大フォントサイズを設定するだけで、iPad Proで使用したいフォントサイズを設定できます。私が示したように、すべての画面サイズで常にテストして、_preview assistant editor_で簡単にプレビューを行うことができます。 – Crazyrems

+0

こんにちは@Crazyrems - かなり正しい;新しいマシンは常により多くの物理的なピクセルでリリースされていることを忘れないでください!素晴らしい答えにもう一度感謝します。あなたはこれが役に立つと思うかもしれません... http://stackoverflow.com/q/37266118/294884 ..またはそこに答えを知っている? – Fattie

+0

@Crazyremsテキストフィールドやテキストビューではどうすればいいですか? – ARS

4

こんにちはあなたはストーリーボードからUILabelを追加している場合は、すべての利用可能なレイアウトのために別のフォントを設定することができます。

enter image description here

+0

完璧なお返事ありがとう!!完璧?それはuilabelフォントとuibuttonフォントで動作しているからです!自動縮小が自動ボタンで動作しない –

+1

@WilliamsOuiOui自動縮小は 'UIButton'sで動作し、ボタンには' UILabel'が含まれています:)。 'UIButton'の' titleLabel'自動縮小プロパティを設定するだけです。私は自分の答えを更新しました。 – Crazyrems

4

あなたはサイズクラスを使用することによってこれを行うことができます。 各ディスプレイの寸法は、サイズクラスを使用すると、4つの抽象的なデバイスになります。標準幅 - 標準高さ、標準幅 - コンパクト高さ、コンパクト幅 - レギュラー高さおよびコンパクト幅 - コンパクト高さ。 次の表は、iOSデバイスとそれに対応するサイズクラスを示しています。 enter image description here

UILabelを選択するには、最初の、この特定のサイズクラスのフォントサイズを設定します。 Attributesインスペクタの下に、フォントフィールドの隣にプラス(+)ボタンが表示されます。 +ボタンをクリックして、[幅の縮小]> [通常の高さ]を選択します(または、必要に応じて幅を&高さに選択します)。フォントオプションの新しいエントリが表示されます。このオプションは、その特定のサイズクラス専用です。元のFontオプションのサイズはそのままにしておきますが、wC hR(OR選択したフォントのOR)フォントフィールドのサイズを必要なポイント(たとえば14)に変更してください。

enter image description here

+0

ありがとう、これは便利です、他の方法がありますか、ラベルサイズとフォントサイズの関係を作成し、制約を設定できますか? –

+0

UILableのadjustsFontSizeToFitWidthプロパティを使用できます https://developer.apple.com/library/ios/documentation/UIKit/Reference/UILabel_Class/index.html#//apple_ref/occ/instp/UILabel/adjustsFontSizeToFitWidth –