UIScrollview的 约束 contentsize contentoffset contentinset layoutsubviews needlayout等影响布局的属性

Posted timeToShow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIScrollview的 约束 contentsize contentoffset contentinset layoutsubviews needlayout等影响布局的属性相关的知识,希望对你有一定的参考价值。

  很久没有写视图布局,最近发现写布局很不顺手,总结一下在处理UIScrollview的时候种种注意事项:

1.

self.automaticallyAdjustsScrollViewInsets = NO;

ios7之后,当你在Nav上添加TableView的时候,你会发现tableView的位置并不是从你的起点开始的 ,这是因为在iOS7之后,如果nav上添加的第一个视图是UIScrollView的时候,系统会默认添加上64的间隔,解决方法是  你把第一个视图添加一个0.1的View使SCrollView成为第二个视图,或者取消系统默认效果.。

2.

关于layoutsubviews 和 setNeedsLayout, layoutIfNeeded

最近我在一个controller上面添加了一个controller,子controller上面是一个tableview,我需要获取tableview的偏移量来赋值给父类controller上滚动视图,使父类视图能够正常滑动。由于重新赋值了子类的frame,所以我预先标记了tableview:

   [self.historyInfoVc.tableview layoutIfNeeded];

  发现位置并非想象的那样,tableview进行了重新布局,但是子类控制器的view并未进行重新布局,这导致我的视图上出现了两个tableview错乱排列的情况,具体为什么出现这种情况我也不是很清楚。后来我把重新布局的属性改为了子类控制器的view,子类控制器的view在重新布局的时候一定会连并subviews一起布局,发现果然可行。关于这三个属性在此进行说明如下:

 

 

以上是关于UIScrollview的 约束 contentsize contentoffset contentinset layoutsubviews needlayout等影响布局的属性的主要内容,如果未能解决你的问题,请参考以下文章

为 UIScrollView 设置约束

带有分页的 UIScrollView 的约束

UIScrollView 的底部约束

UIScrollView 和 UIView 的约束

约束 UIScrollView 平移?

UIScrollView 中的 UIView 尊重一些约束,但不尊重其他约束