import SwiftUI public struct Tile: View { let design: TileDesign var pixelSize: CGFloat = 2.0; var foregroundColor: Color = .black var backgroundColor: Color = .white private var pixels: [Int] { design.pixels() } public var body: some View { VStack(spacing: 0) { ForEach(0 ..< 8) { i in HStack(spacing: 0) { ForEach(0 ..< 8) { j in Rectangle() .frame(width: pixelSize, height: pixelSize) .foregroundColor(pixels[(i % 8) * 8 + j % 8] == 0 ? foregroundColor : backgroundColor ) } } } } } } struct Tile_Previews: PreviewProvider { static var previews: some View { VStack { Text("Default") Tile(design: .grid) Text("Color override") Tile(design: .balls, foregroundColor: .pink, backgroundColor: .cyan) Text("Pixel size override") Tile(design: .shingles, pixelSize: 8.0) } } }