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。
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。
相关文章推荐
- java实现的快速排序算法
- Spring mail 邮件发送的简单实现
- 判断星期几
- JQGrid 在页面加载时展开SubGrid
- iOS 事件处理机制与图像渲染过程(转)
- IOS9输出UIK的提示存在崩溃问题的风险
- 吐槽Android的SharedPreferences(保存不了数据)
- layout_weight属性
- 一个不错的loading效果--IT蓝豹
- 理解SQLAlchemy的表继承关系(2)-Single Table Inheritance
- unbtun python tab补全
- cocos2d-x实现打字机效果
- Office 365管理员指引 4 ——管理组织的 Exchange ActiveSync
- ResultSet 基础没学好
- 域名与ip地址是什么关系 如何进行转换
- JavaScript实现点击可编辑
- 微信公众平台带参数二维码配置工具的实现
- redhat6.5换centos源
- 合并的地块带有小缝隙怎么办
- javaMail邮件发送的简单实现