iOS中 self.view的高度问题
iOS10 以下版本 self.view
的y
会从顶部toolBar
的y
开始计算.
-
在iOS7中, 苹果引入了一个新的属性, 叫做
UIViewController.edgesForExtendedLayout
, 他的默认值是all
, 当你的容器是navigationController
时, 默认的布局将从navigationBar
的顶部开始. 这就是为什么所有的UI元素都往上偏移了44pt. 有时候还会加上顶部toolBar
的高度20, 而且下面的tabbar
也缩进49.
解决办法: 设置edgesForExtendedLayout = UIRectEdge.init()
如果设置成edgesForExtendedLayout = UIRectEdge.bottom
; 那么就会self.view.frame
是从navigationBar
下面开始计算一直到屏幕底部.
如果设置成edgesForExtendedLayout = UIRectEdge.init()
; 那么就会self.view.frame
是从navigationBar
下面开始计算 一直到屏幕tabbar
上部.
如果设置成edgesForExtendedLayout = UIRectEdge.top
; 那么就会self.view.frame
是从navigationBar
上面计算, 一直到屏幕tabbar上部. -
在iOS11 以下的系统, 隐藏导航栏之后, 滑动视图会向下偏移状态栏的高度. 解决办法:
项目中用到的tableView 或者 scrollView 在Xib中已经设置过contentInsetAdjustmentBehavior = never. 但是没有适配低版本的系统设置. 在iOS11 以下版本中要设置self.automaticallyAdjustsScrollViewInsets = false; 代码为:
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = UIScrollView.ContentInsetAdjustmentBehavior.never
} else {
automaticallyAdjustsScrollViewInsets = false
}