首页 > 其他 > 详细

在Storyboard中对UIScrollView使用autolayout自动布局应该注意的地方

时间:2015-03-23 18:09:16      阅读:284      评论:0      收藏:0      [点我收藏+]

尝试在Storyboard中对UIScrollView使用autolayout自动布局,遇到了种种麻烦,记录一下

1、UIScrollView在StoryBoard中的布局

在StoryBoard中使用UIScrollView一定要用下图中的这种布局,如果刚开始没想到用UIScrollView后来才想加,可以选中所有Subview然后选择Editor - Embed in - Scroll View,ContentView忘加了也可以类似操作,其它的设置可参考

技术分享


2、UIScrollView边距的确定

一般情况下一个View的边距确定是通过Leading, Trailing, Top, Bottom space确定的,通常我是使用最快捷的方式:在StoryBoard中右键拖动出View与SuperView的线来选择。但是如果对UIScrollView使用此方法,使其与SuperView边缘重合,即设置边距为0,会发现怎么也和SuperView对齐不了。

究其原因,是因为有一个默认Margin的存在,UIScrollView四周的默认Margin是8。

解决方法是:不要用快捷方式,在StoryBoard的右下角,点自动布局第二个的Pin图标,在弹出的小窗口中去掉"Constrain to margins"的勾选,然后将其上的四个边距设置为0


3、Content View的约束一定要齐全

这个涉及到contentsize的大小,不全的话会出现很奇怪的问题,比如滑动不到底部。

当Content View中的内容高度不超过屏幕的高度时,可以设置bottom为1,否则就不会滑动了

当ContentView中的内容高度超过屏幕的高度时,该怎么布局呢?首先最大的问题超过屏幕的区域怎么在StoryBoard中显示出来,办法是在StoryBoard中修改ViewController的size,如下图:

技术分享        技术分享


4、在代码中修改contentsize

有时候contentsize可能是动态的,需要在代码中修改。通常是在ViewController的viewDidAppear方法中setContentsize。

但是在我的项目中发现一个问题,iPhone6/iPhone5测试正常,在iOS6中设置无效,设置时打印contentsize是正常的稍后打印contentsize.height居然变为0了,真是奇哉怪也。

最后是想起了这篇文章的方法,将setContensize放在dispatch_async(dispatch_get_main_queue(), ^{ });中解决问题


参考:

使用Autolayout创建UIScrollView

UIScrollView使用autolayout技术





在Storyboard中对UIScrollView使用autolayout自动布局应该注意的地方

原文:http://my.oschina.net/ioslighter/blog/390385

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!