โœจNColumns

SwiftUI โŸฉ Layout โŸฉ LazyGrids โŸฉ example โŸฉ

โฌ†๏ธ ้œ€่ฆ๏ผš .watermark()

// ๐ŸŒ€ usage: `GridItem() * 5`
extension GridItem {
    static func * (item: GridItem, n: Int) -> [GridItem] {
        Array(repeating: item, count: n)
    }
}

struct ContentView: View {
    
    // โญ as many columns as possible
    let adaptiveColumns = [
        GridItem(.adaptive(minimum: 80))
    ]
    
    // โญ 5 columns (flexible)
    let nColumns = GridItem(.flexible()) * 5    // ๐ŸŒ€ GridItem extension
    
    // โญ first column width fixed
    let firstColFixed = [
        GridItem(.fixed(100)),
        GridItem(.flexible()),
    ]
    
    var body: some View {
        VStack {
            HStack {
                NColumns(columns: firstColFixed)
                    // ๐ŸŒ€ View + .watermark()
                    .watermark(fgColor: .black, bgColor: .gray){ 
                        Text("first column fixed") 
                    }
                NColumns(columns: nColumns)
                    .watermark(fgColor: .black, bgColor: .gray){ 
                        Text("5 columns") 
                    }
            }
            NColumns(columns: adaptiveColumns)
                .watermark(fgColor: .black, bgColor: .gray){ 
                    Text("adaptive") 
                }
        }
    }
}

Last updated