- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的项目中添加了一个 Intent Extension Target,我试图区分在 IntentHandler
的编辑模式下显示的 WidgetKit 类型,并根据此信息我想填充“编辑 WidgetKit ”包含小型、中型或大型 WidgetKit 类型的列表。
当我使用 @Environment(\.widgetFamily) var family
时,它总是给我 .systemMedium
但我当时正在编辑一个大尺寸的 WidgetKit .
例如;当我长按一个 WidgetKit 以编辑并从列表中选择另一个部件类型时,我看到一个列表,其中包含 IntentHandler
中的小型、中型和大型部件类型,但我想查看只有小类型。
问题是是否可以根据我当前正在编辑的 WidgetKit 类型来填充列表?
最佳答案
假设我理解您想要做什么,我认为答案是否定的,这是不可能的。要复制像 Widgetsmith 这样的应用程序所做的事情,您需要定义 3 个单独的 WidgetKit ,每个 WidgetKit 分别对应小型、中型和大型 supportedFamily
尺寸。然后定义 3 个单独的 Intent,每个 WidgetKit 一个,并为每个实现一个单独的 Intent Handler。
像这样:
@main
struct MyWidgetBundle: WidgetBundle {
@WidgetBundleBuilder
var body: some Widget {
SmallWidget()
MediumWidget()
LargeWidget()
}
}
struct SmallWidget: Widget {
let kind: String = "SmallWidget"
var body: some WidgetConfiguration {
IntentConfiguration(kind: kind, intent: SmallWidgetIntent.self, provider: TimelineProvider()) { entry in
WidgetView(entry: entry)
}
.configurationDisplayName("Small Widget")
.supportedFamilies([.systemSmall])
}
}
struct MediumWidget: Widget {
let kind: String = "MediumWidget"
var body: some WidgetConfiguration {
IntentConfiguration(kind: kind, intent: MediumWidgetIntent.self, provider: TimelineProvider()) { entry in
WidgetView(entry: entry)
}
.configurationDisplayName("Medium Widget")
.supportedFamilies([.systemMedium])
}
}
struct LargeWidget: Widget {
let kind: String = "LargeWidget"
var body: some WidgetConfiguration {
IntentConfiguration(kind: kind, intent: LargeWidgetIntent.self, provider: TimelineProvider()) { entry in
WidgetView(entry: entry)
}
.configurationDisplayName("Large Widget")
.supportedFamilies([.systemLarge])
}
}
在您的 Intent 定义文件中,定义 SmallWidgetIntent
、MediumWidgetIntent
和 LargeWidgetIntent
。然后在您的 Intent 处理程序中,您将实现 SmallWidgetIntentHandling
、MediumWidgetIntentHandling
和 LargeWidgetIntentHandling
,它们将返回与其关联大小相关的正确选项。
关于swift - IntentHandler 不适用于 widgetFamily,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65450507/
我是一名优秀的程序员,十分优秀!