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

dw1jzc5e  于 2022-12-27  发布在  iOS
关注(0)|答案(3)|浏览(250)

尝试遵循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))
    }
}
bvjveswy

bvjveswy1#

同样的问题:Apple's SwiftUI tutorial code doesn't display view contents in homemade copy
您应该先下载项目文件,然后从StartingProject导入assets文件夹。

苹果文档中的注解:

资产文件夹位置:

slsn1g29

slsn1g292#

Color(rawValue)(其中rawValueString)仅在资源目录中具有名称为rawValue的颜色时才起作用。
要使其工作,您可以像这样修改您的mainColor

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

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

brvekthn

brvekthn3#

如果您不使用已启动的项目并通过创建新项目重新开始,则需要下载Assets.xcassets。此文件夹包含图标资源和应用程序所需的颜色。

相关问题