我使用下面的代码来呈现vViewController1
@property (retain,nonatomic) ViewController1 *vViewController1;
...
从rootViewController推送vViewController1
[self.navigationController pushViewController:vViewController1 animated:NO];
Viewcontroller1的viewWillAppear
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
CGRect frame = CGRectMake(0, 20, 320, 480);
self.view.frame = frame; ///aaa
NSLog(@"%f:%f:%f:%f",
frame.origin.x,frame.origin.y,frame.size.width,frame.size.height);
}
输出
0.000000:20.000000:320.000000:480.000000
但视图y位置始终为
0
而不是
20
看起来总是
CGRectMake(0, 0, 320, 480);
和
self.view.frame = frame; ///aaa
无法重新定位视图的位置。
我在调用pushViewController时尝试使用代码设置位置,
但没有办法让它正常工作。
只是想知道它是否是pushViewController的错误
您的评论欢迎
答案 0 :(得分:3)
我认为您已启用自动布局。所以你需要覆盖viewDidLayoutSubviews
这样的方法:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
self.view.frame = CGRectMake(0, 0, 320, 480);
NSLog(@"%@", NSStringFromCGRect(self.view.frame));
}
最好将NSStringFromCGRect
用于NSLog,而不是创建4个输出双倍。