2016-04-11 2 views
0

Align Center X to SuperviewAlign Center Y to Superviewに設定されたUILabelがあります。テキストの量に基づいて変更できるように、幅はありません。小さなアイコンは、テキストの左に座っている必要がありますAutolayout最大幅ですので、テキストは画面/ビューの外側に流れません

enter image description here enter image description here

enter image description here

問題があまりにも多くのテキストが追加されたとき、それが画面の外に流れ、次のとおりです。

のスペースを先頭と末尾いる親、ある UIViewがあるにもかかわらず

enter image description here

12、それはまだ親の眺めを尊重しない。 UILabelは、すべてのテキストに合わせてテキストサイズを小さくする必要がありますが、これは実行していません。

どうすればUILabelのように中央に配置することができますが、それでも画面の外側に流れないように最大幅にしますか?

+0

IBでは、最小フォントサイズを8に設定しています。 –

答えて

2

を設定それらの制約が何であるべきかを確立する。したがって、デフォルトでは、スーパービューの先頭と末尾のエッジは考慮されません。

UILabelの幅制約を、「より小さいか等しい」タイプの親ビューに追加することをお勧めします。定数は0、乗数は0.85または他の妥当な値です。これにより、ラベルの幅が非常に小さくなるか、またはゼロになりますが、親ビューの幅の85%を超えないようになります。

+0

私は手動で以下のか等しい制約を追加したことはありません。それをどのように追加しますか?ラベルから親へのCntrlドラッグはそのオプションを与えません。 –

+0

@Nic制約をCtrlキーを押しながらドラッグして追加したら、ストーリーボードでUILabelを選択し、右のインスペクタパネルをレイアウト用に開きます(これは小さなルーラーアイコン付きです)。そこにリストされている幅の制約が表示されます。その横にある[編集]ボタンをクリックし、ポップオーバーで左上のドロップダウンで "=" "<=" or "> =" –

+0

のいずれかを選択できます。ありがとうございました! –

0

行数、最小フォントサイズ、およびadjustsFontSizeToFitWidthを設定する必要があります。

myLabel.numberOfLines = 1; 
myLabel.minimumFontSize = 6; 
myLabel.adjustsFontSizeToFitWidth = YES; 

あまりにも多くのテキストがまだあるなら、あなたはテキストをクリップ、複数行を移動する必要があり、または省略記号を使用しますか。複数行の場合

は、テキストをクリップするmyLabel.numberOfLines = 0

を設定し、省略記号を切り捨てるにはmyLabel.clipsToBounds = YES

を設定し、UILabelは、特にあなたの場合を除き、親ビューによって制約されることはありませんmyLabel.lineBreakMode = NSLineBreakByTruncatingTail

+0

IBでは、最小フォントサイズを8に設定しました。これは 'adjustsFontSizeToFitWidth'と同じですか? –

+0

はい、それは同じことです。 –

+0

ええ、それは何も助けてくれないようです。テキストはまだ画面の外に出ます。 –

関連する問題