所以我用了一个以编程方式创建的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));
看看这能告诉你什么。