現役プログラマのプログラミング教室@岡崎市康生, Android/iOS(Swift/Kotlin)のアプリ開発、デジタル漫画制作を主軸事業としています。

Swift(iOS)でド忘れシリーズAutoLayoutのContent PriorityとsetNeeds○○

久しぶりにAndroidからiOSの開発にもどると

あれ?なんだっけとなるシリーズ。

AutoLayoutで苦悩するときに必須

iPhoneと言えど他機種になって必須になったAutoLayout。

これを活用しないと、修正地獄でジリ貧になっていきます、、、

けど、使い方を誤っても手がつけられない地獄がまっていますw

そのあたりは正直Androidのが素直でやりやすい。

地獄にいかないために覚えておくのはこれだけ。

Content Hugging Priority

対象のViewがルートViewより小さいパターンの制御で設定。

いくつかあるViewの余白の制御。

Priorityの低い方が大きくなり余白をつくってViewを埋めます。

うまくいかないときは、変えたくないViewのPriorityをrequireにします。

Content Compression Resistance Priority

対象のViewがルートViewよりはみ出て大きくなる可能性があるパターンの制御。 

低い方が縮むので、なるべく長くみせたいViewではないViewを低く設定。

再描画が必要なときに悩むやつ!

setNeedsDisplay

Viewに再描画が必要だというフラグを設定しておく。再描画の実行は 別のタイミング 。

setNeedsLayout

Viewをルートとしたサブビュー全てに再描画が必要だというフラグを設定しておく。再描画の実行は 別のタイミング 。

layoutIfNeeded

この処理を呼ばれたViewとサブViewに対して、画面更新の必要が必要であれば、 即座にすべて再描画更新します。ただしMain Threadである必要があります。