Auto Layout で非常に基本的なレイアウト動作を実現しようとして、問題が発生しています。IB でのビュー コントローラーは次のようになります。
一番上のラベルはタイトル ラベルです。何行になるかはわかりません。タイトル ラベルにはすべてのテキスト行を表示する必要があります。また、他の 2 つのラベルと小さな画像は、タイトルの高さに関係なく、タイトルの真下にレイアウトする必要があります。ラベルと小さな画像の間に垂直方向の間隔制約を設定し、タイトル ラベルとそのスーパービューの間に上部の間隔制約を設定し、小さな画像とそのスーパービューの間に下部の間隔制約を設定しました。白い UIView には高さ制約がないため、サブビューを収容するために垂直方向に伸びる必要があります。タイトル ラベルの行数は 0 に設定しました。
文字列に必要な行数に合わせてタイトル ラベルのサイズを変更するにはどうすればよいですか? 私の理解では、Auto Layout を使用しているため、setFrame メソッドを使用できません。また、他のビューをタイトル ラベルの下に配置する必要があるため (制約があるため)、Auto Layout を使用する必要があります。
どうすればこれを実現できるでしょうか?
ベストアンサー1
-setPreferredMaxLayoutWidth
を使用するUILabel
と、残りは自動レイアウトで処理されます。
[label setPreferredMaxLayoutWidth:200.0];
を参照してくださいUILabel の preferredMaxLayoutWidth に関するドキュメント。
アップデート:
height
ストーリーボードの制約を に設定するだけでGreater than or equal to
、PreferredMaxLayoutWidth を設定する必要はありません。