isPlaceholder 修饰符不可用且在小部件工具包 + SwiftUI 中不起作用
Posted
技术标签:
【中文标题】isPlaceholder 修饰符不可用且在小部件工具包 + SwiftUI 中不起作用【英文标题】:isPlaceholder modifier not available and not working in widget kit + SwiftUI 【发布时间】:2021-05-05 12:49:38 【问题描述】:我正在关注 Fromm wwdc 2020 中的小部件代码,在第一部分中他们提到使用带有 .isPlacholder
的新占位符 API。所以我尝试在我的小部件中实现它,如下所示:
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 以来已更改?如何创建正确的占位符?
【问题讨论】:
【参考方案1】:在您的 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.")
【讨论】:
【参考方案2】:最初的 .isPlaceholder(_:)
API 在 ios 14 beta 3 中已更改为 .redacted(reason:)
API,这就是编译器无法识别 isPlaceholder
调用的原因。
正确使用方法如下:How to mark content as a placeholder using redacted()
【讨论】:
以上是关于isPlaceholder 修饰符不可用且在小部件工具包 + SwiftUI 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当使用vue的按键修饰符不起效果的时候怎么办?如@keyup.enter = '' ;