首页 > 代码库 > UIScrollview的 约束 contentsize contentoffset contentinset layoutsubviews needlayout等影响布局的属性

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一起布局,发现果然可行。关于这三个属性在此进行说明如下:

 

<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #00b1ff } span.s1 { color: #ffffff } span.s2 { color: #de38a5 } span.s3 { color: #08fa95 } span.s4 { }</style>

 

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