Apple的SwiftUI教程代码不会在自制副本中显示视图内容

hjzp0vay  于 12个月前  发布在  Swift
关注(0)|答案(4)|浏览(112)

我刚刚开始学习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之外,还有其他重要的模块吗?

vsmadaxz

vsmadaxz1#

我遇到了同样的问题,发现我错过了tutorial的“创建卡片视图->第1节:创建颜色主题”部分的步骤5
对于不熟悉Xcode的人来说,我认为这一步的说明不是很清楚。我通过从示例项目的下载版本导入资源来解决这个问题。

  • 在Xcode中打开Assets文件
  • 右键单击并选择导入
  • 导航到下载的项目并选择“Themes”目录,该目录是Assets.xcassets的目录

完成后,您的资产文件应该如下所示。作为奖励,您可以使用这些相同的步骤导入应用程序图标。
x1c 0d1x的数据

thtygnil

thtygnil2#

了解问题

  1. scrum.color.accessibleFontColor应用于卡的foregroundColor。因此所有标签和图像和文本等都会受到影响。
  2. accessibleFontColor似乎根据父颜色返回blackwhite(本例中为scrum.color
    1.似乎你传递给预览的Color("Design")返回了clear颜色,因为在启动项目的资源中没有名称为Design的颜色。所以预览显示默认的白色颜色作为卡片背景。但是它也使用white颜色作为前景。所以你在结果中看到一个实心的白色卡片。

解决方案

  • 注解掉.foregroundColor(scrum.color.accessibleFontColor)
  • 或者添加资源颜色并按预期命名。
  • 或者给予卡片手动背景
  • 或者下载完整的版本,然后将过程逆转到您所处的位置。
2w3kk1z5

2w3kk1z53#

我从教程中下载了项目文件,我发现有一个文件你可能错过了。你可以检查示例代码中的Models文件夹,有一个名为Color+Codable.swift的文件负责这个accessibleFontColor东西。

qcuzuvrc

qcuzuvrc4#

这是由于未定义的“设计”颜色造成的。
从苹果的示例项目Assets.xcassets中复制“设计”颜色,并将颜色的定义放在项目的Assets.xcassets目录下可以解决您的问题。

相关问题