btn.setTitle("mybtn",for: .normal) btn.setTitlecolor(UIcolor.blue,for: .normal) btn.backgroundcolor = UIcolor.lightGray vIEw.addSubvIEw(btn) btn.translatesautoresizingMaskIntoConstraints = false let left = NSLayoutConstraint(item: btn,attribute: .leftmargin,relatedBy: .equal,toItem: vIEw,multiplIEr: 1.0,constant: 0) let right = NSLayoutConstraint(item: btn,attribute: .rightmargin,constant: 0) let top = NSLayoutConstraint(item: btn,attribute: .top,toItem: topLayoutGuIDe,attribute: .bottom,constant: 0) btn.addConstraints([left,right,top])解决方法 当 adding constraints到视图时,“[约束]中涉及的任何视图必须是接收视图本身或接收视图的子视图”.你将约束添加到btn,因此它不理解约束引用的视图,因为它既不是btn也不是btn的子视图.如果您向视图添加约束而不是btn,则会解决该错误.
或者甚至更好,正如KhalID所说,使用activate代替,在这种情况下,您无需担心视图层次结构中添加约束的位置:
let btn = UIbutton(type: .system)btn.setTitle("mybtn",for: .normal)btn.setTitlecolor(.blue,for: .normal)btn.backgroundcolor = .lightGrayvIEw.addSubvIEw(btn)btn.translatesautoresizingMaskIntoConstraints = falseNSLayoutConstraint.activate([ btn.leftAnchor.constraint(equalTo: vIEw.leftAnchor),btn.rightAnchor.constraint(equalTo: vIEw.rightAnchor),btn.topAnchor.constraint(equalTo: topLayoutGuIDe.bottomAnchor)])总结
以上是内存溢出为你收集整理的ios – “视图层次结构没有为约束准备”错误Swift 3全部内容,希望文章能够帮你解决ios – “视图层次结构没有为约束准备”错误Swift 3所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)