首页 > 代码库 > 使用 autolayout 在scrolleView中进行布局

使用 autolayout 在scrolleView中进行布局

相信有很多人因为iPhone6出来后 ,因为适配而选择开始使用autolayout。现在正在被虐中。。。    今天要做一个在scrollView上面 可以滚动的效果  平时用代码写 感觉很快  , 被autolyout 坑死了 。  弄了好久才知道为什么 scrollView 不能滚动。

  话不多说  首先创建一个新的工程 。然后往view 上面加载一个scrollView 并加好约束 。 这里是让他铺满整个屏幕。没什么技巧 。

 

然后 ,我就想是不是设置下 contentSize  就行了  。结果发现我天真了  打开了autol ayout后真没找到可以设置contentSize的地方 ,后来查了下才知道好像是说

如果把自动布局打开,在storyboard中系统会默认根据你添加的subview自动生成同样大小的contentsize

对了  这就是我们接下来要做的事  既然是根据subView 那么 我再加个View上去 不就可以了吗? 说加就加  开始 然后铺满整个屏幕

这个时候就会出现这么两个警告 

 

这两个警告是说 在宽度上 和高度上  你让不让我左右 或者 上下 滚动你表达的很模糊  它不清楚

其实我想说 我也不清楚究竟怎么样你才能滚动 。所以 ,我决定先不管他  。直接运行 ,要是就可以呢?那我不是白担心了 。

结果果然不出我所料啊  怎么拉都不会滚。

于是  我惊喜的发现但我把最后加上去的View的高和宽都固定后 没有警告了 。突然发现我运气太好了 ,结果就是 都滑成这样了 ,就是不滚动。

所以这个时候就没得弄了  ,然后想想可能是哪里出了问题  ,很显然我不能把他的 宽和高 定死 ,因为这个时候没了警告,说明Xcode很清楚我不需要滚动。这个时候我更茫然了 ,然后 再看这句话

如果把自动布局打开,在storyboard中系统会默认根据你添加的subview自动生成同样大小的contentsize

哦 对了 subView 的大小应该要超过scrollView 这样才能滚动 这个用代码也是这么用的 

好 那我就把view的大小设置成PING屏幕的两倍好了 。

这时候发现由于View 的高度太高 storyboard 显示不下 成了这个样子 。 这时有部分人运行已经可以滑动了。 但是还有运气不好仍然不可以滑动,不要心急。我们接着来。到底是什么在作怪。  其实 ,可能就是你的约束没加对 ,这个时候检查下约束,要让scrollView和View 的顶部 和底部都有约束 并且一定要让scrollView包含view 对的你没有听错  view 是比ScrollView大很多 。但是正是这样,才符合 scrollview的内容比他本身大 ,所以这个时候你就可以滚动了。 其实想通了还是不难的 。

好了 。接下来还有更重要的 。上面那么个样子 你怎么往上面加视图呢? 我是这样处理的 点击  storyboard 设置size  变为Freeform

然后 再把storyboard的宽度和高度重新设置  320  和 568*2  就变成这个样子了

 

是不是很长了  ,为了证明可以直接往上面加约束 ,所以加点东西上去  直观点

好  弄完 收工  。

至于怎么拉约束线我就没有详细写  有很多博客都有介绍。 下次再写个关于 约束实现简单动画的博客 。可以给初学者借鉴下。证明大家都被虐过。

 

使用 autolayout 在scrolleView中进行布局