【发布时间】:2012-10-15 19:00:23
【问题描述】:
我有一个设计,其中UITableViewCells 包含一个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 属性是在界面旋转并重绘之前设置的,但由于一些奇怪的原因,不再调用此方法...
感谢您的帮助!
【问题讨论】:
标签: objective-c uitableview setneedsdisplay row-height