iOS 9:在UINavigationController pushViewController之后,不再在viewWillAppear中设置框架

dev*_*os1 16 uinavigationcontroller ios9

我正在尝试解决从iOS 9开始出现的视图放置错误.我正在从xib文件(非自动布局)实例化一个视图控制器,然后将其推送到我的UINavigationController.

问题是,当viewWillAppear调用视图控制器的方法时,其框架尚未调整到导航控制器的大小,仍然是在xib文件中设置的.直到现在它才能正确设置viewDidAppear.

这完全搞砸了我的代码.有没有人确切地知道导致这种情况的变化是什么以及处理它的最佳方法是什么?我不想等到,viewDidAppear因为这看起来很糟糕并且会导致糟糕的用户体验.

Nic*_*ost 11

我也在寻找最好的解决方案.

我的临时工作是调用"viewDidLayoutSubviews"中"viewDidAppear"中的代码.这样,一旦设置了帧,我的代码就会被调用.

但是,请确保添加布尔值或其他内容,以便每次调用viewDidLayoutSubviews时都不会调用代码

-(void)viewDidLayoutSubviews{
   if (didLayoutSubviews == NO){
       didLayoutSubviews = YES;
       // perform code that was in viewWillAppear
   }
}
Run Code Online (Sandbox Code Playgroud)