iOS之UIScrollView的AutoLayout

关于UIScrollView的AutoLayout布局是去年学会的,因为项目中有用到,但今天为了研究UIScrollView的一个属性,写了一个UIScrollView的Demo,惊奇的发现我写的UIScrollView死活不能滚动,在谷歌查遍了所有的不能滚动原因,还是没有解决(这个下面也会说),最后才发现原来是约束的问题(storyboard并没有红色的错误或黄色的警告提示),所以这篇文章主要作为一个笔记吧,下次忘了也很快能想起来。


这个就不上效果图了,大概讲一下demo构成:一个UIViewController,里面一个UIScrollView,UIScrollView里面一个UIView(我们叫他BigV),在大V里面有4个SmallV,我们称为SmallV_1(红)、SmallV_2(黄)、SmallV_3(蓝)、SmallV_4(橙).

UIScorllView

对父视图(View):添加左、上、宽、高四个约束(不解释了)[1]

BigV

对父视图(UIScorllView):添加上、左、下、右四个约束(不解释了)

滑动的视图

思想:对父视图(BigV):添加上、左、下、右四条约束并对UIScrollView的父视图(View):添加宽和高的约束,下面具体说说四个SmallV的约束.
SmallV_1:对BigV添加上、左两个约束,对View添加宽、高两个约束
SmallV_2:对BigV添加右边的约束;对SmallV_1添加上、水平间隔、宽、高四个约束
SmallV_3:对BigV添加下边的约束;对SmallV_1添加左、垂直间隔、宽、高四个约束
SmallV_4:对SmallV_3添加上、水平间隔两个约束;对SmallV_1添加宽、高两个约束

从头到尾不用一句代码,还是很有效率的,demo点击下载,欢迎大家Star.

最后说下我在谷歌上查的UIScrollView不能滚动的原因吧:

  • 第一肯定是contentSize这个属性没有设置
  • 第二个是contentSize设置的地方不对,我查到的资料上说由于UIScrollView引近AutoLayout以后,如果使用AutoLayout,则要在viewDidAppear方法里设置contentSize
  • 第三个是说把userInteractionEnabled或scrollEnabled属性设为NO了
  • 第四个是说关于手势的传导问题,即重写touchesShouldCancelInContentView这个方法
  • 现在我加第五个,就是约束有问题v

现在按照文章的方法加约束会报错:Content and frame layout guides before iOS11.0
解决方法:如下图所示,把Builds for 改为iOS 11.0 and Later即可

版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!


  1. 给个例子来理解UIScorllView对父视图添加约束:假设A对B添加约束,则first item为A,second item 为B,拖线操作有时候会颠倒first item和second item的位置,需要检查下调回来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,255评论 4 61
  • 1 混日子 最近临近开学,写完了学校布置的《学习心得》,我好像又开始无聊了。 说实话,假期在我们的无尽期盼中珊珊而...
    哆啦梦_1264阅读 402评论 0 1
  • 未来的5到10年,随着咱们国内政府提出大众创业的号召,我们身边会有2类人群能够获得最大的财富。 第一类:是创业者,...
    陈记锋阅读 90评论 0 0
  • 上一章:(16)重回正轨 文|中药味的吧啦啦 林夏是被左遇的电话叫醒的,惶惶恐恐的一边回话一边收拾着自己,披上风衣...
    河恩呐阅读 487评论 0 4
  • 王艺兴(1993——) 前几天有人问我,你怎么还在读书?你打算读书到什么时候?听到这些问题的时候我有一丝尴尬...
    Daisy1阅读 708评论 0 2