您的位置:首页 > 其它

autolayout 和 scrollView

2015-12-09 11:38 120 查看
内容总结自:https://developer.apple.com/library/ios/technotes/tn2154/_index.html#top

1)普通的View,使用auto layout时,top,left,bottom,right代表View的四个边。

2)使用autolayout时,top,left,bottom,right 此时代表的是contentView的四个边。此时,如果设置的constraints不完整,比如,先set scroll的contentSize宽度为400,然后设置四个subviews的constraint为

make.left.as_equal(0.f);

make.left.as_equal(100.f);

make.left.as_equal(200.f);

make.left.as_equal(300.f);

然后,系统会根据constraint重设content size,覆盖掉了之前设置的content size,但又由于设置的constraints不完整(只设了相对content view的left,没设相对contentView的right),所以系统无法根据subviews确定content size的宽度,就会把contentSize的宽度置为零,scrollView就不可滑动了,出现了bug。

解决方案:

1)创建一个空的content view。scrollView的唯一subview是这个content view,content size是这个content view的大小。然后在content view上add其他需要展示的View。

2)把constrains设置完整,subiews相对于content view的top,left,bottom,right都有要设置,保证系统可以根据subviews计算出content size的大小

比较坑的是,设置constraints不完整时,8.0以上也可能正确计算出contentSize的值,所以开发时不会出现问题。但是在7.0以下的机器上运行时则不可以,导致出现bug。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: