教程主题背景颜色不起作用
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)
(其中 rawValue
是 String
)仅当您的资产目录中有名称为 rawValue
的颜色时才有效。
要使其正常工作,您可以像这样修改 mainColor
:
var mainColor: Color {
switch self {
case .purple:
return .purple
case .red:
return .red
// Etc.
}
}
当然,这不适用于 .bubblegum
,因为 Color
没有这样的标准颜色——您应该在您的资源中自己创建它们。
同样的问题:
您应该先下载项目文件,然后从 StartingProject 导入 assets 文件夹。
苹果文档中的注释:
资产文件夹位置:
正在尝试遵循 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)
(其中 rawValue
是 String
)仅当您的资产目录中有名称为 rawValue
的颜色时才有效。
要使其正常工作,您可以像这样修改 mainColor
:
var mainColor: Color {
switch self {
case .purple:
return .purple
case .red:
return .red
// Etc.
}
}
当然,这不适用于 .bubblegum
,因为 Color
没有这样的标准颜色——您应该在您的资源中自己创建它们。
同样的问题:
您应该先下载项目文件,然后从 StartingProject 导入 assets 文件夹。
苹果文档中的注释:
资产文件夹位置: