如何使用自动布局更改uiview的高度?

thi*_*age 5 uitextview uiview ios xcode-storyboard autolayout

所以我创建了这个场景,以便了解视图如何根据内容增加高度.但是我仍然无法实现它.

这就是我现在拥有的:

在此输入图像描述

textview正在根据内容增长.但是包含它的uiview正在消失.我应该使用哪些约束,以便当uitextview变大时,其父视图的高度也会增加?

nhg*_*rif 10

首先清除所有限制,以便我们有一个新的平板.

第1步:构建视图层次结构.在这个例子中,我们想要这样的东西:

在此输入图像描述

视图控制器的视图,我们称之为parentView子视图,我们将调用它redView.那里redView有一个孩子,一个文本字段,我们称之为textField.

层次结构如下所示:

在此输入图像描述

第2步:设置任何特定于任何单个视图的约束.在这种情况下,我们可能只想在文本视图上设置宽度约束.现在,我只需要设置200pts的宽度.

在此输入图像描述

第3步:设置textView它与父对象之间的约束redView.假设我们想要一个10pt的边界.让我们添加这些约束:

在此输入图像描述

一旦我们添加了这些约束,我们就会得到一些自动布局警告和错误.首先,因为我为superview添加的约束和superview的空间与实际大小不匹配,我会得到一些警告:

在此输入图像描述

也将有描述失踪X和Y位置的一些错误redViewtextView.这里的错误实际上是必要的两倍. textView知道相对于哪里定位自己redView.我们不需要更多限制来整理其textView位置.但是,redView不知道在哪里定位自己......所以最终,textView还有一点并不完全清楚.

我们可以更新textView框架以消除警告,但让我们继续并修复实际错误.

第5步:设置redView相对于的约束superView. redView已经知道要大小.请注意,我们redView的宽度没有错误.它只是不知道在哪里.在这种情况下,我会简单地说我们想要redView集中.所以我们要添加这些约束:

在此输入图像描述

现在我们已经解决了一些问题.剩下的唯一问题是height一切.

要解决这个问题,我们必须设置内容大小优先级textView.将这些全部设置为1000并将"内部大小"属性更改为"占位符".

在此输入图像描述

到目前为止,所有的自动布局错误都应该消失,我们应该只留下警告,因为我们的故事板框架与我们的约束所说的不一致.

我们可以通过选择parentView和更新所有帧来解决这个问题:

在此输入图像描述在此输入图像描述

当涉及基于内容大小的自动调整时,这个自动布局难题有一个最后的警告:如果我们的文本视图没有内容会发生什么?

如果我们的textview没有内容,自动布局将选择0的高度,我们的用户甚至不能看到那里有文本视图,更不用说添加内容(并使其扩展).使用自动布局和基于内容的大小调整时,我们几乎应该始终确保为内容视图设置显式或最小大小.

我们不必担心textView宽度,因为我们将其明确设置为200.所以让我们添加一个最小高度约束.首先添加任何高度约束:

在此输入图像描述

现在转到尺寸检查器textView,找到我们添加的高度约束,并将其编辑为大于或等于约束:

在此输入图像描述

故事板不会反映我们内容的变化textView并适当调整大小,但您的约束现在已正确设置,这将在您的设备或模拟器中正常运行.


Pri*_*m51 1

ON UITextView 让你取消选择这些

  • 滚动启用
  • 弹跳
  • 水平弹跳
  • 垂直弹跳
  • 显示水平指示器
  • 显示垂直指示器

现在像这样更改您的自动布局约束。

在此输入图像描述

父视图的约束