iOS iphonex底部安全区域

适配iPhone X,对于一般的app,只支持竖屏展示的,底部就成为了适配的重点,当在初始化控件使用self.view.safeAreaInsets.bottom获取底部安全区域高度的时候,发现获取到的值为0,并不是期望的34.前提是你用的autolyout布局,

问题出在哪,不是你的iPhone X是假的,是真的获取不到。只有在VC的
- (void)viewDidLayoutSubviews这个方法里,你获取到的才是,所以在这方法里面才能获取到self.view.safeAreaInsets.bottom的值。

为什么会出现这种情况,下面说明VC中的两个方法
1.ViewDidLoad
2.ViewDidLayoutSubViews

页面中使用autolayout进行布局时,方法1调用是在约束之前,方法2调用是在约束之后。这是它们在调用时机上的区别。还有就是方法2在页面约束发生变化的时候就会调用,所以它的调用次数是根据页面而定的,如果页面涉及到很多的约束变化,这个方法就会调用很多次,所以,方法2内部直接初始化某些控件或者是耗内存太多的操作是非常不合适的。切记切记!!!!!

你可能感兴趣的:(iOS)