我允许用户在按下按钮时创建新的文本字段。我想以编程方式从现有文本字段中复制前导和尾随约束。我的代码:
@IBAction func addAnotherTextField(sender: AnyObject) {
let newTextField = UITextField.init(frame: CGRectMake(20, positionY, self.view.frame.size.width-40, 30))
newTextField.delegate = self
newTextField.tag = fieldCount
newTextField.placeholder = "You created this!"
newTextField.borderStyle = UITextBorderStyle.RoundedRect
newTextField.translatesAutoresizingMaskIntoConstraints = false
let leadingConstraint = NSLayoutConstraint(item: newTextField, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: nameTextField, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0)
let trailingConstraint = NSLayoutConstraint(item: newTextField, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: nameTextField, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0)
newTextField.addConstraint(leadingConstraint)
newTextField.addConstraint(trailingConstraint)
view.addSubview(newTextField)
fieldCount++
positionY = positionY + 15 + newTextField.frame.size.height
}
}
不幸的是,上面的代码在运行时崩溃了。
答案 0 :(得分:0)
首先需要添加子视图,然后才能添加约束。 您无法在不相关的UIView之间连接约束...
来自文档:
<强>讨论:强> 约束必须仅涉及接收视图范围内的视图。具体而言,涉及的任何视图必须是接收视图本身或接收视图的子视图。添加到视图的约束被认为由该视图保存。评估约束时使用的坐标系是保存约束的视图的坐标系。