質問: true ``` と設定しても画面上変わりません。 もしくは ``` seekBar.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 300) ``` としても同様です。 ・そもそも命令が違う ・AutoLayoutが効くタイミングはいつもではなく、あるタイミング(起動時のみなど)に限られている ・制限の概念を勘違いしている など想像していますが、何が原因で変更できないのかわかりません。 ご存知の方、ご教示お願いします。
回答: ``` seekBar.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 300).isActive = true ``` は、seekBarに新しい制約を作成して、その値を300に設定するコードになります。 Storyboardで設定した古い制約はまだ有効のままなので、二つの制約が矛盾した状態になってしまいます。おそらく矛盾を解消するために後から設定した制約が無視されているのでしょう。 (ログに制約がコンフリクトしていることが表示されていませんか?) Storyboardで設定した制約の値を変更したい場合は、変更したい制約をViewControllerなどにOutletで接続してプロパティで保持し、必要なタイミングで値の変更と、`layoutIfNeeded()`の呼び出しを行うのが良いでしょう。 ``` @IBOutlet weak var seekBar: UISlider! @IBOutlet weak var bottomConstaint: NSLayoutConstraint! ... func someMethod() { // 制約の値を変更する bottomConstaint.constant = 300 // 新しい制約の値でレイアウトする view.layoutIfNeeded() } ```