我制作了一个非常基本的 iOS Widget 扩展(在 iOS 16 上):
struct TotoView: View
var body: some View {
VStack {
Text("Toto")
.font(.headline)
}
}
}
struct TotoWidget: Widget {
var body: some WidgetConfiguration {
IntentConfiguration(kind: "myKind", intent: ViewTodayIntent.self, provider: TimelineProvider()) { entry in
TotoView(entry: entry)
}
.configurationDisplayName("Today work")
.description("Show today work sessions")
.supportedFamilies([.systemSmall, .systemMedium])
}
}
Run Code Online (Sandbox Code Playgroud)
在 SwiftUI Canvas 预览中,我可以看到“Toto”文本。
但是当我选择小部件目标并在模拟器中运行时,我只有占位符代替文本。知道为什么吗?请注意,不仅文本被占位符替换,而且图像(systemName:)
我认为这个问题似乎与 IntentConfiguration 有关(因为 StaticConfiguration 一切正常)
我使用的是 xCode 14。
我正在尝试使用新类型创建一个 WatchOS 扩展.accessoryInline,但我不明白为什么我不能在主水平堆栈中拥有多个堆栈。
请参阅以下注释代码和 WatchOS 模拟器中的不可见堆栈
struct WidgetInlineView : View {
var entry: BurnoutTimelineEntry
var body: some View {
HStack(spacing: 5) {
HStack {
Image("widgetWork")
Text(entry.exchange.todayWork.durationString)
}
HStack {
Image("widgetPause")
Text(entry.exchange.todayPause.durationString)
}
}
}
}
struct WidgetInline: Widget {
var body: some WidgetConfiguration {
StaticConfiguration(kind: "MyKind", provider: BurnoutTimelineProvider()) { entry in
WidgetInlineView(entry: entry)
}
.configurationDisplayName("My Widget")
.description("This is an example widget.")
.supportedFamilies([.accessoryInline])
}
}
struct WidgetInline_Previews: PreviewProvider {
static var previews: some View {
WidgetInlineView(entry: BurnoutTimelineEntry(date: Date()))
.previewContext(WidgetPreviewContext(family: …Run Code Online (Sandbox Code Playgroud)