0

動的にサイズ変更されたラベルとテーブル ビューの行の高さがあります。何かがうまくいかないようです。ラベルの幅を に記録しますcellForRowAtIndexPath:

Loading in Portrait --> 595
Rotate to Landscape --> 851
Rotate to Portrait  --> 595

問題ないようです。しかし

Loading in Landscape --> 595
Rotate to Portrait   --> 595
Rotate to Landscape  --> 851

実際、ビューを横向きモードでロードすると、ビューのラベルとセルが正しくレンダリングされません。

何か案は?

編集:

回転するときはreloadData、 のテーブル ビューを呼び出すだけdidRotateFromInterfaceOrientation:です。それは魅力のように機能します。

ラベルの幅を変更するのではなく、高さだけを変更します(もちろん、幅は高さを計算するために重要ですが、私は幅を変更していません。)

ログ ステートメントは の最後にありcellForRowAtIndexPath、これは常にの heightForRowAtIndexPathに呼び出されるため、それ以降は変更されません。

編集2

問題のラベルは動的に作成されます。向きごとに異なるフレームを使用するように切り替えました。

// in cellForRowAtIndexPath
BOLL landscape = UIInterfaceOrientationIsLandscape(
   [[UIApplication sharedApplication] statusBarOrientation]);
//...
textFieldFrame = CGRectMake(x, y, landscape ? 851 : 595, h); 

ラベルはこのフレームで初期化されます。

4

2 に答える 2

0

ランドスケープでロードしたときに何が起こるかを確認していないようです。より多くのコードが修正を提供します:-)

于 2012-08-17T15:26:47.143 に答える
0

解決策:フレームを再度設定します

-(void)willDisplayCellAtIndexPath:
于 2012-08-17T16:17:32.283 に答える