1. ホーム
  2. ios

[解決済み] iOSです。オートレイアウトで複数行のUILabelを使用する

2022-04-14 11:56:51

質問

オートレイアウトで非常に基本的なレイアウト動作を実現しようとして、困っています。私のビューコントローラは、IBでは次のようになります。

一番上のラベルはタイトルラベルで、何行になるかはわかりません。タイトルラベルは全行表示させる必要があります。また、他の2つのラベルと小さな画像は、どんなに背が高くても、タイトルのすぐ下にレイアウトされる必要があります。ラベルと小さな画像の間に垂直方向のスペーシング制約を設定し、タイトルラベルとそのスーパービューの間に上部のスペーシング制約を、小さな画像とそのスーパービューの間に下部のスペーシング制約を設定しています。白いUIViewには高さの制約がないので、サブビューを含むように垂直に伸びるはずです。タイトルラベルの行数は0に設定しています。

タイトルラベルを、文字列が要求する行数に合わせてリサイズさせるには、どうすればよいでしょうか。私の理解では、オートレイアウトを使っているので、setFrameメソッドを使うことはできません。そして、タイトルラベルの下に他のビューを表示する必要があるため、Auto Layoutを使用する必要があります(そのため、制約があります)。

どうすれば実現できるのでしょうか?

どのように解決するのですか?

使用方法 -setPreferredMaxLayoutWidth の上に UILabel で、あとはautolayoutが処理してくれるはずです。

[label setPreferredMaxLayoutWidth:200.0];

をご覧ください。 preferredMaxLayoutWidthに関するUILabelのドキュメントです。 .

更新しました。

を設定するだけです。 height という制約をstoryboardの Greater than or equal to であれば、setPreferredMaxLayoutWidth は必要ありません。