EDIT - 修正しました。答えを参照してください。Swift - Xcode 8 - iOS 10 - 単純な制約を作成できません。
私はプログラムで制約を作成する方法を学ぼうとしています。私はviewDidLoad
で、このコードを使用して、画面の上部にUILabel
を制限しようとした:
override func viewDidLoad() {
super.viewDidLoad()
//the variable label already exists. I make a UILabel.
label = UILabel()
label.text = "Hello"
label.backgroundColor = UIColor(red: 1, green: 1, blue: 0, alpha: 1)
//I add the label to the ViewController
view.addSubview(label)
//I use an array of constraints because I will make more later.
let constraints : [NSLayoutConstraint] = [
NSLayoutConstraint(item: label, attribute: .top, relatedBy: .equal, toItem: topLayoutGuide, attribute: .bottom, multiplier: 1.0, constant: 0.0)
]
view.addConstraints(constraints)
}
私は私のアプリを実行すると、私が始まるエラーを取得:
[LayoutConstraints]ができません。同時に制約を満足させる。
制約のために私の意図式ました:
label.top = 1.0 * topLayoutGuide.bottom + 0.0
を私はInterface Builderのと同じ制約であるように思わ何を作成し、それ働いた。しかし、私はそれをプログラム的にしようとすると、それはしません。私がやっていることで何が問題なのですか?NSLayoutConstraint
を使ってプログラムで制約を作成すると、ラベルをステータスバーのすぐ下の画面の上に固定しますか?
私の情報源:
Apple - Anatomy of a Constraint
Apple - Programmatically creating Constraints
StackOverflow - SWIFT | Adding constraints programmatically
あなたがプログラム的な制約をたくさんお持ちの場合は、SnapKitやその他のAutoLayoutフレームワークをチェックして、100万回の作業を簡単にしてください。 – brandonscript
@brandonscript私は知っている、と私はむしろIBまたは何かを使用するが、私はそれをプログラム的に行う方法を理解したい。 – ostrichofevil