如何在UIScrollView的xib上添加子控件并添加AutoLayout约束

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在UIScrollView的xib上添加子控件并添加AutoLayout约束相关的知识,希望对你有一定的参考价值。

引言

自从苹果推出了autoLayout之后,作为开发者,深深的体验到了他的便捷之处,再也不用为适配不同屏幕布局UI而烦恼,我们仅仅需要和类关联一个xib文件,想上面放置我们需要的控件xib,并打好其相对于父视图以及同级视图的约束关系,这样我们就做好了不同屏幕的适配。但是奇怪的是UIScrollView上添加子控件,和之前的一样的操作,报的错却很吓人,那是为什么呢?

原因分析

因为UIScrollView想要能滑动的前提是要知道他的ContentSize的大小,我们直接向上面添加约束,他不知道自己的ContentSize是多少,所以就报错了

解决方法

1. 拖一个UIView在UIScrollView上作为子控件的内容视图,之后所有的空间都放在这个内容视图上(类似于UITableviewCell的contentView)

2. 设置这个内容视图距离UIScrollView上下左右距离约束都是0,表示内容视图和UIScrollView的frame一样大

3. 固定UIView 的高度,这一步是虚假的操作,这样UIScrollView就以为的自己的contentSize.height = 内容视图.height

4. 设置UIView水平居中(表示垂直方向能滑动),这时候UIView就没有警告了

5. 向UIView上拖子控件,按正常情况设置约束(从上往下打约束)

6. 删除之前设置的高度约束,设置UIView 和其子视图布局最底部的控件的 bottom space to container

至此,UIScrollView上的约束就完成了~

以上是关于如何在UIScrollView的xib上添加子控件并添加AutoLayout约束的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XIB 的子视图实现 UIScrollView

如何将 UIScrollView 添加到基于 xib 的视图中

xib设置UIScrollview

xib或storyBoard中往scrollView添加子控件

Swift 3 - 如何在 .xib 文件上为 UIScrollView 分配委托?

swift - 在UIScrollView上从xib添加UIView后如何更新约束?