Вынесена реализация виджета в отдельный target с корректным embedding и Info.plist, чтобы сборка и запуск работали стабильно на устройстве, а также улучшена адаптивная верстка меток и фонового контейнера для соответствия требованиям WidgetKit. Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
1.8 KiB
Markdown
33 lines
1.8 KiB
Markdown
# 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.plist` extension-таргета.
|
||
- `360Clock.xcodeproj/project.pbxproj` — настройки таргетов app + widget extension.
|
||
|
||
## Важно про обновление виджета
|
||
|
||
WidgetKit не гарантирует секундные обновления на Home Screen. В текущей реализации timeline запрашивается с шагом в 1 минуту, что соответствует системным ограничениям и budget-политике iOS.
|
||
|
||
## Сборка
|
||
|
||
Открой `360Clock.xcodeproj` в Xcode, выбери схему `360Clock` и запускай на симуляторе или устройстве.
|
||
|
||
Для проверки через CLI (без подписи):
|
||
|
||
```bash
|
||
xcodebuild -scheme 360Clock -configuration Debug -destination 'generic/platform=iOS' -derivedDataPath './DerivedData' CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO build
|
||
``` |