SwiftUI iOS14 Widget - 使用相同的 WidgetFamily 创建多布局
Posted
技术标签:
【中文标题】SwiftUI iOS14 Widget - 使用相同的 WidgetFamily 创建多布局【英文标题】:SwiftUI iOS14 Widget - Create create multi layout with the same WidgetFamily 【发布时间】:2020-10-08 02:00:32 【问题描述】:当我从主屏幕添加小部件时,我可以看到 Apple 创建的 Clock 应用程序有两个小的 WidgetFamily
布局。
如何在时钟应用中制作两个小Widget?
我发现我只能为每个 WidgetFamily
创建一个布局。
【问题讨论】:
@pawello2222 非常感谢。这就是我需要的:D 【参考方案1】:看来你需要用自己的视图、入口、提供者创建单独的小部件...
这是使用WidgetBundle
的可能解决方案:
-
创建单独的小部件(确保
@main
注释未附加到任何小部件):
struct Widget1: Widget
let kind: String = "Widget1"
var body: some WidgetConfiguration
StaticConfiguration(kind: kind, provider: Widget1Provider()) entry in
Widget1Entry(entry: entry)
.configurationDisplayName("Widget1")
.description("This is an example widget v1.")
struct Widget2: Widget
let kind: String = "Widget2"
var body: some WidgetConfiguration
...
...
-
为每个小部件创建自己的视图(可能还单独的条目和提供者,具体取决于您的需要):
struct Widget1EntryView: View
var entry: Widget1Entry
var body: some View
Text("Widget1")
struct Widget2EntryView: View
var entry: Widget2Entry
var body: some View
Text("Widget2")
...
-
使用
WidgetBundle
提供一个包含您的小部件的包:
@main
struct WidgetsBudle: WidgetBundle
var body: some Widget
Widget1()
Widget2()
// add more Widgets if you want
请注意,@main
附加到 WidgetsBudle
而不是小部件。
【讨论】:
嗨@pawello2222,我可以在WidgetBundle 中使用循环吗? @CarsonVo 目前不可能 - 请参阅 ***.com/q/63797991/8697793以上是关于SwiftUI iOS14 Widget - 使用相同的 WidgetFamily 创建多布局的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 14(SwiftUI) Widget Extension 中初始化 Facebook SDK?
UIVisualEffectView 在 iOS 14 小部件中不起作用