在iOS 7中,苹果引入了一个新的属性,叫做[UIViewController setEdgesForExtendedLayout:]
,它的默认值为UIRectEdgeAll
。
当容器是NavigationController时,默认的布局将从NavigationBar的顶部开始。这就是为什么所有的UI元素都往上漂移了44pt。
为了做适配,可以这样写:
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
self.edgesForExtendedLayout = UIRectEdgeNone;
}
如果对setEdgesForExtendedLayout
有反应,则说明是iOS 7以上版本,默认UIRectEdgeAll
,UI元素会往上漂移,需要设置回UIRectEdgeNone
。