2

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

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

在里面有这样的东西在 viewDidLoad

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

问题是,pushViewController 的视图高度保持 460 像素,但可见只有 416 像素(因为现有的 navigationController.

有没有办法让推送的视图控制器的 uiview 以正确的方式调整大小而不将框架显式设置为 416(因为旋转等)?

4

2 回答 2

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;
}
于 2012-06-06T18:56:25.717 回答
0

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

尝试通过在 viewDidLoad 结束时注销视图控制器的框架

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

看看那告诉你什么。

于 2012-06-06T18:53:20.283 回答