Image

Imageを表示させるには以下のようにAssetにある文字列を渡してやることで表示することができます

struct ContentView: View {
    var body: some View {
        Image("sample")
    }
}

Resizable

画像の大きさを任意の値にしたい時frameをつけただけでは画像サイズが変更されず画像そのもののサイズで表示されてしまいます。

Image("sample").frame(width: 100, height: 100)

ImageViewのサイズを可変にするにはresizableというView修飾子をつける必要があります

struct ContentView: View {
    var body: some View {
        Image("sample")
            .resizable()
            .frame(width: 100, height: 100)
    }
}

AspectRatio

AspectRatioにはfitとfillが存在しfitは縦横の大きい方に合わせて表示、fitは縦横の小さい方に合わせてはみ出さないように表示します。

struct ContentView: View {
    var body: some View {
        VStack {
            Image("sample")
                .resizable()
                .aspectRatio(contentMode: .fill)
                .frame(width: 50, height: 100)
            Image("sample")
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(width: 50, height: 100)
        }
    }
}

RenderingMode

UIKItではボタンに画像を設定する際などによく使用したメソッドだと思いますが動きは同じです。

renderingModeがtemplateでforegroundColorが指定されている時は画像がその色に塗り潰されます。

struct ContentView: View {
    var body: some View {
        HStack {
            Image("sample")
                .resizable()
                .renderingMode(.template)
                .frame(width: 100, height: 100)
            Image("sample")
                .resizable()
                .renderingMode(.template)
                .foregroundColor(.pink)
                .frame(width: 100, height: 100)
            Image("sample")
                .resizable()
                .renderingMode(.original)
                .frame(width: 100, height: 100)
        }
    }
}
SwiftUI

前の記事

Text
Swift

次の記事

AdMobで広告を追加する