画像を表示させるImageビューはデフォルトだと元画像と同じサイズで表示されるが、resizableモディファイアを追加することで、利用可能なスペースに合わせて画像サイズを変更することができる。

フレームサイズに合わせてリサイズ

それでは例を見ていこう。

まずは単純に縦横のサイズを指定したフレームに合わせて、画像をリサイズする例。

Image("face_icon")
    .resizable()
    .frame(width: 300.0, height: 120.0)

縦横比は歪んでしまうが、フレームに合わせて画像が伸縮していることが分かる。

縦横比を維持させる二つのモディファイア

scaledToFitモディファイア

縦横比を維持しながら、ビューサイズぴったりに合わせたい場合に使うモディファイア。

Image("face_icon")
    .resizable()
    .scaledToFit()
    .frame(width: 300.0, height: 120.0)

scaledToFillモディファイア

縦横比を維持しながら、縦横のいずれかがビューサイズいっぱいになるよう調整される。

Image("face_icon")
    .resizable()
    .scaledToFill()
    .frame(width: 300.0, height: 120.0)