教程主题背景颜色不起作用

tutorial theme background color not working

正在尝试遵循 this iOS 开发教程。

当我进行到第 7 步时,代码没有按预期更改背景颜色。

引用“第 7 步 添加一个名为 mainColor 的 Color 属性,它使用枚举的 rawValue 创建颜色。 属性 从资产目录中初始化一种颜色。"

这是主题文件中的代码:

import SwiftUI

enum Theme: String {
    case bubblegum
    case buttercup
    case indigo
    case lavender
    case magenta
    case navy
    case orange
    case oxblood
    case periwinkle
    case poppy
    case purple
    case seafoam
    case sky
    case tan
    case teal
    case yellow
    
    var accentColor: Color {
            switch self {
            case .bubblegum, .buttercup, .lavender, .orange, .periwinkle, .poppy, .seafoam, .sky, .tan, .teal, .yellow: return .black
            case .indigo, .magenta, .navy, .oxblood, .purple: return .white
            }
        }
    var mainColor: Color {
        Color(rawValue) // This line not working
    }
}

如果我将代码更改为:

    var mainColor: Color {
        return .red
    }

背景如我所料变为红色。

查看文件中的代码是:

import SwiftUI

struct CardView: View {
    let scrum: DailyScrum
    var body: some View {
        VStack(alignment: .leading) {
            Text(scrum.title)
                .font(.headline)
                .accessibilityAddTraits(.isHeader)
            Spacer()
            HStack {
                Label("\(scrum.attendees.count)", systemImage: "person.3")
                    .accessibilityLabel("\(scrum.attendees.count) attendees")
                Spacer()
                Label("\(scrum.lengthInMinutes)", systemImage: "clock")
                    .accessibilityLabel("\(scrum.lengthInMinutes) minute meeting")
                    .labelStyle(.trailingIcon)
            }
            .font(.caption)            
        }
        .padding()
        .foregroundColor(scrum.theme.accentColor)

    }
}

struct CardView_Previews: PreviewProvider {
    static var scrum = DailyScrum.sampleData[0]
    static var previews: some View {
        CardView(scrum: scrum)
            .background(scrum.theme.mainColor) // Here is were theme is called
            .previewLayout(.fixed(width: 400, height: 60))
    }
}

Color(rawValue)(其中 rawValueString)仅当您的资产目录中有名称为 rawValue 的颜色时才有效。

要使其正常工作,您可以像这样修改 mainColor

var mainColor: Color {
  switch self {
    case .purple:
      return .purple
    case .red:
      return .red
    // Etc.
  }
}

当然,这不适用于 .bubblegum,因为 Color 没有这样的标准颜色——您应该在您的资源中自己创建它们。

同样的问题:

您应该先下载项目文件,然后从 StartingProject 导入 assets 文件夹。

苹果文档中的注释:

资产文件夹位置: