既存 View の 背景色。
分からないときありません ?
白なのか、グレーなのか、
透過しているのか、マテリアル的なやつなのか。
🏁 市松模様 Checkered Pattern
作っておきます。
struct CheckeredPattern: View {
var size: CGFloat
var body: some View {
GeometryReader { gr in
Grid(horizontalSpacing: 0, verticalSpacing: 0) {
ForEach(0 ..< Int(ceil(gr.size.height / size)), id: \.self) { y in
GridRow {
ForEach(0 ..< Int(ceil(gr.size.width / size)), id: \.self) { x in
(x % 2 == y % 2 ? Color.gray : Color.white)
.frame(width: size, height: size)
.opacity(0.25)
}
}
}
}
}
}
}
🏁 Preview で使う
struct BackgroundCheckeredPattern<Content: View>: View {
var size: CGFloat
@ViewBuilder var content: () -> Content
var body: some View {
ZStack {
CheckeredPattern(size: size)
.edgesIgnoringSafeArea(.all)
content()
}
}
}
🏁 extension 化
Preview などで使いやすように extension にしておきます。
extension View {
func backgroundCheckeredPattern(size: CGFloat) -> some View {
ZStack {
CheckeredPattern(size: size)
.edgesIgnoringSafeArea(.all)
self
}
}
}
特に modifier まで作ることはないですね。
Button("Button") {
}
.buttonStyle(.bordered)
.controlSize(.extraLarge)
.backgroundCheckeredPattern(size: 15) // *
🏁 まとめ
サンプルコードとして Gist 化しておきます。
List の背景って .scrollContentBackground(.hidden)
で消すんですね。
便利に使えるコードはたくさん持っておきたいです。
関連ワード: iOS・iPhone・mac・macOS・Swift・SwiftUI・ツール・ライブラリ・今さら聞けない・初心者・開発