プログラムで単純なレイアウトを実行しようとしていますが、単純なものが欠けているか、何かがずれていると思います。次の ViewController は、ラベルをスーパー ビューの中央に配置する必要があります。ただし、このトリミングされたメッセージでクラッシュします:The view hierarchy is not prepared for the constraint ... When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled... View not found in container hierarchy: ... That view's superview: NO SUPERVIEW
このエラーメッセージを伴う他のSOの質問は、ほとんどの部分でペン先を使用しています。私はそれを避けるか、Obj-C
代わりにswift
. この質問はトピックを少し扱っていますが、少し古いです。
誰かが私を正しい方向に向けることができますか?
class ViewController: UIViewController {
let label1 = UILabel() as UILabel
func layoutView(){
label1.text = "Click to see device configuration"
label1.setTranslatesAutoresizingMaskIntoConstraints(false)
view.addSubview(label1)
let viewsDictionary = ["label1":label1]
let label1_H:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("H:|-[label1]-|",
options: NSLayoutFormatOptions(0),
metrics: nil,
views: viewsDictionary)
let label1_V:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:|-[label1]-|",
options: NSLayoutFormatOptions(0),
metrics: nil, views:
viewsDictionary)
label1.addConstraints(label1_H) // Comment these 2 lines and it runs, but
label1.addConstraints(label1_V) // of course the label is upper left
}
override func viewDidLoad() {
super.viewDidLoad()
layoutView()
}
}