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
}








网友评论