Ios 如何将scrollview与动态高度的子视图一起使用?
我在scrollview中有一个标签,它可以是1行,也可以是10行。我很难弄清楚如何使scrollview内容大小动态,以便它能够相应地拉伸 我尝试添加一个>=100(任意数)的高度约束,但后来它抱怨这是一个Ios 如何将scrollview与动态高度的子视图一起使用?,ios,xcode,uistoryboard,Ios,Xcode,Uistoryboard,我在scrollview中有一个标签,它可以是1行,也可以是10行。我很难弄清楚如何使scrollview内容大小动态,以便它能够相应地拉伸 我尝试添加一个>=100(任意数)的高度约束,但后来它抱怨这是一个不平等约束歧义 如果未为ui标签指定高度约束,则标签将采用适合整个文本的高度。只需确保行数设置为0,并且您的标签设置了所有边距限制。快速回答 删除标签上的当前高度约束 确保标签行属性设置为0,换行符设置为换行 向标签上方和下方的视图添加垂直间距约束 确保每个视图从上到下都有垂直间距约束,以便
不平等约束歧义
如果未为ui标签指定高度约束,则标签将采用适合整个文本的高度。只需确保行数设置为0,并且您的标签设置了所有边距限制。快速回答
删除标签上的当前高度约束
确保标签行
属性设置为0
,换行符
设置为换行
向标签上方和下方的视图添加垂直间距约束
确保每个视图从上到下都有垂直间距约束,以便滚动视图推断其contentView
的高度
解释
为了使滚动视图推断其内容大小,它必须具有从边距到子视图再到边距的约束-想象它像一个气球,内容是推动墙使气球达到其大小的内部空气。从子视图到边距的约束允许子视图的大小向外推内容视图的墙
对于标签,将Lines
属性设置为0
意味着它将具有您想要的可变行数。换行符
属性被设置为Word Wrap
意味着它将确保单词不会被截断(截断)或分解成字符,而是作为整行单词推到下一行。这篇来自苹果的技术说明解释了如何仅使用自动布局正确配置可滚动内容的滚动视图
从概念上讲,在您的情况下,这是您需要做的:
视图层次结构:
MainView->ScrollView->ContentView->UILabel
Scrollview被约束到主视图的所有边
ContentView被约束到ScrollView的所有边缘
并且UILabel约束到ContentView的所有边(将UILabel线数设置为0,并删除当前应用的高度约束)
这里的关键是要认识到contentView的大小只取决于UILabel的大小,因此随着UILabel高度的拉伸,contentView也会随之拉伸。这将允许scrollView自动推断contentSize并在需要时启用滚动