apple/Docs, iOS, Swift

Swift Entry macro (@Entry)

lgvv 2024. 8. 7. 00:26

Swift Entry macro (@Entry)

 

기존 SwiftUI에서는 아래의 형태로 커스텀하여 사용할 수 있었음.

 

extension EnvironmentValues {
    struct OrientationEnvironmentKey: EnvironmentKey {
        static var defaultValue: UIInterfaceOrientation = .portrait
    }
    
    var orientation: UIInterfaceOrientation {
        get { self[OrientationEnvironmentKey.self] }
        set { self[OrientationEnvironmentKey.self] = newValue }
    }
}

 

 

해당 매크로를 사용하면 더 단순하고 깔끔하게 변환 가능

 

extension EnvironmentValues {
    @Entry var orientation: UIInterfaceOrientation = .portrait
}

 

 

매크로로만 바뀌었을 뿐, View에서 사용하는 부분은 동일함.

뷰에서 사용하는 부분은 동일함.

struct ParentView: View {
    @Environment(\.orientation) var orientation
    
    var body: some View {
        VStack {
            Text("parent: \(orientation.isPortrait)")
        }
    }
}

 

매크로 확장하여 본 코드