Search

conditional modifier - 조건에 따른 View 변경

안녕하세요 iOS 개발자 루크입니다
오늘은 조건에 따라서 View 를 변경하고자할 때,
사용 가능한 solution 몇가지를 알아보겠습니다.

If else statement

가장 간단한 방법이나, 코드의 중복이 발생
struct ContentView: View { @State private var shouldBeRed: Bool = true var body: some View { if shouldBeRed { Text("Hello, world!") .foregroundColor(.red) } else { Text("Hello, world!") .foregroundColor(.blue) } } }
Swift
복사

Ternary operator : 삼항 연산자 활용

조건에 따라 다르게 modifier 를 사용하고자할 때 사용
struct ContentView: View { @State private var shouldBeRed: Bool = true var body: some View { Text("Hello, world!") .foregroundColor(shouldBeRed ? .red : .blue) } }
Swift
복사

Adding a View extension

조건에 따라 modifier 의 적용 여부를 결정할 때 사용
extension View { @ViewBuilder func `if`<Content: View>(_ condition: Bool, transform: (Self) -> Content) -> some View { if condition { transform(self) } else { self } } }
Swift
복사

State 변수를 사용해 View 변경

struct ContentView: View { @State private var shouldAddShadow: Bool = true var body: some View { Text("Hello, world!") .if(shouldAddShadow) { view in view.shadow(color: .black, radius: 10, x: 0.0, y: 0.0) } } }
Swift
복사
감사합니다.