なんとかするから、なんとかなる

エンジニア関係のことを書きます

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);

仮引数名の通り、上下左右にマージンを取ることができます。

参考URL