iOS系统由10版本升级11后,无意间跑一些老代码时发现有些界面的适配出现了错位。

将self.navigationController.navigationBar.translucent = NO;放在控制器生命周期的viewWillAppear中处理即可

解决原因猜想

这个问题是发现在11.0.3版本上的,之前较低的版本并没有这个问题,所以应该是苹果在新版本中更改了控制器生命周期中一些方法的具体工作内容,因为导航栏是在Appdelegate中生成的,所以在控制器中本身是已经存在的,对于一个已经存在的对象修改其外表属性发现没有效果,结果可能就是这个对象还没有进入渲染和展示,进一步推断,苹果在新版本中将viewDidLoad里部分负责渲染和展示的工作移动到了下一个生命周期。即:viewWillAppear。

原文http://www.cocoachina.com/ios/20171113/21146.html

你可能感兴趣的:(iOS系统由10版本升级11后,无意间跑一些老代码时发现有些界面的适配出现了错位。)