[SwiftUI] 유용한 Extension 및 예제 코드 모음집
13 February 2020
이 글은 유용하다고 생각하는 Extension 및 예제 코드의 모음집으로 계속 업데이트 될 예정입니다.
Table
- View Extension
View Extension
If
조건에 따라 transform을 호출하여 View에 반영할지 사용할때 유용한 코드.
public extension View {
func `if`<T: View>(_ conditional: Bool, transform: (Self) -> T) -> some View {
Group {
if conditional { transform(self) }
else { self }
}
}
func `if`<T: View>(_ condition: Bool, true trueTransform: (Self) -> T, false falseTransform: (Self) -> T) -> some View {
Group {
if condition { trueTransform(self) }
else { falseTransform(self) }
}
}
}
위 코드는 다음과 같이 사용할 수 있습니다.
struct ContentView: View {
@State var colorize: Bool = true
var body: some View {
Text("Hello")
.if(colorize) { $0.background(Color.red) }
}
}
출처 : dotSwift 2020 - Tobias Due Munk - Prototyping Custom UI in SwiftUI
maskContent
mask를 역으로 사용할때 유용한 코드.(예, 텍스트 색상을 그라데이션으로 설정함.)
public extension View {
func maskContent<T: View>(using: T) -> some View {
using.mask(self)
}
}
위 코드는 다음과 같이 사용할 수 있습니다.
struct ContentView: View {
var body: some View {
Text("Hello world")
.maskContent(using: LinearGradient(gradient: Gradient(colors: [.red, .yellow, .green, .blue, .purple]),
startPoint: .leading,
endPoint: .trailing))
}
}
출처 : dotSwift 2020 - Tobias Due Munk - Prototyping Custom UI in SwiftUI