错误:线程 1:使用自动布局时"Impossible to set up layout with view hierarchy unprepared for constraint."



我的代码在下面,我不知道是什么使这个错误出现。一些想法?

Thread 1: "Impossible to set up layout with view hierarchy unprepared for constraint."
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
view.backgroundColor = .blue
lbl1values()
}




let lbl1 = UILabel()


func lbl1values(){
lbl1.addConstraint(NSLayoutConstraint(item: lbl1,
attribute: .leading,
relatedBy: .equal,
toItem: view,
attribute: .trailing,
multiplier: 1.0,
constant: 8.0))

lbl1.addConstraint(NSLayoutConstraint(item: lbl1,
attribute: .top,
relatedBy: .equal,
toItem: view,
attribute: .bottom,
multiplier: 1.0,
constant: -8.0))

view.addSubview(lbl1)
}
}

我已经尝试在'viewDidLoad()'之外调用'lbl1values()',但我得到了完全相同的错误。

这应该可以根据需要工作。在设置约束之前,您需要首先将视图添加为子视图。我在下面添加了一个清晰的例子。

你还应该在标签上设置translatesAutoresizingMaskIntoConstraints属性,这意味着系统不会创建一组复制视图的自动调整大小掩码指定的行为的约束。

private let label = UILabel(frame: CGRect())
override func viewDidLoad() {
view.backgroundColor = .blue
setUp(label: label)
view.addSubview(label)
setUpConstraints()
}
private func setUp(label: UILabel) {
label.translatesAutoresizingMaskIntoConstraints = false
}
private func setUpConstraints() {
NSLayoutConstraint.activate([
label.topAnchor.constraint(equalTo: view.topAnchor),
label.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 8),
label.trailingAnchor(equalTo: view.trailingAnchor, constant: -8),
label.bottomAnchor.constraint(equalTo: view.bottomAnchor),
])
}

相关内容

  • 没有找到相关文章

最新更新