Swift UITextField:在自动布局中创建一个动态减小的 UITextField 框架
Posted
技术标签:
【中文标题】Swift UITextField:在自动布局中创建一个动态减小的 UITextField 框架【英文标题】:Swift UITextField: Create a dynamically decrease UITextField Frame in autolayout 【发布时间】:2018-11-11 08:45:27 【问题描述】:我在 UITableView 中使用自定义单元格。细胞的基本模型如下。
我希望虚线根据此单元格中菜单名称框的大小动态变形。于是我写了如下代码:
menuField.frame.size.width = getWidth(text: menuField.text!)
menuField.layoutIfNeeded()
dotLine.layoutIfNeeded()
func getWidth(text: String) -> CGFloat
let txtField = UITextField(frame: .zero)
txtField.text = text
txtField.sizeToFit()
return txtField.frame.size.width
这非常有效。只增只当!如果菜单名称框缩小到当前设置的大小以下,则大小保持不变。
从上图可以看出,我不仅要增大虚线的大小,还要缩小虚线的大小。我不知道我的问题是什么。请帮帮我!
【问题讨论】:
你想每次都有相同数量的点吗? 没有。点数无关紧要。点数无关紧要。我只需要保持菜单文本框和虚线之间的距离不变。:) 【参考方案1】:您不需要编写任何代码,自动布局会为您完成。只需像这样设置自动布局:
Dash 是你的价值的约束
- MenuTextField - 虚线 - 价格 -
【讨论】:
真的很抱歉。我的问题似乎放错了地方。我希望菜单文本框和虚线之间的间距保持不变。【参考方案2】:我已经解决了我的问题。首先,我添加了菜单文本框的宽度尺寸约束,并将其导入到 IBOutlet 变量中。
@IBOutlet weak var menuWidth: NSLayoutConstraint!
并且我根据文本长度改变了变量的值。
menuWidth.constant = getWidth(text: menuField.text!)
此方法尚未完全正常运行。但它按我想要的方式工作。
还要感谢回答我的 Robert Dresler :) 谢谢!
【讨论】:
以上是关于Swift UITextField:在自动布局中创建一个动态减小的 UITextField 框架的主要内容,如果未能解决你的问题,请参考以下文章
swift 验证失败时,在 UITextField 中自动显示错误图标
如何在 Swift 中自动移动到下一个 UITextField
Swift:在自动格式化 UITextField 后动画 UIButton