如何使 UITextView 填满剩余空间

Posted

技术标签:

【中文标题】如何使 UITextView 填满剩余空间【英文标题】:How to make a UITextView fill up the remaining space 【发布时间】:2018-12-18 05:02:51 【问题描述】:

我有一个 UIButtonUITextField 并排如下。

我希望添加按钮仅具有基于内容的宽度。文本视图将占据其余空间。我有以下自动布局约束。

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 文章中有一个部分,我相信它可以完全解决我的问题。但我就是不明白怎么做。

我在这里错过了什么?

【问题讨论】:

看起来更像一个 UITextField。是吗?有很大的不同......还有哪里你想要按钮的右侧? 好点。对。我没有更新变量名。真丢人。我更新了帖子。 @matt 按钮的右侧应位于父视图的右侧。所以基本上,按钮在右边,并且有一个基于标题的宽度。文本字段应占据其余的水平空间。 【参考方案1】:

按钮会自动调整其宽度以适应其内容,并且文本字段和按钮都具有自动高度。所以你想做的很简单:

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

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

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

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

【讨论】:

好的。现在可以了。唯一改变的是我删除了最后一行,基本上按照你说的把它转过来了。但我不明白现在有什么不同。有一次我说按钮的前导锚是文本字段的尾随锚(不起作用)。另一次我说文本字段的尾随锚点是按钮的前导锚点(有效)。这不一样吗? 不,不是。现在我明白了。谢谢。 不,它们是相反的。对于不起作用的那个,我认为如果你提供一个负常数,它会起作用,但我没有坐在电脑前,所以我无法测试。 :)【参考方案2】:

您无需编写代码即可从情节提要中执行此操作。我为这种用户界面所做的是,

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

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

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

    将文本字段的右侧固定在按钮的左侧

如下图所示

现在选择按钮>尺寸检查器>在内容拥抱优先级

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

结果如下图所示

【讨论】:

感谢您的建议。我宁愿使用代码,因为故事板/xib(或多或少)是人类un可读的。另外,我不喜欢改变内容拥抱优先级的想法,因为我还不明白这会对屏幕的其余部分产生什么影响。还在学习:)

以上是关于如何使 UITextView 填满剩余空间的主要内容,如果未能解决你的问题,请参考以下文章

【转】CSS实现div的高度填满剩余空间

使一个 div 填充剩余屏幕空间的高度

使一个 div 填充剩余屏幕空间的高度

使一个 div 填充剩余屏幕空间的高度

div填满页面剩余空间的方法

CSS实现div的高度填满剩余空间