動的にサイズ変更されたラベルとテーブル ビューの行の高さがあります。何かがうまくいかないようです。ラベルの幅を に記録します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);
ラベルはこのフレームで初期化されます。