【发布时间】:2018-05-21 18:17:55
【问题描述】:
我想在底部创建带有错误标签的自定义 UITextField。我希望标签是多行的,我试过numberOfLines = 0。但它不起作用。
这是我的班级的sn-p
public class MyTextField: UITextField {
private let helperTextLabel: UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 12.0, weight: UIFont.Weight.regular)
label.textColor = helperTextColor
label.numberOfLines = 0
return label
}()
public override init(frame: CGRect) {
super.init(frame: frame)
self.addSubview(errorTextLabel)
}
public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.addSubview(errorTextLabel)
}
public override func layoutSubviews() {
super.layoutSubviews()
errorTextLabel.frame = CGRect(x: bounds.minX, y: bounds.maxY - 20, width: bounds.width, height: 20)
}
public override var intrinsicContentSize: CGSize {
return CGSize(width: 240.0, height: 68.0)
}
public override func sizeThatFits(_ size: CGSize) -> CGSize {
return intrinsicContentSize
}
}
我认为根本原因是因为我将高度设置为 20,但是如何根据errorTextLabel.text 值动态设置高度?
【问题讨论】:
-
使用
label.sizeToFit()并尝试一次 -
我试过了,还是不行。仍然被截断,只有 1 行。我认为将标签高度硬编码为 20 或将文本字段高度硬编码为 68 的代码存在问题?
-
添加这个并检查
label.lineBreakMode = .byWordWrap -
还是不行,还是只显示1行。
-
你为什么不用自动布局?
标签: ios swift uitextfield