0

スクロール ビュー内にある profileDescription という UITextView があります。このビューの高さを調整して、必要なだけのスペースを占めるように拡張したいと思います。Autolayout をオンにしてストーリーボードを使用しています。オフにしてみましたが、他のことが悪化したので、今のところオンのままにしています。

次のコードを使用しようとしていますが、効果がありません。

self.profileDescription.text = @"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";

[self.profileDescription setScrollEnabled:NO];

CGRect frame = self.profileDescription.frame;
frame.size.height = self.profileDescription.contentSize.height;
self.profileDescription.frame = frame;
4

3 に答える 3

3

Autolayout機能がオンになっている場合、簡単な修正があります。

これは、ビューコントローラーviewDidLayoutSubviewsのビューのlayoutSubviewsメソッドが呼び出された後に呼び出されます。

コード例:

- (void)viewDidLayoutSubviews
{
     self.yourTextField.frame = CGRectMake(361, 226, 400, 100);
}
于 2013-03-13T21:23:11.567 に答える
0

テキストを設定する前に UITextView のフレームを明示的に設定してみて、違いがあるかどうかを確認してください。UITextView は、contentSize.height がどうあるべきかを適切に判断できるように、テキスト ビューの幅を知る必要があります。

于 2013-03-13T19:48:49.767 に答える
0

私が理解していることから、UITextView をテキストのサイズに拡大して、垂直方向のサイズがテキストと同じ高さになるようにする必要があります。

テキストの高さを計算し、それに応じて垂直サイズを設定する必要があります (注: UITextView の代わりに UILabel を使用するプロジェクトからこれを適用しましたが、このバージョンはテストしていません):

CGSize maxLabelSize = CGSizeMake(somewidth, 9999);
CGSize expectedSize = [yourText sizeWithFont:textView.font constrainedToSize:maxLabelSize lineBreakMode:NSLineBreakByWordWrapping];
CGRect newFrame = textView.frame;
newFrame.size.height = expectedSize.height;
textView.frame = newFrame;
于 2013-03-13T20:02:17.880 に答える