【发布时间】:2018-02-23 12:42:57
【问题描述】:
我正在创建一个将图像添加到 UITextField 的 leftView 的函数,下面是我尝试过的代码。
func setLeftImageWithColor(image:UIImage, color:UIColor, textField:UITextField) {
let imageView = UIImageView(image: image)
imageView.backgroundColor = color
imageView.contentMode = UIViewContentMode.center
textField.leftView = imageView
textField.leftViewMode = UITextFieldViewMode.always
let leadingConstraint = NSLayoutConstraint(item: imageView, attribute: NSLayoutAttribute.leadingMargin, relatedBy: NSLayoutRelation.equal, toItem: txtUsername, attribute: NSLayoutAttribute.leadingMargin, multiplier: 1, constant: 0)
let topConstraint = NSLayoutConstraint(item: imageView, attribute: NSLayoutAttribute.topMargin, relatedBy: NSLayoutRelation.equal, toItem: txtUsername, attribute: NSLayoutAttribute.topMargin, multiplier: 1, constant: 0)
let bottomConstraint = NSLayoutConstraint(item: imageView, attribute: NSLayoutAttribute.bottomMargin, relatedBy: NSLayoutRelation.equal, toItem: txtUsername, attribute: NSLayoutAttribute.topMargin, multiplier: 1, constant: 0)
let aspectRatioConstraint = NSLayoutConstraint(item: imageView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: imageView, attribute: NSLayoutAttribute.width, multiplier: (txtUsername.frame.size.height / txtUsername.frame.size.width), constant: 0)
NSLayoutConstraint.activate([leadingConstraint, topConstraint, bottomConstraint, aspectRatioConstraint])
}
报错
由于未捕获的异常“NSGenericException”而终止应用程序, 原因:'无法使用锚激活约束 和 因为他们没有 共同祖先。约束或其锚点是否引用项目 在不同的视图层次结构中?这是非法的。'
如果我不添加任何约束,那么视图是这样的
这就是我想要实现的形象
【问题讨论】:
-
你试过textfield附件视图吗?
-
尝试将
NSLayoutConstraint(item: imageView, ...更改为NSLayoutConstraint(item: textField.leftView, ...
标签: ios swift uitextfield nslayoutconstraint