1

グリッドを使用してSwiftUIでこのUIを複製しようとしています。

ここに画像の説明を入力

このようなセルを作成しました。

struct MenuButton: View {
    let title: String
    let icon: Image
    
    var body: some View {
        Button(action: {
            print(#function)
        }) {
            VStack {
                icon
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: 60, height: 60)
                Text(title)
                    .foregroundColor(.black)
                    .font(.system(size: 20, weight: .bold))
                    .multilineTextAlignment(.center)
                    .padding(.top, 10)
            }
        }
        .frame(width: 160, height: 160)
        .overlay(RoundedRectangle(cornerRadius: 10).stroke(Color.fr_primary, lineWidth: 0.6))
    }
}

そして、グリッドはそうです。

struct LoginUserTypeView: View {
    private let columns = [
        GridItem(.flexible(), spacing: 20),
        GridItem(.flexible(), spacing: 20)
    ]
    
    var body: some View {
        ScrollView {
            LazyVGrid(columns: columns, spacing: 30) {
                ForEach(Menu.UserType.allCases, id: \.self) { item in
                    MenuButton(title: item.description, icon: Image(item.icon))
                }
            }
            
            .padding(.horizontal)
            .padding()
        }
    }
}

しかし、iPod のような小さな画面では、セルが重なっています。

ここに画像の説明を入力

より大きな iPhone 画面では、依然として間隔が正しくありません。

ここに画像の説明を入力

すべての画面サイズで、セルが適切な正方形ですべての辺に等間隔で表示されるようにするには、どのような調整を行う必要がありますか?

4

1 に答える 1