8

私はいくつかのコードを持っています:

CGRect currentFrame = textLabel.frame;
CGSize max = CGSizeMake(textLabel.frame.size.width, 3000);
CGSize expected = [[textLabel text] sizeWithFont:textLabel.font constrainedToSize:max lineBreakMode:textLabel.lineBreakMode];
currentFrame.size.height = expected.height;
textLabel.frame = currentFrame;

expected.height = expected.height + 70;

[scrollView setContentSize:expected];

複数行のテキスト情報を表示するためにUIScrollView内に配置されたtextLabel。

4インチの画面をサポートしていない古いバージョンのアプリケーションでは、すべてが完璧でした。しかし、残念ながら、UILabelのサイズ変更は機能しません。

たぶん、誰かが私にアドバイスすることができます、私は何を変えるべきですか?

ありがとう。

4

1 に答える 1

27

AutoLayoutを使用する場合は、frameプロパティを更新せず、代わりにビューの制約を変更してください。

一方、AutoLayoutを機能させることもできます。numberOfLinesラベルのプロパティが0に設定されており、高さの制約がタイプGreater Than or Equal(> =)であることを確認してください。このようにして、ラベルに新しいテキストを設定した後、レイアウトが自動的に更新されます。

于 2013-01-22T22:47:22.393 に答える