我正在尝试构建一个自定义 UITextField,它在文本字段下方内嵌显示验证错误,类似于材料设计。当我出现错误时,我懒惰地添加 UILabel 并限制到文本字段
private lazy var errorLabel: UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 14, weight: .bold)
label.textColor = errorColor
label.numberOfLines = 0
label.isHidden = true
return label
}()
open override func didMoveToSuperview() {
super.didMoveToSuperview()
// Make sure that errorLabel is added once to the superview, not to the text field itself
if let superview = superview, errorLabel.superview == nil {
superview.addSubview(errorLabel)
configureErrorLabelConstraints()
}
}
private func configureErrorLabelConstraints() {
errorLabel.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
errorLabel.topAnchor.constraint(equalTo: self.bottomAnchor, constant: 5),
errorLabel.leadingAnchor.constraint(equalTo: self.leadingAnchor),
errorLabel.trailingAnchor.constraint(equalTo: self.trailingAnchor)
])
public func showInlineValidationError(message: String) {
errorLabel.textColor = errorColor
layer.borderColor = errorColor.cgColor
errorLabel.text = message
errorLabel.isHidden = false
}
public func hideInlineValidationError() {
layer.borderColor = borderColor.cgColor
errorLabel.isHidden = true
}
}
这一切都很好。我的问题是,假设我有一个 UIImage 限制在自定义文本字段下方 12 点处,当显示标签时,它不会将图像向下移动标签高度,而是减少两者之间的空间。我想要的是,如果显示标签,文本字段和图像之间的约束将增加标签占用的额外高度。我该怎么办?人工智能对我在这里能做的事情一点帮助都没有。
如果第三方库足够基础,我对它持开放态度。我只需要一个带有圆角的基本 UITextfield 和下面的错误标签可以支持我的高度变化要求