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

自动布局 UITextfield

Swift:在自动格式化 UITextField 后动画 UIButton

UIImageView .scaleAspectFit 和自动布局不能从 Swift 以编程方式工作

UITableViewCell 中的 UITextField 使用自动布局