To utrustninger — gull og sølv
Temaet distribueres til alle visninger via Environment og byttes øyeblikkelig. Urskive, visere og tallstil er alle utformet forskjellig for hver utrustning.
Gull — jegeruret
Lapisblå emalje × romertall i gullglans (skrevet IIII) · sentralt emblem med halvmåne og åttetakket stjerne
Inngravert kapsel i gammelt gull (patinert messing). Et lite vindu for neste alarm ved klokken 6.
#8F7028
Lapis lazuli #101838
Gullglans #D9B45C
Månegull #F2DC96
Fargetone #A67C2E
Sølv — jernbaneuret
Hvit urskive · tykke arabiske tall · stavformede visere
Sekundviseren er rød, slik skikken er for jernbaneur
#9CA3AE
Hvit porselen #FAFAF7
Jernsort #1A1C22
Rød #B02E2E
Fargetone #44546A
Still klokkeslettet med viserne
DatePicker brukes ikke. I stedet for å trekke i kronen, drar du selve viserne på urskiven for å bestemme alarmtidspunktet. Urskiven nedenfor kan du faktisk dra i.
Formiddag7:30
- Vinkel-til-tid-omregning — Drakoordinatene gjøres om til vinkler med atan2, og kvantiseres i trinn på 6° for minuttviseren og 30° for timeviseren (gjort til en ren funksjon som
ClockAngleMath, dekket av tester). - Samspill — Dreier du minuttviseren, følger timeviseren etter med 0,5°/minutt. Krysser du 0 minutter, skyves timen frem/tilbake (avgjøres ved kryssing mellom 45 og 15 minutter).
- Taktil respons — .sensoryFeedback(.selection) for hvert minutts trinn. Gir fingeren følelsen av et tannhjuls klikk.
- Valgt viser — En ring i messingfarge (en knott) vises på tuppen av viseren, og viser hvilken som styres.
- Bekreftelse — Lagres med platen «Still inn dette klokkeslettet». Omgjøres til AlarmKits Alarm.Schedule.relative.
Tidens grums — kveldsmørke og daggry
Jo dypere natten blir, desto mer grumses urskiven til i fiolettblått, som et sjelekar. Ved daggry renses grumset bort av lyset. Ved solnedgang trer årstidens stjernebilde frem og lyser på skiven. Prøv å la døgnet gå rundt med glidebryteren nedenfor.
21:00Kveld
- Grums — Fra klokken 16 og utover kvelden fylles urskivens kant med et fiolettblått bunnfall, som når sitt maksimum mellom 23 og 04. Med flerlags gradienter i multiplikasjonsblending synker den elfenbenshvite bunnfargen som «bunnen av et kar».
- Daggryets renselse — Mellom klokken 4 og 6 løser et lys ovenfra (skjermblending) opp bunnfallet. Hovedurets visning følger det faktiske klokkeslettet og lever alltid gjennom denne syklusen.
- Årstidens stjernebilde — Ved solnedgang (±2 timer) trer årstidens stjernebilde frem i gull. Vår = Løven / Sommer = Skorpionen / Høst = Cassiopeia / Vinter = Orion. Om natten blir det værende med et svakt skjær.
- SwiftUI-implementasjon —
TimelineView(.everyMinute)beregner en tidskoeffisient, som reflekteres i Canvas' multiplikasjons-/skjermtegning og stjernebildebanens ugjennomsiktighet.
Dyrekretsens lokk — månedsskiftende stjernetegn
I midten av lokket er det innfelt lapisblå emalje, og hver gang måneden skifter, risses den månedens tegn (stjernebilde) på ny i gull, sammen med en halvmåne og det japanske månedsnavnet. Lokket på hovedbildets ur bærer nå inneværende måneds mønster.
Kretsende stjernebilde — · Stjernene har dybde og kretser videre i rommet. Stryk for å dreie dem, så følger de med i svingen
Utformingens tone følger antikke lommeurs «lapisemalje × gammelt gull» (referanse: design-refs/ref-watch.jpg). Stjernebildelinjene er en stilisert, forenklet form. I SwiftUI velges det månedsskiftende mønsteret med Calendar.current.component(.month), og det tegnes i gullglans på et Canvas.
Arkana — dyrekretsens mysterium
Stryk en sirkel over skiven, og trekk opp tolv runder, så manifesterer besvergelsen seg. Om natten Arkana (12 fra dyrekretsen), om dagen Solkunster (6), og lukkes lokket, Forsegling (6) — i selve appen finnes 24 til sammen, fordelt på tre systemer. Demonstrasjonen på denne siden lar deg prøve syv utvalgte representanter.
Magi når lokket er åpent
Magi når lokket er lukket (Forsegling i selve appen)
Alarmens time (når alarmklokken utløses)
Når timen er inne, blinker hele skjermen gyllent, og en magisk sirkel folder seg ut sammen med inskripsjonen «Timen er kommet».
- Registrering av opptrekking — Sporer den akkumulerte rotasjonsvinkelen rundt skivens sentrum; for hver 2π regnes én opptrekking. Romben i den magiske sirkelen tennes. Lar du den ligge urørt i 4 sekunder, går opptrekkingen i oppløsning.
- Morgenlysets renselse — Renser bort grumset med lys. Skiven tvinges over i daggrytilstand, og et gyllent utbrudd farer gjennom.
- Stjernebildenes storm — Årstidens stjernebilde blusser opp, og stjernene spres bort fra uret.
- Tidsreversen — Viserne går raskt bakover, og den magiske sirkelen roterer motsatt vei.
- Fiolett lynbarriere — Et fiolettblått lysglimt og et støt. Den magiske sirkelen skifter til fiolett.
- Karmosinflammen — Gnister stiger opp i tredimensjonalt rom rundt uret (perspektivprojiserte partikler med flakking).
- Den blå bølgevirvel — Ringer brer seg ut ved føttene, og sjørokk trekkes av tyngdekraften i buer.
- Stormvindens ring — Vindstriper kretser rundt foran og bak uret, og vindtrykket får det til å svinge.
- SwiftUI-implementasjon — Rotasjonsregistrering er en akkumulering av
atan2(lagt til i ClockAngleMath); magien er samlet i protokollenSpellEffect, og plassinnstillinger lagres i UserDefaults. Ved alarm registreres AlarmKits alerting-tilstand, og den store manifestasjonen vises med fullScreenCover.
Skjermoppbygning
Hjemskjermen er alltid uret. Oversikt, redigering og timeglass er bygd som arbeidsflater på innsiden av lokket, satt sammen med inngravde messingplater på samme filttekstur.
Du, sett timen fri!
Neste alarm — i morgen kl. 07:30
Langt trykk bytter tema
Hjem (RootView)
Alarmklokken
Formiddag7:30
Hverdager · utsettelse 9 min
Formiddag9:00
Helg
Ettermiddag10:15
Kun én gang
Oversikt (AlarmListView)
Still klokkeslettet
Formiddag7:30
Merkelapp — «Morgente» · utsettelse 9 min
Still inn dette klokkeslettetRedigering (AlarmEditorView)
Timeglasset
Timeglasset (TimerView)
Live Activity / Dynamic Island
Timeglasset og stoppeklokken lever på låseskjermen og i Dynamic Island. Med et snev av messing mot svart bakgrunn bevarer de følelsen av et lommeur, selv inne i systemets brukergrensesnitt.
POCKETCHIME
Teens timeglass
4:23
Låseskjerm — drevet av Text(timerInterval:)
Dynamic Island (compact) — urskive til venstre, gjenværende tid til høyre
Typografi og farger
Skrifttypen er systemets serif (New York / Hiragino Mincho). Tall settes med tabellform (fast bredde), og latinske etiketter gis bred bokstavavstand for å ligne inngraverte messinginskripsjoner.
10:09
Still klokkeslettet
Når lokket åpnes, begynner dagen. Trekk opp viserne, og vent på tiden.
RAILROAD GRADE · EST. 2026
| Filttekstur (bakgrunn) | #24331F → #0B110A | |
| Blekksvart (brødtekst) | #EFE6CD | |
| Messing (aksent) | #C9A24B | |
| Skarlagenrød (sekundviser, varsel) | #A03A2A | |
| Stål (sølvtema) | #AEB6C2 |
| Utforming | Implementasjon (i tråd med DESIGN.md) |
|---|---|
| Åpning/lukking av lokket | rotation3DEffect(axis:(0,1,0), anchor:.leading) + spring 1.3s |
| Visernes gange | Kontinuerlig drevet med TimelineView(.animation) |
| Dra i viseren | ClockAngleMath (en ren atan2-funksjon, dekket av enhetstester) |
| Utsettelse (snooze) | secondaryButtonBehavior: .countdown + postAlert 9 min |
| Visning av gjenværende tid | Live Activity med AlarmAttributes<PocketWatchMetadata> |
| Temaspredning | Konsistent helt til widgeten via tintColor og metadata.themeName |