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])をリロードする必要なく、これを行うにはどうすればよいですか?