背景#
Xcode15 にアップグレード後、ウィジェットを実行すると、WIDGET_BACKGROUND_API_ADOPTION_PROMPT
のメッセージが表示されます。以下の図のように:

解決策#
View_Extensions.swift
を作成し、以下のコードを記述します:
import SwiftUI
extension View {
@ViewBuilder func adoptableWidgetBackground(_ color: Color) -> some View {
if #available(iOS 17.0, *) {
containerBackground(for: .widget) { color }
} else {
background(color)
}
}
}
次に XXXLineProvider
の中で、ZZZ_WidgetEntryView: View
を見つけて、以下のように修正します:
struct ZZZ_WidgetEntryView: View {
var body: some View {
...
// 以下のコードを追加
.adoptableWidgetBackground(Color.clear)
}
}
再度実行すると、このメッセージは消え、ウィジェットが表示されるようになります。しかし、もう一つの問題があります —— ウィジェットの背景が画像の場合、周囲に白い枠が追加されていることに気づきます。解決策は以下の通り、WidgetConfiguration_Extensions.swift
を作成します:
import SwiftUI
extension WidgetConfiguration {
func adoptableWidgetContentMargin() -> some WidgetConfiguration {
if #available(iOSApplicationExtension 15.0, *) {
return contentMarginsDisabled()
} else {
return self
}
}
}
次に XXXLineProvider
の中で、ZZZWidget: Widget
を見つけて、以下のように修正します:
struct ZZZWidget: Widget {
public var body: some WidgetConfiguration {
IntentConfiguration(...) { entry in
...
}
.configurationDisplayName("displayName")
.supportedFamilies([WidgetFamily.systemMedium])
// 以下の属性設定を追加するだけです
.adoptableWidgetContentMargin()
}
}
再度実行すれば解決します。