iOS UIButtonの画像の比率を固定して拡縮する
English Version below
はじめに
UIButtonのサイズ変更に追随して、内部の画像サイズを変更したい場合の対処方法です。
解決方法
以下の3つのプロパティをセットすればOKです。
button.imageView?.contentMode = .scaleAspectFit button.contentHorizontalAlignment = .fill button.contentVerticalAlignment = .fill
contentHorizontalAlignment とcontentVerticalAlignment をセットしない場合、 画像はオリジナルのサイズまでしか拡大しませんので注意してください。
おそらく内部のimageViewがデフォルトではオリジナルサイズ(content size)までしか拡大しないようになっています。
したがって、contentHorizontalAlignment とcontentVerticalAlignmentをセットしてimageView自体をUIButtonのサイズまで拡大するようにします。
また、上記の方ではUIButtonいっぱいに画像が広がってしまいます。 角を丸めたりした場合、UIButtonよりも若干画像を小さくしたい場合は次のプロパティをセットしてください。
button.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10);
仮引数名の通り、上下左右にマージンを取ることができます。