以编程方式快速添加约束

2024-01-03

I add a UILabel(金额标签)中UIViewController在故事板编辑器中。然后在快速文件中,viewDidLoad,我以编程方式创建一个UITextField( paymentTextField ) 并尝试在之间添加约束amountLabel and paymentTextField。这是我的代码viewDidload:

let paymentTextField = UITextField()
    paymentTextField.translatesAutoresizingMaskIntoConstraints = false
    paymentTextField.frame = CGRectMake(15, 100, CGRectGetWidth(self.view.frame) - 30, 44)
    self.view.addSubview(paymentTextField)

    let bottonConstraint = NSLayoutConstraint(item: paymentTextField, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self.amountLabel , attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 30)
    bottonConstraint.identifier = "paymentTextFieldSpacing"
    NSLayoutConstraint.activateConstraints([bottonConstraint])

但我收到一个错误:

“由于未捕获的异常‘NSGenericException’而终止应用程序, 原因:“无法激活项目 > 和 > 的约束,因为它们没有共同的祖先。 约束是否引用不同视图层次结构中的项目? 这是非法的。”

有谁知道出了什么问题吗?amountLabel直接拖动到情节提要中的视图,并以编程方式将“ paymentTextField”添加到同一视图。为什么他们没有共同的祖先?


我遇到了您之前描述的同样的问题。为了制作编程子视图(在您的例子中是 paymentTextField),您必须首先将其添加到子视图中,然后应用您的约束。

通过首先将子视图添加到视图中,这可以确保两个视图具有相同的父视图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式快速添加约束 的相关文章

随机推荐