如何设置 UITextField 宽度约束为某个字符串留出空间

Posted

技术标签:

【中文标题】如何设置 UITextField 宽度约束为某个字符串留出空间【英文标题】:How to set UITextField width constraint to have room for a certain string 【发布时间】:2018-08-03 16:25:58 【问题描述】:

我有一个UITextField,它将显示 0 到 1.0 之间的浮点值,小数点后有 3 位数字。因此,它将显示的最宽文本类似于“0.000”。我想设置自动布局宽度约束,以便文本字段始终有足够的空间来显示此值。

下面的代码很接近,但是工作。

let biggestString = "0.000"
let textAttrs = [NSAttributedStringKey.font: myField.font]
let size = (biggestString as NSString).size(withAttributes: textAttrs)
myField.widthAnchor.constraint(equalToConstant: size.width).isActive = true

它最终显示“1.0 ...”我猜这是因为UITextField 在文本周围有某种填充,所以我需要将宽度设置为字符串宽度+填充。但是,我没有看到可以从中读取此填充量的属性。有没有办法得到它?

【问题讨论】:

【参考方案1】:

尝试搜索“intrinsicContentSize”。根据文档,这是必须设置的内容以向自动布局指示内容的大小。

还有一个更详细的讨论,如果布局设置不允许调整大小,这实际上是如何实现的,请在此处查看其他问题:

How to increase width of textfield according to typed text?

【讨论】:

以上是关于如何设置 UITextField 宽度约束为某个字符串留出空间的主要内容,如果未能解决你的问题,请参考以下文章

如何设置约束,以使视图的宽度至少等于某个宽度时为0

防止 UITextField 在键入时更改宽度

宽度约束动画时UITextfield文本位置没有动画

自动调整大小时 UITextField 字体粗细变化

如何使用自动布局“项目格式约束”为 UIViews 设置相等的宽度

iOS:如何在代码中的表格单元格中为文本字段添加约束