0

そこで、画面の幅 450 と高さの UIViewController を追加したかったので、縦向きの場合は高さが 1024 で、横向きの場合は高さが 768 です。 ProfileViewController と呼ばれるこのビュー コントローラーには、450 に設定された xib があり、 1024. 自動サイズ変更は柔軟な高さを持つように設定されています。

 profViewController = [[ProfileViewController alloc] initWithNibName:@"ProfileViewController" bundle:nil];
            self.profileViewController_ = profViewController;
            [profViewController release];

したがって、ProfileViewController 内では、FeedsViewController という別のビュー コントローラーも初期化しています。問題は、profViewController viewDidLoad では、向きに関係なく、高さが常に 1024 に設定されることです。私の向きに合わせて調整するにはどうすればよいですか?profViewController の境界を設定しようとしましたが、この変更は viewDidLoad の後に反映されます。

4

4 に答える 4

0

profViewControllerの次のメソッドをオーバーライドします

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
if(toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
    self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, 450, 1024);

}
else if(toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft){
    self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, 450, 768);
    }
}
于 2012-07-20T05:24:11.893 に答える
0

テーブルビュー フレームを変更する場合は、viewDidAppear:ではなく で行う必要がありviewDidLoad:ます。

于 2012-07-21T07:46:13.780 に答える
0

高さと幅を見つけるには、これを試してください

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
于 2012-07-20T04:35:09.083 に答える