Я написал пользовательский SplitViewController
, который имеет мастер (пользовательский UITableView
) и контроллер подробного представления, и он отлично работает в ландшафтном режиме iPad.
Я хочу изменить размер и расположить главный и подробный вид соответственно, когда ориентация изменится на портретный режим, чтобы все не выглядело неуместно.
Кто-нибудь знает, как я могу это сделать?
ОБНОВИТЬ :
Я написал прослушиватель в своем собственном SplitViewController, чтобы следить за изменением ориентации, и подключил его к селектору (resetViews :), который выглядит примерно так:
-(void)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]) для каждого изменения ориентации?