美文网首页
Auto Layout 中的 UIScrollView

Auto Layout 中的 UIScrollView

作者: 四月白绵羊 | 来源:发表于2018-03-04 22:17 被阅读0次

需求

iOS编程中经常会遇到在IB中编写较长的页面。这种较长的页面在不同的设备上显示的时候就会要求:在屏幕正常的设备上(如iPhone6)正常显示,而在屏幕小一点的设备上面(如iPhone5)显示成滚动页面。这种实现就是基于UIScrollView。如果是代码编写的UIScrollView,那么实现很容易,就是比较麻烦。IB会比较简洁。这里就说一下如何使用IB来实现ScrollView自适应内容大小实现滚动。

  1. 在UIViewController中添加UIScrollView。设置到Safe Area的constraints都是0。
  2. 在UIScrollView中添加UIView(作为Content View),并且设置到parent view 的constraints都是0。
  3. 设置content view 的宽度和parent view 一样,以保证水平不会滚动。这个时候可以先设置一下高度也和parent view一样,不然会有warning出现,但等到后面content view 的内容确定之后,这个设置不要也可以的。
  4. 在content view 中添加一些label,设置label的上下间距约束。这些约束会帮助IB计算content view 的实际高度,而这个实际高度就是scrollview 的contentSize。只有scroll view知道了自己的content size,它才能滚动。
  5. 注意!在content view 设置完了之后,需要去更改之前设置的一个约束(content view 和 scroll view 等高的约束)。因为这些高度约束的优先级都是1000。这在实际显示的时候会优先以parent view的约束为主,这就导致IB会强制要求content view 和 scroll view 等高(即使content view 的高度已经知道了)。所以这个时候我们就需要降低 等高 这个约束的优先级(250)。这样在content view 高度知道的情况下,IB就会优先使用content view 的高度为主。其实说了这么多,直接把 等高的约束删了就可以了。

相关文章

网友评论

      本文标题:Auto Layout 中的 UIScrollView

      本文链接:https://www.haomeiwen.com/subject/mfgqfftx.html