SwiftUI настраивает LazyVGrid без пробелов

Я хотел создать сетку ячеек без пробелов или меньшего размера, как в приложении "Фотографии", возможно ли это с SwiftUI 2 LazyVGrid? Я пробовал, но между столбцами всегда есть пробел.

В документации spacing параметр описывается как:

интервал Расстояние между сеткой и следующим элементом в родительском виде.

Что не имеет особого смысла, ты не можешь просто использовать paddingдля этого? Кроме того, когда я попытался увеличить интервал, мне показалось, что это действительно влияет на пространство между рядами ячеек, что является еще более неожиданным.

1 ответ

Вы даете spacing: 0 в LazyVGrid для вертикального интервала и spacing: 0 в GridItem для шага по горизонтали.

Вот демо. Протестировано с Xcode 12 / iOS 14

struct TestImagesInGrid: View {
    @State private var imageNames: [String]

    private let threeColumnGrid = [
        GridItem(.flexible(minimum: 40), spacing: 0),
        GridItem(.flexible(minimum: 40), spacing: 0),
        GridItem(.flexible(minimum: 40), spacing: 0),
    ]

    init() {
        _imageNames = State(initialValue: (0..<8).map { _ in
            "image_\(Int.random(in: 1...3))"
        })
    }

    var body: some View {
        LazyVGrid(columns: threeColumnGrid, alignment: .leading, spacing: 0) {
            ForEach(imageNames.indices) { i in
                Image(imageNames[i]).resizable()
                    .aspectRatio(1, contentMode: .fill)
                    .border(Color.black)
            }
        }
    }
}
Другие вопросы по тегам