在iOS7以前,状态栏是独立于viewController之外的。从iOS7开始,viewController的view都默认全屏,包括的状态栏。
假设你的viewController中有一个UIScrollView的对象,而这个viewController又没有在UINavigationController的栈中,那么,很容易出现scrollView的内容往下偏移的情况。至于偏移了多少,我们借助reveal这个界面工具,能够轻而易举的获知。 我遇到的情况就是偏移了20个点,借助reveal,我发现scrollView的contentInset为20.
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zM5QDMzUDNyIDOycDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
通过设置viewController.automaticallyAdjustsScrollViewInsets = NO,可以避免这个问题。
真是不知道这个自动调整什么时候会有用,谁会做一个没有导航栏同时以scrollView铺满的界面呢?
还有一个我遇到的因为viewController.automaticallyAdjustsScrollViewInsets引起的问题。
视图层次如下。
screen
1.navigationBar
2.self.view
1.tableView
2.customTabbar
在点击表格后,push进入到另外一个viewController,在push回来的时候,表格最后一行的位子就偏下,被customTabbar挡住。
同样,设置为NO,解决。
就我遇到的这两个情形而言,viewController.automaticallyAdjustsScrollViewInsets = YES会使scrollView的inset尽量的铺满屏幕。
如果scrollView上面没有导航栏,就会自动让出20个点给状态来,如果下面没有UITabbar,就会直接铺到屏幕底部。