iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – “视图层次结构没有为约束准备”错误Swift 3大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试添加一个按钮并以编程方式设置约束,但我一直收到此错误,无法弄清楚我的代码有什么问题.我在这里看了其他问题但是在我的情况下它们并没有太大帮助. btn.settitle("mybtn", for: .normal) btn.settitleColor(UIColor.blue, for: .normal) btn.BACkgroundColor = UIColor.ligh
我正在尝试添加一个按钮并以编程方式设置约束,但我一直收到此错误,无法弄清楚我的代码有什么问题.我在这里看了其他问题但是在我的情况下它们并没有太大帮助.

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 = .lightGray
view.addSubview(btn)
btn.translatesAutoresizingMaskIntoConsTraints = false

NSLayoutConsTraint.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所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。