Dwie Obudowy — Złoto i Srebro
Motyw jest rozprowadzany do wszystkich widoków poprzez Environment i przełącza się natychmiastowo. Styl tarczy, wskazówek i cyfr jest odrębnie zaprojektowany dla każdej obudowy.
Złoto — Zegarek Myśliwski
Emalia z ciemnego lapisu × złocone cyfry rzymskie (zapis IIII) · centralne godło z półksiężyca i ośmioramiennej gwiazdy
Grawerowana koperta ze starego złota (postarzanego mosiądzu). Przy godzinie 6 znajduje się małe okienko z kolejną Godziną.
#8F7028
Lapis #101838
Złoty Akcent #D9B45C
Księżycowe Złoto #F2DC96
tint #A67C2E
Srebro — Zegarek Kolejowy
Biała tarcza · grube cyfry arabskie · wskazówki-kreski
Sekundnik osadzony na czerwono, zgodnie z tradycją zegarków kolejowych
#9CA3AE
Biała Porcelana #FAFAF7
Czerń Żelaza #1A1C22
Czerwień #B02E2E
tint #44546A
Ustaw czas za pomocą wskazówek
Nie korzystamy z DatePickera. Zamiast gestu nakręcania korony, godzinę dzwonienia ustala się, przeciągając bezpośrednio wskazówki tarczy. Tarcza poniżej daje się realnie przeciągać.
rano7:30
- Konwersja kąta na czas — współrzędne przeciągnięcia zamieniane są na kąt za pomocą atan2, a następnie kwantyzowane co 6° dla wskazówki minutowej i co 30° dla godzinowej (jako czysta funkcja
ClockAngleMath, objęta testami). - Sprzężenie — obrót wskazówki minutowej powoduje, że godzinowa podąża za nią z prędkością 0.5°/minutę. Przekroczenie 0 minut przesuwa godzinę w przód lub w tył (wykrywane przy przejściu 45→15 minut).
- Wibracje dotykowe — przy każdym 1-minutowym kroku .sensoryFeedback(.selection). Oddaje palcom wrażenie kliknięcia trybika.
- Aktywna wskazówka — na jej czubku wyświetlany jest pierścień (pokrętło) w kolorze mosiądzu, wskazujący, którą wskazówką aktualnie sterujesz.
- Potwierdzenie — zapis następuje za pomocą tabliczki „Ustaw na tę godzinę”. Zostaje ona przekształcona w Alarm.Schedule.relative z AlarmKit.
Zmącenie Czasu — Zmierzch i Brzask
Im głębsza noc, tym bardziej tarcza mętnieje na fioletowoindygowo, niczym naczynie duszy. O godzinie brzasku zmącenie zostaje oczyszczone światłem. O godzinie zachodu słońca na tarczy rozbłyska gwiazdozbiór danej pory roku. Spróbuj przesunąć suwak poniżej, by przemierzyć cały dzień.
21:00Wieczór
- Zmącenie — od 16:00 do wieczora od brzegu tarczy zaczyna wzbierać fioletowoindygowy osad, osiągając maksimum między 23:00 a 4:00. Dzięki wielowarstwowemu gradientowi w trybie mieszania przez mnożenie, kość słoniowa tła zapada się niczym „dno naczynia”.
- Oczyszczenie brzasku — między 4:00 a 6:00 światło z góry (kompozycja screen) rozpuszcza osad. Zegarek w sekcji głównej żyje tym cyklem nieprzerwanie, w zgodzie z rzeczywistą porą dnia.
- Gwiazdozbiór pory roku — o zachodzie słońca (±2 godziny) gwiazdozbiór danej pory roku ukazuje się w złocie. Wiosna = Lew / Lato = Skorpion / Jesień = Kasjopeja / Zima = Orion. Nocą pozostaje widoczny słabym blaskiem.
- Implementacja SwiftUI — współczynnik czasu obliczany jest za pomocą
TimelineView(.everyMinute)i przekładany na rysowanie w trybie mnożenia/screen w Canvas oraz na przezroczystość ścieżki gwiazdozbioru.
Wieczko Dwunastu Domów — Godło Gwiazdozbioru na Każdy Miesiąc
W środku wieczka osadzona jest emalia z ciemnego lapisu, na której z każdą zmianą miesiąca na nowo wygrawerowany zostaje w złocie Dom (gwiazdozbiór) danego miesiąca — wraz z półksiężycem i tradycyjną japońską nazwą miesiąca. Wieczko zegarka w sekcji głównej nosi wzór bieżącego miesiąca.
Wirujące Gwiazdozbiory — · gwiazdy posiadają głębię i nieprzerwanie krążą w przestrzeni. Głaszcz je, by wprawić w ruch, a bezwładność poniesie je dalej
Ton projektu wzoruje się na „emalii lapis × stare złoto” antycznych zegarków kieszonkowych (materiał źródłowy: design-refs/ref-watch.jpg). Linie gwiazdozbiorów są stylizowaną, uproszczoną formą. W SwiftUI comiesięczny wzór wybierany jest za pomocą Calendar.current.component(.month) i rysowany w złotym akcencie na Canvas.
Arkana — Misteria Dwunastu Domów
Głaszcz tarczę, kreśląc okręgi, a po dwunastu obrotach nakręcania ukaże się sztuka. Nocą Arkana (12 rodzajów, po jednym na Dom), dniem Sztuki Słoneczne (6 rodzajów), przy zamkniętym wieczku Pieczęcie (6 rodzajów) — na rzeczywistym urządzeniu łącznie 24 rodzaje w trzech systemach. Pokaz na tej stronie pozwala wypróbować siedem reprezentatywnych przykładów spośród nich.
Magia przy otwarciu wieczka
Magia przy zamknięciu wieczka (na rzeczywistym urządzeniu: Pieczęć)
Godzina Dzwonienia (przy uruchomieniu Dzwonu Godzin)
Gdy nadchodzi Godzina, cały ekran rozbłyska złotem, a krąg magiczny rozwija się wraz z napisem „Godzina nadeszła”.
- Wykrywanie nakręcania — śledzony jest skumulowany kąt obrotu wokół środka tarczy; każde 2π liczy się jako jeden obrót. Zapala się romb kręgu magicznego. Po 4 sekundach bezczynności nakręcanie rozwiewa się.
- Oczyszczenie Światłem Brzasku — Oczyszcza zmącenie światłem. Tarcza zostaje wymuszona do przejścia w stan brzasku, a przez nią przebiega złocisty rozbłysk.
- Burza Gwiazdozbiorów — Gwiazdozbiór pory roku rozbłyska ogniem, a gwiazdy rozpryskują się z zegarka.
- Cofnięcie Czasu — Wskazówki pędzą wstecz, a krąg magiczny obraca się w przeciwną stronę.
- Bariera Fioletowego Błysku — Fioletowoindygowy błysk i wstrząs. Krąg magiczny zabarwia się na fioletowo.
- Szkarłatny Płomień — Iskry unoszą się wokół zegarka w przestrzeni 3D (cząsteczki w rzucie perspektywicznym, z migotaniem).
- Wir Błękitnych Fal — Zmarszczki fal rozchodzą się pod stopami, a bryzgi, ciągnięte grawitacją, kreślą łuki.
- Pierścień Wichru — Smugi wiatru okrążają zegarek, owijając się wokół niego z przodu i z tyłu, a jego ciśnienie sprawia, że zegarek się kołysze.
- Implementacja SwiftUI — wykrywanie obrotu opiera się na kumulacji
atan2(dodane do ClockAngleMath), magia jest ujednolicona pod protokołemSpellEffect, a ustawienia slotów trafiają do UserDefaults. Przy dzwonieniu wykrywany jest stan alerting z AlarmKit, wyzwalający wielką erupcję poprzez fullScreenCover.
Układ Ekranów
Ekran główny to zawsze zegarek. Lista, edycja i klepsydra są ułożone jako powierzchnie robocze na wewnętrznej stronie wieczka — grawerowane tabliczki na tym samym filcu.
Ty, wyzwól Godzinę
Kolejna Godzina — jutro, 7:30 rano
Przytrzymaj, by zmienić motyw
Ekran główny (RootView)
Dzwon Godzin
rano7:30
Dni robocze · Drzemka 9 min
rano9:00
Weekendy
po południu10:15
Tylko raz
Lista (AlarmListView)
Ustaw godzinę
rano7:30
Etykieta — „Poranna herbata” · Drzemka 9 min
Ustaw na tę godzinęEdycja (AlarmEditorView)
Klepsydra
Klepsydra (TimerView)
Live Activity / Dynamic Island
Klepsydra i Chronometr żyją na ekranie blokady i w Dynamic Island. Dzięki jednemu akcentowi mosiądzu na czarnym tle zachowują aurę kieszonkowego zegarka nawet w systemowym interfejsie.
POCKETCHIME
Klepsydra na herbatę
4:23
Ekran blokady — napędzany przez Text(timerInterval:)
Dynamic Island (compact) — tarcza po lewej, pozostały czas po prawej
Typografia i Kolor
Krój pisma to systemowa szeryfowa (New York / Hiragino Mincho). Cyfry wyryte są w stałej szerokości (tabular), a łacińskie etykiety mają szeroko rozstawione litery, przywodzące na myśl grawerowaną inskrypcję.
10:09
Ustaw godzinę
Gdy wieczko się otwiera, zaczyna się dzień. Nakręć wskazówki i czekaj na swoją godzinę.
RAILROAD GRADE · EST. 2026
| Filc (tło) | #24331F → #0B110A | |
| Czerń atramentu (tekst) | #EFE6CD | |
| Mosiądz (akcent) | #C9A24B | |
| Szkarłat (sekundnik, ostrzeżenia) | #A03A2A | |
| Stal (motyw srebrny) | #AEB6C2 |
| Projekt | Implementacja (zgodnie z DESIGN.md) |
|---|---|
| Otwieranie i zamykanie wieczka | rotation3DEffect(axis:(0,1,0), anchor:.leading) + spring 1.3s |
| Ruch wskazówek | Ciągłe napędzanie przez TimelineView(.animation) |
| Przeciąganie wskazówek | ClockAngleMath (czysta funkcja oparta na atan2, objęta testami jednostkowymi) |
| Drzemka | secondaryButtonBehavior: .countdown + postAlert 9 min |
| Wyświetlanie pozostałego czasu | Live Activity oparte na AlarmAttributes<PocketWatchMetadata> |
| Propagacja motywu | Spójność aż po widżet dzięki tintColor i metadata.themeName |