这是pushViewController的错误吗?

时间:2015-02-19 16:58:24

标签: ios iphone

我使用下面的代码来呈现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的错误

您的评论欢迎

1 个答案:

答案 0 :(得分:3)

我认为您已启用自动布局。所以你需要覆盖viewDidLayoutSubviews这样的方法:

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    self.view.frame = CGRectMake(0, 0, 320, 480);
    NSLog(@"%@", NSStringFromCGRect(self.view.frame));
}

最好将NSStringFromCGRect用于NSLog,而不是创建4个输出双倍。