问题:在做pad开发时,从一个controller present到一个新的controller,代码如下:
DetailViewController *dvc = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:dvc];
nav.modalPresentationStyle = UIModalPresentationFormSheet;
nav.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:nav animated:YES completion:^{
}];
在detail页面viewDidLoad方法里打印self.view.frame时,结果为(1024,768),得到的是父类的,百思不得其解。
后来在网上搜了一些都没搜到相关问题,后来在stackoverFlow里搜(540,620)就搜到了,所以标题为(540,620) 解决:在viewDidLoad里打印得到1024x768,在viewWillAppear 和viewdDidAppear里打印就得到正确的结果(540,620), 所以问题可以这样解决:1.一般添加控件在viewDidLoad里添加,控件的frame还可以写self.view.frame.size,只是在viewDidAppear 里需要重新写一遍,得到正确的frame。2.重写每个控件的frame太麻烦,可以重写一个较底层的view的frame,其他的view添加其上,根据它的 frame进行设置。