Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将scrollview与动态高度的子视图一起使用?_Ios_Xcode_Uistoryboard - Fatal编程技术网

Ios 如何将scrollview与动态高度的子视图一起使用?

Ios 如何将scrollview与动态高度的子视图一起使用?,ios,xcode,uistoryboard,Ios,Xcode,Uistoryboard,我在scrollview中有一个标签,它可以是1行,也可以是10行。我很难弄清楚如何使scrollview内容大小动态,以便它能够相应地拉伸 我尝试添加一个>=100(任意数)的高度约束,但后来它抱怨这是一个不平等约束歧义 如果未为ui标签指定高度约束,则标签将采用适合整个文本的高度。只需确保行数设置为0,并且您的标签设置了所有边距限制。快速回答 删除标签上的当前高度约束 确保标签行属性设置为0,换行符设置为换行 向标签上方和下方的视图添加垂直间距约束 确保每个视图从上到下都有垂直间距约束,以便

我在scrollview中有一个标签,它可以是1行,也可以是10行。我很难弄清楚如何使scrollview内容大小动态,以便它能够相应地拉伸

我尝试添加一个>=100(任意数)的高度约束,但后来它抱怨这是一个
不平等约束歧义


如果未为
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并在需要时启用滚动