iOS开发之xib或storyboard上给UIScrollView添加子控件约束报错的问题

当我们在xib或者storyboard中添加UIScrollView并像给其他控件设置约束一样设置好约束后(例如top,leading,tralling,bottom都为0),显示一切正常,如图:

iOS开发之xib或storyboard上给UIScrollView添加子控件约束报错的问题_第1张图片

但是一旦当我们添加控件后就开始报错(即便设置好约束),如图:

iOS开发之xib或storyboard上给UIScrollView添加子控件约束报错的问题_第2张图片

此时,以前没碰见过这种问题的同学开始怀疑人生,心理不禁问道”我明明都设置好了约束呀,这些约束设置的没问题呀,我在其他的view上都是这样添加约束呀,怎么会出问题呢?”.

其实这也不怪第一次给UIScrollView设置约束的你,只能说UIScrollView确实跟其他UIView及其子类不同,在设置约束的时候除了常规的一些约束设置完后,还有最重要的一点要让你的scrollView知道自己的宽和高,也就是contentSize.

大家用代码添加scrollView的时候都知道要设置contentSize,同理在xib或者storyboard里添加scrollView时也需要设置好它的contentSize

而当我们在xib或者storyboard给scrollView添加子控件后,scrollView要根据子控件来计算它的contentSize,如果此时我们只设置了子控件的宽高和水平方向竖直方向居中(如上图),scrollView是无法根据子控件的约束来计算出自己的contentSize的,但是我们把子控件上下左右的距离约束也添加上的话,scrollView就能够根据子控件计算出自己contentSize了,此时约束就不会报错了,如下图:

iOS开发之xib或storyboard上给UIScrollView添加子控件约束报错的问题_第3张图片

知道了报错的原因,那我们也就知道怎么去解决了,在这里我建议两个思路:

  1. 思路一: 当我们添加好scrollView后,可以再添加一个clearColor的UIView,直接覆盖在scrollView上,并设置好UIView的约束,之后再往UIView上拖子控件,而这些子控件你就可以按照常规方法来添加并设置约束了.
  2. 思路二: 直接在scrollView上拖子控件,但切记一定要让scrollView能够根据子控件的约束计算出contentSize.否则还会出现约束报错的情况.

你可能感兴趣的:(iOS开发)