Swift UITextField:在自动布局中创建一个动态减少的 UITextField Frame
Swift UITextField: Create a dynamically decrease UITextField Frame in autolayout
我在 UITableView 中使用自定义单元格。而cell的基本模型如下
我想让虚线根据此单元格中“菜单名称”框的大小动态变形。所以我写了下面的代码:
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
}
这很有效。只增不减!如果菜单名称框缩小到当前设置的大小以下,大小将保持不变。
从上图可以看出,我不仅要让虚线的尺寸变大,还要变小。我不知道我的问题是什么。请帮助我!
您不需要编写任何代码,自动版式会为您完成。像这样设置自动布局:
Dash 受您的值限制
- MenuTextField - 虚线 - 价格 -
我的问题已经解决了。首先,我添加了Menu Text Box的宽度尺寸约束,并导入到IBOutlet变量中。
@IBOutlet weak var menuWidth: NSLayoutConstraint!
并且我根据文本长度更改了变量的值。
menuWidth.constant = getWidth(text: menuField.text!)
此方法尚未完全发挥作用。但它按我想要的方式工作。
还要感谢回答我问题的 Robert Dresler :) 谢谢!
我在 UITableView 中使用自定义单元格。而cell的基本模型如下
我想让虚线根据此单元格中“菜单名称”框的大小动态变形。所以我写了下面的代码:
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
}
这很有效。只增不减!如果菜单名称框缩小到当前设置的大小以下,大小将保持不变。
从上图可以看出,我不仅要让虚线的尺寸变大,还要变小。我不知道我的问题是什么。请帮助我!
您不需要编写任何代码,自动版式会为您完成。像这样设置自动布局:
Dash 受您的值限制
- MenuTextField - 虚线 - 价格 -
我的问题已经解决了。首先,我添加了Menu Text Box的宽度尺寸约束,并导入到IBOutlet变量中。
@IBOutlet weak var menuWidth: NSLayoutConstraint!
并且我根据文本长度更改了变量的值。
menuWidth.constant = getWidth(text: menuField.text!)
此方法尚未完全发挥作用。但它按我想要的方式工作。
还要感谢回答我问题的 Robert Dresler :) 谢谢!