iOS中 self.view的高度问题

iOS10 以下版本 self.viewy会从顶部toolBary开始计算.

  • 在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
        }

你可能感兴趣的:(iOS中 self.view的高度问题)