您的位置:首页 > 移动开发 > IOS开发

iOS开发:关于automaticallyAdjustsScrollViewInsets的使用和注意事项

2017-03-17 15:58 633 查看
在iOS开发过程中,使用比较广泛的几个UI控件就包含有UICollectionView、UITableView和UIScrollView。其中UIScrollView是UICollectionView和UITableView的父类,也就是说UICollectionView、UITableView都继承于UIScrollView,因此节省了很多时间去自定义来实现一些基本或者酷炫的效果。

关于automaticallyAdjustsScrollViewInsets的使用,本人已经遇到N次这样的场景了,每次都是看到这个属性才恍然大悟,所以我觉得了要记下来,往后如果遇到关于这个automaticallyAdjustsScrollViewInsets的使用场景,不要犹豫,果断使用它就行。

查看了automaticallyAdjustsScrollViewInsets的官方API解释,它是一个BOOL类型的,是UIViewController的一个属性,这样会导致UIViewController下如果只有一个下面UIScrollView或者其子类,就会自动留出空白,让UIScrollView滚动经过各种bar下面的时候能够隐约看到内容。但是每个UIViewController只能有唯一一个UIScrollView或者其子类,如果超过一个,就需要将automaticallyAdjustsScrollViewInsets设置为NO,由开发者自己去控制留白及坐标问题。可以先看一下它的官方文档是怎么解释的。

如下所示:

Declaration      @property(nonatomic, assign)
BOOL automaticallyAdjustsScrollViewInsets;

Description
A Boolean value that indicates whether the view controller should automatically adjust its scroll view insets.

The default value of this property is
YES, which lets container view controllers know that they should adjust the scroll view insets of this view controller’s
view to account
4000
for screen areas consumed by a status bar, search bar, navigation bar,
toolbar, or tab bar. Set this property toNO if your view controller implementation manages its own scroll
view inset adjustments.

Availability
iOS (7.0 and later), tvOS(7.0 and later)

Declared In
UIKit

More Property Reference



有些时候从一个界面跳转到下一个界面,会遇到一些多出来一个导航栏或者底部菜单栏隐藏不了的情况,那都是因为automaticallyAdjustsScrollViewInsets的设置有问题。简单的说automaticallyAdjustsScrollViewInsets是根据所在界面的status bar、navigationbar和tabbar的高度,自动调整UIScrollView的inset,默认的automaticallyAdjustsScrollViewInsets状态是YES。如果遇到从当前界面跳转到下一个界面的时候,导航栏多出来一个或者tabbar隐藏不了等问题的,大部分情况都是automaticallyAdjustsScrollViewInsets状态是YES造成的,那么这时候果断在viewDidLoad这个方法里面加一句:self.automaticallyAdjustsScrollViewInsets
= NO; 不让它自动留出空白,由开发者自己去控制留白及坐标问题。
下面分享一下我遇到的这个情况(只是其一):



   解决方法如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: