所以我去了一个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(因为旋转等等)?
答案 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));
看看它告诉你的是什么。