[swift] SwiftUI 뷰의 컨텍스트 변경

SwiftUI는 상태 관리 및 데이터 전달을 위해 @State, @Binding, @ObservedObject, @EnvironmentObject@Environment과 같은 속성 래퍼를 제공합니다. 때문에 때로는 뷰의 컨텍스트를 변경해야 할 때가 있습니다.

@Environment와 함께 컨텍스트 변경하기

보통 @Environment는 앱 전반에서 전역적으로 접근할 수 있는 값을 저장하는 데 사용합니다. 예를 들어, @Environment(\.colorScheme)은 다크 모드와 라이트 모드를 확인할 때 유용합니다.

@Environment 속성 래퍼를 사용하여 뷰의 컨텍스트를 변경하려면 해당 환경 값을 새로운 값으로 변경하면 됩니다.

struct ContentView: View {
    @Environment(\.colorScheme) var colorScheme

    var body: some View {
        Circle()
            .foregroundColor(colorScheme == .dark ? .white : .black)
            .onTapGesture {
                if colorScheme == .dark {
                    UIApplication.shared.windows.first?.rootViewController?.overrideUserInterfaceStyle = .light
                } else {
                    UIApplication.shared.windows.first?.rootViewController?.overrideUserInterfaceStyle = .dark
                }
            }
    }
}

위의 예시에서 ContentView@Environment(\.colorScheme)를 사용하여 현재 앱의 색상 모드에 따라 동작합니다. onTapGesture에서는 현재 색상 모드를 확인하여 애플리케이션 전체의 색상 모드를 변경하고 있습니다.

이러한 방식으로 @Environment 속성 래퍼를 사용하여 뷰의 컨텍스트를 변경할 수 있습니다.

Conclusion

SwiftUI에서 뷰의 컨텍스트를 변경하는 방법은 다양합니다. @State, @Binding, @ObservedObject@Environment을 적절히 활용하여 상태를 관리하고 데이터를 전달하는 것이 중요합니다. 뷰의 컨텍스트를 변경하려면 해당 속성 래퍼를 새로운 값으로 업데이트하면 됩니다.

이것은 SwiftUI 뷰에서 컨텍스트를 변경하는 간단한 예시입니다. 물론 이 외에도 여러 가지 다른 상황에서 컨텍스트를 변경하는 방법이 존재합니다. SwiftUI의 강력한 기능을 활용하여 효율적인 컨텍스트 변경을 구현할 수 있습니다.

참고 문헌: SwiftUI - Apple Developer Documentation