Виджет не работает в iOS 17. Используйте API-интерфейс контейнера. ⇐ IOS
-
Гость
Виджет не работает в iOS 17. Используйте API-интерфейс контейнера.
При разработке виджетов для iOS 17 я столкнулся с проблемой, что виджеты не работали. Предварительный просмотр показывает только ошибку —ContainerBackground API Читал подобные статьи по этому поводу, и там говорят, что нужно использовать
расширение View { func widgetBackground(_ backgroundView: some View) -> some View { if #available(iOSApplicationExtension 17.0, *) { returnContainerBackground(for:.widget) { фонПросмотр } } еще { вернуть фон (backgroundView) } } но у меня это не работает
У меня есть простой виджет, показывающий время. Я предоставлю код ниже
struct TimeWidgetEntryView: Просмотр { запись переменной: TimeWidgetProvider.Entry var body: some View { если пусть часы = UserDefaultStorage.shared.standByClockValue, случай .single(let model) = clock.blockType { ZStack { Изображение(lock.imageName ?? "текстура - 1") Текст (DateFormatter.hourAndMinute.string (от: вход.дата)) .font(.custom(model.font.fontName, размер: 50)) .foregroundColor(Цвет(model.textColor)) if !UserDefaultStorage.shared.hasPremiumStatus, UserDefaultStorage.shared.isLastTryTime { ПремиумВью() } } .widgetBackground(Color.black) } еще { если !UserDefaultStorage.shared.hasPremiumStatus { ZStack { ВиджетEmptyView() .widgetBackground(Цвет.черный) } } } } } структура WidgetEmptyView: Просмотр { var body: some View { ZStack { Изображение("текстура - 1") .scaledToFill() Черный цвет ВСтек { Изображение("Кадр 11114563") .изменяемый размер() .padding(.дно, 10) .frame(ширина: 70, высота: 70) Текст("Выберите часы") .foregroundColor(.white) .frame(ширина: 150) .multilineTextAlignment(.center) .font(.custom("Гилрой-Болд", размер: 20)) .dynamicTypeSize(.medium) } } } }
При разработке виджетов для iOS 17 я столкнулся с проблемой, что виджеты не работали. Предварительный просмотр показывает только ошибку —ContainerBackground API Читал подобные статьи по этому поводу, и там говорят, что нужно использовать
расширение View { func widgetBackground(_ backgroundView: some View) -> some View { if #available(iOSApplicationExtension 17.0, *) { returnContainerBackground(for:.widget) { фонПросмотр } } еще { вернуть фон (backgroundView) } } но у меня это не работает
У меня есть простой виджет, показывающий время. Я предоставлю код ниже
struct TimeWidgetEntryView: Просмотр { запись переменной: TimeWidgetProvider.Entry var body: some View { если пусть часы = UserDefaultStorage.shared.standByClockValue, случай .single(let model) = clock.blockType { ZStack { Изображение(lock.imageName ?? "текстура - 1") Текст (DateFormatter.hourAndMinute.string (от: вход.дата)) .font(.custom(model.font.fontName, размер: 50)) .foregroundColor(Цвет(model.textColor)) if !UserDefaultStorage.shared.hasPremiumStatus, UserDefaultStorage.shared.isLastTryTime { ПремиумВью() } } .widgetBackground(Color.black) } еще { если !UserDefaultStorage.shared.hasPremiumStatus { ZStack { ВиджетEmptyView() .widgetBackground(Цвет.черный) } } } } } структура WidgetEmptyView: Просмотр { var body: some View { ZStack { Изображение("текстура - 1") .scaledToFill() Черный цвет ВСтек { Изображение("Кадр 11114563") .изменяемый размер() .padding(.дно, 10) .frame(ширина: 70, высота: 70) Текст("Выберите часы") .foregroundColor(.white) .frame(ширина: 150) .multilineTextAlignment(.center) .font(.custom("Гилрой-Болд", размер: 20)) .dynamicTypeSize(.medium) } } } }
Мобильная версия