UIViewController中的帧大小问题

时间:2012-07-20 04:25:36

标签: iphone objective-c ios ipad

所以我想添加一个宽度为450和屏幕高度的UIViewController,所以如果是肖像,那么高度为1024,如果是横向,则高度为768.这个名为ProfileViewController的视图控制器有一个设置的xib在450和1024.自动调整大小设置为具有灵活的高度。

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

所以在ProfileViewController中我也在初始化另一个名为FeedsViewController的视图控制器。现在的问题是,在profViewController viewDidLoad中,无论方向是什么,高度始终设置为1024。我该怎么做才能调整到我的方向?我已经尝试设置profViewController的边界,但是这个更改会在viewDidLoad之后反映出来。

4 个答案:

答案 0 :(得分:0)

要查找高度和宽度,请尝试使用

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

答案 1 :(得分: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);
    }
}

答案 2 :(得分:0)

如果您设置FeedsViewController视图的框架的方式与在NIB中设置ProfileViewController视图框架的方式相同,那么事情应该会自动正确调整大小。也就是说,你给它一个初始大小就是你想要的相对于外部视图的大小,然后让系统的自动调整大小行为从那里开始。

ProfileViewController的{​​{1}}:

中尝试类似的内容
viewDidLoad

答案 3 :(得分:0)

如果您想更改工作台视图框架,则应该在viewDidAppear:而不是viewDidLoad:中进行更改。