我编写了一个自定义SplitViewController
,它有一个主(自定义UITableView
)和一个详细视图控制器,这在 iPad 的横向模式下完美运行。
当方向更改为纵向模式时,我想相应地调整主视图和详细视图的大小和位置,以免看起来不合适。
有人对我如何完成这项工作有任何想法吗?
更新 :
我在我的自定义 SplitViewController 中编写了一个侦听器来寻找方向变化并将其连接到一个看起来像这样的选择器(resetViews :)
-(无效)重置视图{
if(currentOrientation == UIDeviceOrientationPortrait || currentOrientation == UIDeviceOrientationPortraitUpsideDown){
self.view.frame = CGRectMake(0, 0, 768, 1024);
masterView.frame = CGRectMake(MASTER_VIEW_PORTRAIT_X,MASTER_VIEW_PORTRAIT_Y,MASTER_VIEW_WIDTH_PORTRAIT,MASTER_VIEW_HEIGHT_PORTAIT);
detailView.frame = CGRectMake(DETAIL_VIEW_PORTRAIT_X, DETAIL_VIEW_PORTRAIT_Y, DETAIL_VIEW_WIDTH_PORTRAIT, DETAIL_VIEW_HEIGHT_PORTAIT);
}
if(currentOrientation == UIDeviceOrientationLandscapeRight || currentOrientation == UIDeviceOrientationLandscapeLeft){
NSLog(@"IN Landscape");
self.view.frame = CGRectMake(0, 0, 1024, 768);
masterView.frame = CGRectMake(MASTER_VIEW_LANDSCAPE_X,MASTER_VIEW_LANDSCAPE_Y,MASTER_VIEW_WIDTH_LANDSCAPE,MASTER_VIEW_HEIGHT_LANDSCAPE);
detailView.frame = CGRectMake(DETAIL_VIEW_LANDSCAPE_X,DETAIL_VIEW_LANDSCAPE_Y, DETAIL_VIEW_WIDTH_LANDSCAPE, DETAIL_VIEW_HEIGHT_LANDSCAPE);
}
}
这在设置 viewControllers 的框架时工作正常。
但是 MasterViewController (UITableViewController) 必须在方向改变时动态改变其行的高度 (tableView.rowHeight)。我如何做到这一点而无需为每次方向更改重新加载整个 tableView ([tableView reloadData])?