0

我正在关注 Fromm wwdc 2020 中的小部件代码,并且在第一部分中他们提到使用带有.isPlacholder. 所以我尝试在我的小部件中实现它,如下所示:

struct PlaceholderView: View {
    var body: some View {
        RandomWidgetView(book: testBook)
            .isPlaceholder(true)
    }
}

但是我得到了错误Value of type 'RandomWidgetView' has no member 'isPlaceholder'。谷歌搜索后,我发现了这个:

struct PlaceholderView: View {
    var body: some View {
        RandomWidgetView(book: testBook)
            .redacted(reason: .placeholder)
    }
}

然而,这并没有创建正确的占位符,而是完全删除了里面的视图。

我错过了导入还是自 wwdc 以来已更改?如何创建正确的占位符?

4

2 回答 2

2

在您的 Widget 扩展中,您应该有类似这样的代码,因为我在这里拥有它只是默认的 Widget 实现。如果您将您.redacted(reason: .placeholder)的视图放在您拥有的视图中,Provider.Entry它应该会给您您正在寻找的结果。

// other TimelineProvider code...

struct RandomWidgetViewEntryView: View {
    var entry: Provider.Entry

    var body: some View {
        Text(entry.date, style: .time)
            .redacted(reason: .placeholder)
    }
}

@main
struct RandomWidgetView: Widget {
    let kind: String = "RandomWidgetView"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: Provider()) { entry in
            RandomWidgetViewEntryView(entry: entry)
        }
        .configurationDisplayName("My Widget")
        .description("This is an example widget.")
    }
}

占位符图像视图

于 2021-05-05T13:19:37.357 回答
0

iOS 14 beta 3 中的初始.isPlaceholder(_:)API 已更改为.redacted(reason:)API,这就是编译器无法识别isPlaceholder调用的原因。

以下是如何正确使用它:如何使用 redacted() 将内容标记为占位符

于 2021-05-05T13:13:38.497 回答