相信有很多人因为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 就变成这个样子了
是不是很长了 ,为了证明可以直接往上面加约束 ,所以加点东西上去 直观点
好 弄完 收工 。
至于怎么拉约束线我就没有详细写 有很多博客都有介绍。 下次再写个关于 约束实现简单动画的博客 。可以给初学者借鉴下。证明大家都被虐过。