尝试遵循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))
}
}
3条答案
按热度按时间bvjveswy1#
同样的问题:Apple's SwiftUI tutorial code doesn't display view contents in homemade copy
您应该先下载项目文件,然后从StartingProject导入assets文件夹。
苹果文档中的注解:
资产文件夹位置:
slsn1g292#
Color(rawValue)
(其中rawValue
是String
)仅在资源目录中具有名称为rawValue
的颜色时才起作用。要使其工作,您可以像这样修改您的
mainColor
:当然,这不适用于
.bubblegum
这样的东西,因为Color
没有这样的标准颜色-您应该自己在资源中创建它们。brvekthn3#
如果您不使用已启动的项目并通过创建新项目重新开始,则需要下载Assets.xcassets。此文件夹包含图标资源和应用程序所需的颜色。