【SwiftUI】写真をインスタグラムのようにおしゃれに並べる方法!グリッドデザインの最も簡単な実装方法を紹介します!

SwiftUI

今回は写真を簡単に綺麗に並べる方法を紹介します!

写真の表示方法はこちらの記事で詳しく説明していますので、是非参考にしてみてください。

グリッドデザインの実装方法

まずは最終的なコードを紹介します。

コピペして、画像を用意し、プレビューしていただければ、簡単に写真を綺麗に並べるグリッドデザインが表示されます。

struct ContentView: View {

    var imgArr = [
        "hamburger-1", "hamburger-2", "hamburger-3",
        "hamburger-4", "hamburger-5", "hamburger-6",
        "hamburger-7", "hamburger-8", "hamburger-9"
    ]
    var columns: [GridItem] = Array(repeating: .init(.flexible()), count: 3);

    var body: some View {
        VStack {
            Spacer()
            LazyVGrid(columns: columns) {
                ForEach(imgArr, id: \.self) { img in
                    ZStack(alignment: .topLeading) {
                        Image("\(img)")
                            .resizable()
                            .aspectRatio(contentMode: .fill)
                            .frame(
                                width: UIScreen.main.bounds.size.width / 3 - 10,
                                height: UIScreen.main.bounds.size.width / 3 - 10
                            )
                            .clipped()
                        VStack {
                            Spacer()
                            HStack {
                                Spacer()
                                Text("\(img)")
                                    .font(.body)
                                    .foregroundColor(.white)
                                    .bold()
                                Spacer()
                            }
                            Spacer()
                        }
                    }
                }
            }
            .padding(.horizontal, 10)
            Spacer()
        }
    }
}

画像の名前を配列に格納して呼び出す

var imgArrに画像名を配列に入れています。

単純な文字列の配列として定義しています。

この配列を後程ループ処理にかけて、1枚ずつ写真を表示していきます。

SwiftUIでのグリッドデザイン実装

実際にグリッドデザインを表示しているのは、LazyVGrid(columns: columns)の部分です。

そして、このLazyVGridの引数として渡すのが、var columns: [GridItem] = Array(repeating: .init(.flexible()), count: 3);です。

columnsには、繰り返しの回数と、横一列に、いくつの要素を表示するか指定します。

繰り返し回数のrepeatingには、.init(.flexible)を入れることで、変更可能なようにしてあります。

LazyVGridの中でループ処理を行うため、そのループの回数に合わせて繰り返し回数が変わるイメージです。

横一列の要素の数を指定するcountには今回は3を指定しています。

配列のループ処理を使った画像の表示

ForEach(imgArr, id: \.self) { img in
    Image("\(img)")
}

簡単にするために他の要素を全て省くとこちらのコードで、画像名が入った配列を繰り返し処理しながら、画像を表示することができます。

imgArrには画像の名前が配列として格納されています。

それをForEachで回して、一つ一つをImage()の引数に文字列として渡すことで、画像を表示することができます。

まとめ

今回は画像をグリッドデザインで簡単に綺麗に表示する方法を紹介しました!

どうでしたか?

意外と簡単ではなかったでしょうか?

画像のクリップや切り取り方などのデザインはこちらでも紹介していますので、是非参考にしていただき、よりグリッドデザインの見た目をよくしていただければと思います!

SwiftUI勉強中の方へ

SwiftUIのプログラミングを独学で勉強している人にはこちらの書籍もおすすめです!

基礎からしっかり学びたい方はスクールもおすすめです!

無料体験もあるため、気軽に申し込むのもありです。

コメント

タイトルとURLをコピーしました