SwiftUI/Groupを使うのではなく@ViewBuilderなプロパティ/メソッドとして切り出す
環境
code:sh
$xcodebuild -version
Xcode 14.3
Build version 14E222b
/icons/hr.icon
なぜ?
ネストが少なくなるから読みやすい
Groupあり
code:swift
struct ContentView: View {
let count = 0
var body: some View {
Text("\(count)")
.background(
Group {
if count % 2 == 0 {
Color.red
} else {
Color.blue
}
}
)
}
}
こうする
code:swift
import SwiftUI
struct ContentView: View {
let count = 0
var body: some View {
Text("\(count)")
.background(
backgroundColor
)
}
}
extension ContentView {
@ViewBuilder
private var backgroundColor: some View {
if count % 2 == 0 {
Color.red
} else {
Color.blue
}
}
}
メモ
bodyもスッキリするし気に入っている
話題が逸れるが、Viewでのプロパティ, メソッドの使い分け
基本はプロパティを使い、ループなどで何かしらの値をもとに動的に何かを生成する場合にメソッドを切るようにしている