如何在 SWIFTUI 正文视图中使用声明的变量

Posted

技术标签:

【中文标题】如何在 SWIFTUI 正文视图中使用声明的变量【英文标题】:how can I use a declared variable inside SWIFTUI body view 【发布时间】:2020-01-24 08:05:34 【问题描述】:

我不能在正文视图中使用我声明的变量。如果我使用

 .fill(colorWheel["darkOrange"]) 

在 Ellipse 内部,它会中断,但如果我更改为 .fill(Color.orange),这是一个系统颜色,那就没问题了。

struct ContentView: View 
//our color palette
var colorWheel : [String: Color] = [
    "darkOrange"    : Color.init(hex: "F1615D"),
    "mediumOrange"  : Color.init(hex: "FF8761"),
    "darkYellow"    : Color.init(hex: "FFC575"),
    "lightYellow"   : Color.init(hex: "F1FAC6"),
    "brightAqua"    : Color.init(hex: "79E6E3"),
    "lightAqua"     : Color.init(hex: "a8e6cf"),
    "limeGreen"     : Color.init(hex: "dcedc1"),
    "brightPeach"   : Color.init(hex: "ff8b94"),
    "mediumPeach"   : Color.init(hex: "ffaaa5"),
    "lightPeach"    : Color.init(hex: "ffd3b6"),
]

var body: some View 
    ZStack
        VStack 
            AnimatedContentView()
            Spacer()

            ZStack 
                Ellipse()
                    .fill(colorWheel["darkOrange"])
                .frame(width: 300, height: 150)

                Text("Glad you are here.\n Animate this")
                    .animation(.spring())
                    .foregroundColor(Color.white)
                    .font(.system(size: 28))
            
            .rotationEffect(.degrees(-24))

        
        .foregroundColor(Color.black.opacity(0.7))
        .edgesIgnoringSafeArea(.all)
     //end zStack
    

【问题讨论】:

【参考方案1】:

试试这个。

.fill(self.colorWheel["darkOrange"] ?? Color.green)

如果没有颜色,请将 Color.green 替换为您想要应用的默认颜色。

【讨论】:

以上是关于如何在 SWIFTUI 正文视图中使用声明的变量的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 如何在修改来自同一结构的状态变量时避免刷新列表

是否所有 @Published 变量都需要在 SwiftUI 的视图模型中具有初始值?

如何在swiftui中的视图之间传递变量?

如何在swiftUI的父视图中从另一个视图访问变量?

如何将一个 SwiftUI 视图作为变量传递给另一个视图结构

SwiftUI 如何根据获取的数据更改视图的背景颜色?