【发布时间】:2016-12-16 15:30:26
【问题描述】:
我有一个UITextField,旁边有一个标签,上面写着“米”。这个想法是您可以在文本字段中输入一个数字,然后“仪表”一词将显示在它旁边。文本字段没有边框,因此当您不编辑文本字段时,它看起来就像一行文本。
为此,我需要将文本字段的宽度设为文本的宽度。因此,它需要在您键入时变得更宽。但是,这不会在您键入时发生。但是,如果您旋转设备,尺寸会根据内容进行调整。所以基本上我需要在你旋转时触发任何触发器以获得我想要的。
我在UIControlEvents.editingChanged 方法中尝试了很多东西,例如setNeedsLayout、setNeedsDisplay、layoutSubViews()、setNeedsUpdateConstraints(),但没有运气。
另一种方法是使用sizeToFit(),然后将frame.size.width 设置为文本字段的宽度约束。这确实有效,但仅在您第一次编辑时。当您第二次编辑时,sizeToFit() 总是以某种方式返回相同的结果。
有什么想法吗?
更新:我最终使用了不同的方法。我将文本字段设置为全宽,并将仪表标签放在其顶部。当您键入时,它会计算文本的宽度,并且仪表标签会通过更改左侧约束常数相应地向右移动。这样标签总是紧挨着输入的数字。
我仍然没有找到一种方法可以在您键入时更改文本字段的宽度而不会造成所有错误,但我真的不再需要它了。
【问题讨论】:
-
请检查stackoverflow.com/questions/18236661/… 我认为这是同一个问题。
标签: ios swift storyboard uitextfield