SwiftUI WidgetKit ロック画面用をつくる
公式ドキュメント「Creating Lock Screen Widgets and Watch Complications」
https://developer.apple.com/documentation/widgetkit/creating-lock-screen-widgets-and-watch-complications
画像は「.accessoryCircular」と「.accessoryRectangular」実機実行結果。
あと「.accessoryInline」「.accessoryCorner」がある。
これが出来ればWatchも簡単。以前作成したClockKit版も巻き取らないと。
Example Code
struct PCWidgetAccessory: Widget {
let kind: String = "Accessory"
var body: some WidgetConfiguration {
IntentConfiguration(kind: kind, intent: ConfigurationIntent.self, provider: Provider()) { entry in
PCWidgetAccessoryEntryView(entry: entry)
}
.configurationDisplayName("Accessory")
.description("Displays percentages for a given period.")
.supportedFamilies([.accessoryRectangular, .accessoryCircular])
}
}
struct PCWidgetAccessoryEntryView : View {
var entry: Provider.Entry
@Environment(\.widgetFamily) var family
var body: some View {
switch family {
case .accessoryInline:
Text("-")
case .accessoryRectangular:
HStack {
Text(self.entry.pcwidgetmodel.clockDate.toStringStart())
if self.entry.pcwidgetmodel.clockDate.nowPercent() != -1 {
Gauge(value: self.entry.pcwidgetmodel.clockDate.nowPercent() / 100) {
Image(systemName: String(self.entry.pcwidgetmodel.selectClock) + ".square")
} currentValueLabel: {
Text("\(Int(self.entry.pcwidgetmodel.clockDate.nowPercent()))")
}
.gaugeStyle(.accessoryCircular)
}
else {
Text("-")
}
Text(self.entry.pcwidgetmodel.clockDate.toStringEnd())
}
case .accessoryCircular:
if self.entry.pcwidgetmodel.clockDate.nowPercent() != -1 {
Gauge(value: self.entry.pcwidgetmodel.clockDate.nowPercent() / 100) {
Image(systemName: String(self.entry.pcwidgetmodel.selectClock) + ".square")
} currentValueLabel: {
Text("\(Int(self.entry.pcwidgetmodel.clockDate.nowPercent()))")
}
.gaugeStyle(.accessoryCircular)
}
else {
Text("-")
}
case .systemSmall:
Text("-")
default:
Text("-")
}
}
}







