label
に制約をつけて初期表示位置を左側にして、UISwitch
で左右の位置を変更しているのですが、darkMode
⇔lightMode
の変更が入ると、label
が初期設定の位置に戻ってしまいます(左にある場合に初期位置の右にもどる)
外観モードが変更された際に
updateViewConstraints()
が呼ばれてStoryboard
上でinstalled
にされているlabelLeftConstraint
が読み込まれるためだと思いますが、
外観モードが変更されてもlabelが現在位置を保つ方法はないでしょうか?
Storyboard上で片方の制約をinstalled
にして、もう片方の制約のinstalled
を解除している初期設定方法がまずいのでしょうか?
swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var labelLeftConstraint : NSLayoutConstraint! 6 @IBOutlet weak var labelRightConstraint: NSLayoutConstraint! 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 } 11 12 @IBAction func changeLabelPosition(_ sender: Any) { 13 14 if labelLeftConstraint.isActive { 15 labelLeftConstraint.isActive = false 16 labelRightConstraint.isActive = true 17 } else { 18 labelRightConstraint.isActive = false 19 labelLeftConstraint.isActive = true 20 } 21 } 22 23}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。