如何让 UITextView 填满剩余的 space

How to make a UITextView fill up the remaining space

我有一个 UIButtonUITextField 并排如下。

我希望“添加”按钮的宽度仅基于内容。文本视图应占用 space 的其余部分。我有以下自动布局约束。

private func setupLayout() {
    newDeviceIdTextField.topAnchor.constraint(equalTo: deviceIdLabel.bottomAnchor, constant: 12).isActive = true
    newDeviceIdTextField.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 12).isActive = true

    newDeviceIdButton.topAnchor.constraint(equalTo: deviceIdLabel.bottomAnchor, constant: 12).isActive = true
    newDeviceIdButton.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -12).isActive = true
    newDeviceIdButton.leadingAnchor.constraint(equalTo: newDeviceIdTextField.trailingAnchor, constant: 0).isActive = true
}

this 文章中有一个部分我相信可以完全解决我的问题。但是我就是不明白。

我在这里错过了什么?

按钮会自动调整其宽度以适合其内容,文本字段和按钮都有自动高度。所以你想做的是微不足道的:

将文本字段的左侧固定在您想要的位置。

将按钮的右侧固定在您想要的位置。

将两者的顶部固定在您想要的位置。

将文本字段的右侧固定到按钮的左侧,并将该常量设置为较小的数字,例如 8。

您无需编写代码即可通过故事板执行此操作。我为这种 UI 做的是,

  1. 将文本字段的左侧固定在您想要的位置。

  2. 将按钮的右侧固定在您想要的位置。

  3. 将两者的顶部固定在您想要的位置。

  4. 将文本字段右侧固定到按钮左侧

如下图所示

现在 Select 按钮 > 大小检查器 > 在内容拥抱优先级中

将水平更改为 750(高),您就完成了:)

结果如下图所示