0697440437f6aa93305aefdecf9f4626ef935857
Вынесена реализация виджета в отдельный target с корректным embedding и Info.plist, чтобы сборка и запуск работали стабильно на устройстве, а также улучшена адаптивная верстка меток и фонового контейнера для соответствия требованиям WidgetKit. Co-authored-by: Cursor <cursoragent@cursor.com>
360Clock
iOS-приложение на SwiftUI с 24-часовым циферблатом (360°) и Home Screen виджетом на WidgetKit.
Что умеет
- Основной экран с 24-часовой логикой углов.
- Виджет
systemSmallиsystemMedium. - Три стрелки: часовая, минутная, секундная.
- Адаптивная разметка меток в виджете (без слипания на маленьком размере).
Структура проекта
360Clock/ClockApp.swift— точка входа приложения.360Clock/ClockView.swift— UI и расчеты для основного экрана.360Clock/Info.plist—Info.plistосновного приложения.ClockWidgetExtension/ClockWidgetBundle.swift— виджет, timeline provider и UI виджета.ClockWidgetExtension/Info.plist—Info.plistextension-таргета.360Clock.xcodeproj/project.pbxproj— настройки таргетов app + widget extension.
Важно про обновление виджета
WidgetKit не гарантирует секундные обновления на Home Screen. В текущей реализации timeline запрашивается с шагом в 1 минуту, что соответствует системным ограничениям и budget-политике iOS.
Сборка
Открой 360Clock.xcodeproj в Xcode, выбери схему 360Clock и запускай на симуляторе или устройстве.
Для проверки через CLI (без подписи):
xcodebuild -scheme 360Clock -configuration Debug -destination 'generic/platform=iOS' -derivedDataPath './DerivedData' CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO build
Description
Languages
Swift
100%