4

現時点では、[aString sizeWithFont:constrainedToSize:lineBreakMode:] を使用してラベルのサイズを正しく設定していますが、デバイスに回転を導入し、柔軟な幅と高さを使用すると、UILabel が幅方向に引き伸ばされます (設定がメインビュー)が、余分なスペースを補うために高さ方向に収縮することはありません.

私が尋ねた別の質問では、使用するように言われましたが、インターネット上でこれを適切に使用する方法を教えてくれる有用なリソースが見つかりませんsizeToFitsizeThatFits:

一言で言えば、私はこのような構造を持っているとしましょう:

UIView *innerView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, self.view.frame.size.width-20, 0)];
[innerView setAutoresizingMask:*flexible width and height*]
[innerView setBackgroundColor:[UIColor redColor]];
[self.view addSubview:innerView];

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, innerView.frame.size.width-20, 0)];
[myLabel setAutoresizingMask:*flexible width and height*]
[myLabel setBackgroundColor:[UIColor blueColor]];
[myLabel setNumberOfLines:0];
[myLabel setLineBreakMode:UILineBreakModeWordWrap];
[innerView addSubview:myLabel];

これは単純化されたバージョンです (また、免責事項として、これは私の実際のコードではありません。これらの要素がリークし、他のすべてのものがあることを認識しています...これは単なる例であるため、構造を確認できます)。

基本的に私はその2つの要素を持っています。回転すると、両方とも新しいビュー サイズに合わせて伸縮します。私が必要としているのは、コンテンツに動的に合わせて高さを増減する方法です。[aString sizeWithFont...]静的のみです。では、これを動的に使用sizeToFitまたは作成するにはどうすればよいでしょうか。sizeThatFits

ありがとうございました。

トム

4

1 に答える 1

2

画面を回転させた後、ラベルのフレームをリセットしてみましたか?次のinterfaceOrientationの値を確認してください。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

次に、 didRotateFromInterfaceOrientation内の各ビューモードに応じてラベルのフレームを設定します。

文字列の長さに合わせてラベルフレームのサイズを変更する例を次に示します。http://cocoamatic.blogspot.com/2010/08/uilabel-dynamic-sizing-based-on-string.html

于 2011-01-21T19:16:20.603 に答える