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 :) 谢谢!