如何使 UITextView 填满剩余空间
Posted
技术标签:
【中文标题】如何使 UITextView 填满剩余空间【英文标题】:How to make a UITextView fill up the remaining space 【发布时间】:2018-12-18 05:02:51 【问题描述】:我有一个 UIButton
和 UITextField
并排如下。
我希望添加按钮仅具有基于内容的宽度。文本视图将占据其余空间。我有以下自动布局约束。
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 填满剩余空间的主要内容,如果未能解决你的问题,请参考以下文章