首页 > 解决方案 > 如何设置 UITextField 宽度约束为某个字符串留出空间

问题描述

我有一个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 ...”我猜这是因为aUITextField在文本周围有某种填充,所以我需要将宽度设置为字符串宽度+填充。但是,我没有看到可以从中读取此填充量的属性。有没有办法得到它?

标签: iosautolayoutuitextfield

解决方案


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

如果布局设置不允许调整大小,还有一个更详细的讨论如何实际执行,请参阅此处的其他问题:

如何根据键入的文本增加文本字段的宽度?


推荐阅读