我刚刚开始学习SwiftUI,遵循苹果在this链接上提供的构建iOS应用程序的教程。我从提供的框架应用程序开始,并在最新的Xcode中一步一步地跟随沿着。而不是看到我应该看到的,CardView
只显示一个空白的白色矩形。
苹果提供了一个完整的构建项目,它运行得很好。我将我从框架项目构建的代码与完整项目附带的代码进行了比较,它们看起来是一样的。然而,我自己构建的项目副本根本没有在CardView
中填充任何细节。没有颜色,文本,也没有图标,只有一个空白的白色矩形。除了简单地将代码与罐装示例进行比较之外,我完全不知道如何调试这个。欢迎任何建议。
下面是CardView.swift的代码:
import SwiftUI
struct CardView: View {
let scrum: DailyScrum
var body: some View {
VStack(alignment: .leading) {
Text(scrum.title).font(.headline)
Spacer()
HStack {
Label("\(scrum.attendees.count)", systemImage: "person.3")
.accessibilityElement(children: .ignore)
.accessibilityLabel(Text("Attendees"))
.accessibilityValue(Text("\(scrum.attendees.count)"))
Spacer()
Label("\(scrum.lengthInMinutes)", systemImage: "clock")
.padding(.trailing, 20)
.accessibilityElement(children: .ignore)
.accessibilityLabel(Text("Meeting length"))
.accessibilityValue(Text("\(scrum.lengthInMinutes) minutes"))
}
.font(.caption)
}
.padding()
.foregroundColor(scrum.color.accessibleFontColor)
}
}
struct CardView_Previews: PreviewProvider {
static var scrum = DailyScrum.data[0]
static var previews: some View {
CardView(scrum: scrum)
.background(scrum.color)
.previewLayout(.fixed(width: 400, height: 60))
}
}
字符串
这是我在Xcode预览版中看到的代码:
下面是我在Xcode的预览中看到的苹果已经完成的示例代码:
将我构建的代码与Apple提供的代码进行比较似乎可以突出问题,但没有任何差异。项目中的其他两个视图工作正常。除了这个源代码CardView.swift
之外,还有其他重要的模块吗?
4条答案
按热度按时间vsmadaxz1#
我遇到了同样的问题,发现我错过了tutorial的“创建卡片视图->第1节:创建颜色主题”部分的步骤5
对于不熟悉Xcode的人来说,我认为这一步的说明不是很清楚。我通过从示例项目的下载版本导入资源来解决这个问题。
完成后,您的资产文件应该如下所示。作为奖励,您可以使用这些相同的步骤导入应用程序图标。
x1c 0d1x的数据
thtygnil2#
了解问题
scrum.color.accessibleFontColor
应用于卡的foregroundColor
。因此所有标签和图像和文本等都会受到影响。accessibleFontColor
似乎根据父颜色返回black
或white
(本例中为scrum.color
)1.似乎你传递给预览的
Color("Design")
返回了clear
颜色,因为在启动项目的资源中没有名称为Design
的颜色。所以预览显示默认的白色颜色作为卡片背景。但是它也使用white
颜色作为前景。所以你在结果中看到一个实心的白色卡片。解决方案
.foregroundColor(scrum.color.accessibleFontColor)
2w3kk1z53#
我从教程中下载了项目文件,我发现有一个文件你可能错过了。你可以检查示例代码中的Models文件夹,有一个名为
Color+Codable.swift
的文件负责这个accessibleFontColor
东西。qcuzuvrc4#
这是由于未定义的“设计”颜色造成的。
从苹果的示例项目
Assets.xcassets
中复制“设计”颜色,并将颜色的定义放在项目的Assets.xcassets
目录下可以解决您的问题。