将视图添加到uinavigationcontroller后,将视图调整到正确的高度

时间:2012-06-06 18:49:00

标签: iphone ios uiviewcontroller uinavigationcontroller resize

所以我去了一个uiviewcontroller(默认视图),我以编程方式创建了

TestViewController *aVC = [[MJImageCropViewController alloc] init];
[[self navigationController] pushViewController:aVC animated:YES];

里面有这样的东西在viewDidLoad

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

问题是,pushViewController视图的高度仍然是460px,但可见的只有416px(因为现有的navigationController。

有没有办法让推出的viewcontroller的uiview以正确的方式调整大小而不将帧显式设置为416(因为旋转等等)?

2 个答案:

答案 0 :(得分:2)

您可能想在-viewDidLoad:

中尝试这样的事情
- (void)viewDidLoad {
    [super viewDidLoad];

    // Resize view to account for nav bar
    CGFloat navBarHeight = self.navigationController.navigationBar.bounds.size.height;
    CGRect frame = self.view.frame;
    frame.size.height = frame.size.height - navBarHeight;
    self.view.frame = frame;
}

答案 1 :(得分:0)

我的猜测是视图正在正确调整大小,但是子视图的自动调整掩码没有正确设置。另外,将您发布的自动调整代码放在loadView中(如果以编程方式创建视图)或在XIB文件中放置更有意义。

尝试通过

注销viewDidLoad末尾的视图控制器框架
NSLog(@"%@",NSStringFromCGRect(self.view.frame));

看看它告诉你的是什么。