2012-06-06 21 views
2

所以我去一个UIViewController(其默认视图),我创建的程序像调整大小以合适的高度将它添加到一个UINavigationController

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

里面后没有在viewDidLoad中这样的事情

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

的问题是,该pushedViewController观的高度保持460像素,但可见的只是416px(因为现有navigationController的。

有没有办法让推视图控制器的uiview调整正确的方式没有设置显式帧到416(因为旋转等)?

回答

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; 
} 
0

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

尝试通过

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

注销视图控制器的viewDidLoad方法时的结束帧,看看它告诉你。

+0

我只在那的确得到完全相同的auroresizingmask的那一刻得到了两个子视图这样的事情。在我的“被pushViewController”中记录viewDiDLoad给了我'{{0,20},{320,460}}' – choise

相关问题