UITableViewCell
sに。が含まれているデザインがありUIImageView
ます。この画像は、縦向きでも横向きでも同じ比率である必要があります。そのため、UIDeviceOrientationDidChangeNotification
通知を使用してインターフェイスの向きが変更されたときに呼び出されるメソッドがあります。
-(void)updateRowHeightForOrientation:(UIInterfaceOrientation)orientation {
if(!IS_KNOWN_ORIENTATION(orientation))
return;
CGFloat rowHeightPortrait = (IPAD ? 320. : 160.);
CGFloat widthPortrait = (IPAD ? 768. : 320.);
CGFloat orientationWidth = (IS_PORTRAIT(orientation) ?
(IPAD ? 768. : 320.) :
(IPAD ? 1024. : 480.));
CGFloat resultingRowHeight = rowHeightPortrait * orientationWidth / widthPortrait;
[self.tableView setRowHeight:resultingRowHeight];
// [self.tableView reloadData]; /* works if uncommented */
}
行がコメント化されていない場合、ビューが再描画され、行の高さが適切に設定されます。そうでない場合は、を使用する場合でも[self.tableView setNeedsDisplay]
、[self.tableView setNeedsLayout]
プロパティの新しい値は使用されません。
新しい値が適用されるようにUIを強制的にリロードするにはどうすればよいですか?
インターフェイスが回転して再描画される前にプロパティが設定されて-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
いるため、しばらくの間は機能していましたが、奇妙な理由で、このメソッドはもう呼び出されていません...rowHeight
ご協力いただきありがとうございます !