SWIFT UI 画像の表示

ゲーム作成に画像は欠かせない。

jpgやpngで画像データを用意して、FinderからXCODEのAssets.xcassetesにドラッグ、

そうするとイメージのリストにファイル名拡張子なしで登録されるので、この名前を

VIEW  の Text("Hello") の代わりに Image("名前") で画像が表示される。

struct  view5: View {

    var body: some View {

    Image("ten")

    }

}

横に並べるならHStackを使って

struct  view5: View {

    var body: some View {

        HStack {

            Image("ten")

            Image("ten")

        }

    }

}

画像のサイズ調整は、

            Image("ten")

                .resizable()

                .frame(width: 100, height: 150)

とすれば、幅と高さを指定できる。

位置の調整は offset を使って

            Image("ten")

                .resizable()

                .frame(width: 100, height: 150)

            .offset(x: -50, y: 50)

このサイズやオフセットでしている値、変数にしても構わないけれど、Int や Double じゃだめで、CGFloat という型。

回転させる事もできる

                .rotationEffect(Angle(degrees: 10))

やっかいなのは画像の切り替え。

2つの切り替えだけならifが使える。

var flg: Bool = False

if flg {

   Image("ten")

}else{

   Image("nine")

}

複数の切り替えだと、Imageの引数の文字列を変える。

@State var str: String = "ten"

Image(str)

表示あり、なしの切り替えは、if を使うのだけれど

if flg {

     Image("ten")

}

だとflg==false で表示は消えるのだけれど、表示する画像がなくなるので、うまくやらないとレイアウトが崩れてしまう。

VStack{

    if flg {

        Image("ten")

    }

}.frame(width: 100, height: 150)

みたいにしておくと、表示する画像がなくてもVStackがframeのサイズを確保してくれる。

ここは実際に確認しないと、エラーになるかもしれない。