Auto Layout的异类-UIScrollView

#本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含Java, 数据结构与算法, iOS, 安卓, python, flutter等等, 如有需要, 联系微信tsaievan.

#####最近在看这本书:
Auto Layout的异类-UIScrollView

里面有句话说的很好:

无论按什么思路设置scrollView的约束,一定要让设置的约束能够确定scrollViewcontentSize, 这是重点, 也是核心思想.

于是, 不管是"拖线"布局, 还是Masonry布局, 都可以遵循这么个思想来进行.

#####先说"拖线"布局

Auto Layout的异类-UIScrollView

讲道理来说, 我这里设置了x, y, width,height之后, scrollView就应该固定住了, 布局是完美的. 但是不是, 布局的线还是报红的.
这就是scrollView的特殊之处, 必须确定了contentSize之后才可以完美布局.

我们怎么给contentSize呢?

  • 首先, 给scrollView添加一个contentView
    Auto Layout的异类-UIScrollView

这个contentView的上下左右边距都跟scrollView是对齐的. 这时候, 约束还是没有任何变化, 还是报红

  • 然后, 假设我是要上下滚动, 我就将contentView的水平方向跟scrollView居中对齐, 这时候就确定了scrollViewcontentSize的宽

Auto Layout的异类-UIScrollView

  • 最后给contentView设定一个高度, 这个高度实际上就是contentSize的高
    Auto Layout的异类-UIScrollView
    contentSize的宽和高都确定了, 那么布局就完美了. 布局的线也变成了蓝色

#####再说Masonry布局
思路都一样, 也就是那么几步
Auto Layout的异类-UIScrollView

例子中写得比较简单, 高度写死了, 实际布局中, 高度是根据子view的高度不断变化的, 这个就要举一反三了, 总之记住:

#####scrollView的布局不仅仅要确定x,y, width, height. 还要确定contentSizewidthheight, 而contentSizewidthheight, 是由其子view来决定的.