【发布时间】:2019-07-02 10:56:48
【问题描述】:
如何在 SwiftUI 中检测环境变化? 例如,我将当前的配色方案存储为
@Environment(\.colorScheme) var colorScheme: ColorScheme
我根据环境值显示ASAuthorizationAppleIDButton:
fileprivate struct AppleSignInView : UIViewRepresentable {
var colorScheme: ColorScheme
func makeUIView(context: Context) -> ASAuthorizationAppleIDButton {
switch colorScheme {
case .light:
return ASAuthorizationAppleIDButton(type: .continue, style: .black)
case .dark:
return ASAuthorizationAppleIDButton(type: .continue, style: .white)
@unknown default:
return ASAuthorizationAppleIDButton(type: .continue, style: .black)
}
}
func updateUIView(_ uiView: ASAuthorizationAppleIDButton, context: Context) { }
}
在我的body 属性中,我实例化了结构:
var body: some View {
AppleSignInView(colorScheme: colorScheme)
}
这很好用,但是当我从 Xcode 更改配色方案时,新的配色方案不会传播。
如何监听这个环境变量的变化?
【问题讨论】:
-
做 bata-binding 可能有帮助....