我正在按照这个教程学习Swift和SwiftUI。但是预览中的背景颜色并未像预期那样改变。
我的代码如下:
在Theme.swift
中:
import SwiftUI
enum Theme: String {
// ...其他情况
case yellow
var accentColor: Color {
switch self {
case .yellow: return .black // <-- 为黄色主题声明强调色键
case .indigo, .magenta, .navy, .oxblood, .purple: return .white
}
}
var mainColor: Color {
Color(rawValue) // <-- 这里应该返回基于字符串枚举值的颜色,但当前实现不正确
}
}
在DailyScrum.swift
中:
import Foundation
struct DailyScrum {
var title: String
var attendees: [String]
var lengthInMinutes: Int
var theme: Theme
}
extension DailyScrum {
static let sampleData: [DailyScrum] =
[
DailyScrum(title: "Design",
attendees: ["Cathy", "Daisy", "Simon", "Jonathan"],
lengthInMinutes: 10,
theme: .yellow), // <-- 将第一个项目的主题设置为黄色,引用自 `Theme.swift`
// 其他项目...
]
}
在CardView.swift
中:
import SwiftUI
struct CardView: View {
let scrum: DailyScrum
var body: some View {
Text("Hello, World!")
}
}
struct CardView_Previews: PreviewProvider {
static var scrum = DailyScrum.sampleData[0] // <-- 获取第一个项目
static var previews: some View {
CardView(scrum: scrum)
.background(scrum.theme.mainColor) // <-- 获取第一个项目的主颜色
}
}
在预览中我看到的是:
CardView的预览,本应显示黄色背景,但实际并未显示。
期望中的预览效果
我尝试将 scrum.theme.mainColor
更改为 .yellow
或 scrum.theme.accentColor
,这样可以正常工作。我不确定这里具体是什么问题。
我的 Xcode 版本是 15,Swift 版本是 5.9.2。