スポンサーリンク
StackViewの「distribution」に「Fill」を指定する場合、配置する各 viewは自動で高さ、幅が調整されるが、このためにview同士が重なって見えなくなる現象が発生する。
それを解決するのが以下参考サイトにも記載のある「Hugging Priority」と「Compression Resistance Priority」という項目だが、Swiftからコーディングで設定する方法が見つからないので苦労した。
Swiftからコーディングで指定する方法は以下となる。
iconView.setContentHuggingPriority(60, forAxis: UILayoutConstraintAxis.Vertical) iconView.setContentHuggingPriority(60, forAxis: UILayoutConstraintAxis.Horizontal) iconView.setContentCompressionResistancePriority(60, forAxis: UILayoutConstraintAxis.Vertical) iconView.setContentCompressionResistancePriority(60, forAxis: UILayoutConstraintAxis.Horizontal)
setContentHuggingPriority:拡大限界値
setContentCompressionResistancePriority:縮小限界値
「setContentHuggingPriority」と「setContentCompressionResistancePriority」でそれぞれ指定する。
上記では拡大、縮小ともに縦・横60pxで固定する例。
引数は、どちらも第1引数が指定する値、第2引数が軸方向となる。
Stackviewに含めると画像サイズが変わってしまうViewに指定すると、うまく制御できるようになる。
スポンサーリンク
スポンサーリンク