在 a 中View,我可以使用属性包装器访问环境变量,@Environment如下所示:
struct MyView: View {\n\n @Environment(\\.colorScheme) var colorScheme: Color\n\n var body: some View {\n Text("Hello")\n .foregroundColor(self.colorScheme == .light ? .black : .white)\n\xc2\xa0 }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n在扩展中,这是不可能的,因为我无法将变量放入extension. 如何访问@Environment扩展中的值,例如如果我想扩展Color?
直到现在我发现,我可以像这样使用该Environment属性wrappedValue:
extension Color {\n static var darkModeText: Color {\n if Environment(\\.colorScheme).wrappedValue == .light {\n return .black\n } else {\n return .white\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n问题是,这不会更新并且始终包含.light. 我还尝试使用@Environment作为全局变量,但这(尚未)受到属性包装器的支持。
| 归档时间: |
|
| 查看次数: |
2323 次 |
| 最近记录: |