在自动布局中,scrollview的处理方式要比其他普通view特殊。
由于scrollview出了自身大小外,还需要contentSize来确定内容滚动的大小,所以使用对scrollview的内容作约束的时候,需要要能计算出确切的宽高,最终才能得到contentSize的大小。
做法:
1. 添加scrollview到vc.view中,先设置scrollview跟父view的约束一般为top、bottom、left、right,这样就确定了scrollview的自身的frame
2. 接着往scrollview中加一个(或多个)子view,这里先叫contentView,向contentView跟父view(scorllview)添加约束,如top、bottom、left、right,到这里,你以为约束已经完成了,但IB确约束报错说未能确定出contentSize,明明contentView已经有了top、bottom、left、right。其实,在scrollview中的子view是用来确定其contentSize的大小的,即是scrollview需要询问其子view的约束,确定出确切的contentSize,而不是为其子view提供大小。(这个跟平常的view就不同了,可能平时view可以通过约束,确定其跟随父view的大小,但如果在scrollview中就不行了)
3. contentView除了top、bottom、left、right,还需要知道其自身确切的宽高,所以要设定的约束要能计算出其自身宽高,如再未其添加width、height约束,这样contentSize就能确定出来,contentSize的高度为top+height+bottom
contentSize的宽度为left+width+right
一般我们的scrollView都是纵向滚动的,所以要设定其contentView的宽时,一般可直接设置其宽与vc.view等宽约束contentView.width=vc.view.width
本文详细介绍在自动布局中如何正确配置ScrollView及其子视图的约束条件,以确保能够准确计算出contentSize,实现流畅的滚动效果。

2332

被折叠的 条评论
为什么被折叠?



