将视图大小调整为 UI导航控制器后,将其调整为正确的高度



所以我用了一个以编程方式创建的UIview控制器(带有默认视图),就像

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

在它里面有这样的东西在视图中DidLoad

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

问题是,pushedViewController 的视图高度仍然是 460px,但可见只有 416px(因为现有的导航控制器。

有没有办法让推送的视图控制器的UIview以正确的方式调整大小,而无需将帧显式设置为416(由于旋转等)?

你可能想在-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;
}

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

尝试通过以下方式在视图结束时注销视图控制器的框架DidLoad

NSLog(@"%@",NSStringFromCGRect(self.view.frame));

看看这能告诉你什么。

最新更新