今回は特殊なトルツメ(Viewを消して空白を詰めること)について紹介したいです。
androidでいうところのView.GONEがないようなので。
ちょっとばかりコアなのですが、aspect ratioでwidthからheightを動的に設定している場合を想定してください。
通常、トルツメをする際は消したいViewのheightに関する制約をドラッグしてきて
hogeHeightConstraint.constant = 0
これだけです。
調べたら大体この方法が出てくるかなと思います。
が、aspect ratioの場合はどうしたら。。。
width:height = 1:0にしちゃえばいいのかなと、とりあえず制約をドラッグしてみますがうまくいじれませんでした。
これのいじり方を知ってる方は教えてください。
というわけで別のちょっとテクニカルな方法をとりました。
priority
こんなものがあったなとふと脳裏をよぎりました。
プライオリティー
まんま、優先、ですね。優先席はプライオリティーシートなんて言いますが、それです。
これの利用方法ですが
①height = 0 の制約のpriorityを低めに設定
②widthとheightのaspect ratioの制約のpriorityを中くらいに設定(①の制約よりこちらが優先されるため、今のところ①の制約は無効)
③トルツメしたいタイミングで、height = 0の制約(①の制約)のpriorityを高めに設定し直す(これにより②の制約が無視される)
③のコードですが
hogeHeightConstraint.priority = UILayoutPriority(rawValue: 500)
こんな感じです
これは優先度500です
ストーリーボードなどで①の制約のpriorityを100、②のアスペクト比のpriorityを300などに設定しておいてください。
ちょっとテクニカルですが参考にしてくれたら嬉しいです。