サポートするWidgetの種類をiOS16以降と未満で分けたいときは
if #available(iOSApplicationExtension 16.0, *){
//ios16以降の処理
}else{
//ios16未満の処理
}
だいたいこの書き方でわけれるのだけれど、
struct myWidget: Widget {
let kind: String = "myWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider_relative()) { entry in
fcwidgetEntryView_relative(entry: entry,timerState: TimerState_Ja(rawValue: entry.timerState)?.ToString ?? "", deadLineInerval: entry.timeInterval )
}
.configurationDisplayName("Mywidget")
.description("いろいろ表示します")
.supportedFamilies([.accessoryRectangular,
.accessoryCircular,
.systemSmall] )
}
}
Widgetの中枢のこのビュー?だけは
if #available(iOSApplicationExtension 16.0, *)でStaticConfigurationをまるごと分岐しようが、@available(iOSApplicationExtension 16.0, *)を使おうがエラーがでます。なので別で関数を作ってはめれば通ります。
// これをどっかいに書いといて
func supportWidgetFamily() -> [WidgetFamily]{
if #available(iOSApplicationExtension 16.0, *){
return [.accessoryRectangular, .accessoryCircular, .systemSmall] }
else{
return [.systemSmall]
}
}
struct myWidget: Widget {
let kind: String = "myWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider_relative()) { entry in
fcwidgetEntryView_relative(entry: entry,timerState: TimerState_Ja(rawValue: entry.timerState)?.ToString ?? "", deadLineInerval: entry.timeInterval )
}
.configurationDisplayName("Mywidget")
.description("いろいろ表示します")
.supportedFamilies(supportWidgetFamily())//ここに入れる
}
}
これでiOS16にはロック画面ウィジェットを出しつつ、iOS15にはホーム画面ウィジェットを出せます。