Добавить полноценный Widget Extension и исправить отображение циферблата в виджете.
Вынесена реализация виджета в отдельный target с корректным embedding и Info.plist, чтобы сборка и запуск работали стабильно на устройстве, а также улучшена адаптивная верстка меток и фонового контейнера для соответствия требованиям WidgetKit. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
33
README.md
Normal file
33
README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user