美文网首页
UIScrollView自动向下偏移原理

UIScrollView自动向下偏移原理

作者: 那样风采 | 来源:发表于2017-10-25 20:51 被阅读488次

iOS11前:automaticallyAdjustsScrollViewInsets

iOS11:contentInsetAdjustmentBehavior

        我们知道,当我们放入一个UISCrollView到view上的时候,可以根据上述的两个属性来实现scrollView内容的布局调整,以避免被遮挡。默认会帮你实现,你也可以选择关闭,然后自己布局。那么到底是怎么实现偏移的呢???

看下视图控制器的根view:

根view的frame和bounds

我们的table加在根view上,并且frame等于根view的frame:

CGRect tableRect = self.view.frame;

_listTable = [[UITableView alloc]initWithFrame:tableRect     style:UITableViewStyleGrouped];

table的frame和bounds

我们看到tableView的frame和bounds的y值是不一样:

frame :{0,0,375,812}

bounds :{0,-88,375,812}

这个看起来就比较诡异了。因为我们知道bounds的是相对于自身坐标系的永远是(0,0),但是这里的bounds是(0,-88),而frame是{0,0}。我们知道在iOS11中因为安全区的存在,table进行了88pt的向下偏移(没有大标题),但是我们看界面上,table并没有往下移动啊,那么其实就是反过来处理了,我们将table的原点变成了(0,-88),因为我们是改变了坐标点,并没有偏移,所以table在view中的位置没有变,所以frame还是{0,0},而bounds则变成了{0,-88}。

这样我们在table中放置元素的时候,比如加入一个子视图subView,设置frame为{0,0,200,100},可想而知,因为原点其实是{0,-88},那么{0,0}的位置其实是在table原点往下88pt的地方,这样就做到了内容的向下偏移了。

所以:

我们所说的table因为安全区向下偏移了一定的距离,是通过更改table的原点,来达到内容偏移的目的。

而且我们看到navigationBar其实与table是共享背景的。也是红色。

相关文章

网友评论

      本文标题:UIScrollView自动向下偏移原理

      本文链接:https://www.haomeiwen.com/subject/wtycpxtx.html