Zwei Gehäuse — Gold und Silber
Das Thema wird über die Environment an alle Views verteilt und wechselt augenblicklich. Selbst der Stil von Zifferblatt, Zeigern und Ziffern wird für jedes Gehäuse eigens gestaltet.
Gold — Jägeruhr
Tieflasurblaue Emaille × goldakzentuierte römische Ziffern (Schreibweise IIII) · zentrales Wappen aus Mondsichel und achtzackigem Stern
Graviertes Gehäuse aus Altgold (gealtertem Messing). Ein kleines Fenster für den nächsten Weckruf auf der 6-Uhr-Position.
#8F7028
Lapis #101838
Goldakzent #D9B45C
Mondgold #F2DC96
tint #A67C2E
Silber — Eisenbahneruhr
Weißes Zifferblatt · kräftige arabische Ziffern · Stabzeiger
Der Sekundenzeiger ist, wie bei Eisenbahneruhren üblich, in Rot gehalten
#9CA3AE
Weißporzellan #FAFAF7
Eisenschwarz #1A1C22
Rot #B02E2E
tint #44546A
Die Uhrzeit mit den Zeigern einstellen
Kein DatePicker kommt zum Einsatz. Anstelle der Geste des Kronenaufziehens ziehst du die Zeiger des Zifferblatts selbst, um die Weckzeit zu bestimmen. Das Zifferblatt unten lässt sich tatsächlich ziehen.
vorm.7:30
- Winkel-zu-Zeit-Umrechnung — Zugkoordinaten werden mit atan2 in einen Winkel umgerechnet und für den Minutenzeiger in 6°-, für den Stundenzeiger in 30°-Schritten quantisiert (als reine Funktion
ClockAngleMathimplementiert und durch Tests abgedeckt). - Kopplung — dreht sich der Minutenzeiger, folgt der Stundenzeiger mit 0,5°/Minute. Beim Überschreiten der 0-Minuten-Marke wird die Stunde vor- oder zurückgestellt (erkannt am Übergang von 45 auf 15 Minuten).
- Haptik — bei jedem 1-Minuten-Schritt .sensoryFeedback(.selection). Sie gibt dem Finger das Klickgefühl eines Zahnrads zurück.
- Ausgewählter Zeiger — ein messingfarbener Ring (Knopf) an der Zeigerspitze zeigt an, welcher gerade bedient wird.
- Bestätigung — gespeichert über die Schaltfläche „Auf diese Zeit einstellen". Sie wird in AlarmKits Alarm.Schedule.relative umgewandelt.
Die Trübung der Zeit — Dämmerung und Morgengrauen
Je tiefer die Nacht, desto mehr trübt sich das Zifferblatt wie ein Gefäß der Seele violettindigo ein. Zur Stunde der Morgendämmerung wird die Trübung durch Licht gereinigt. Zur Stunde des Sonnenuntergangs erscheint das Sternbild der Jahreszeit leuchtend auf dem Zifferblatt. Bewege den Regler unten, um einen Tag durchlaufen zu lassen.
21:00Abend
- Trübung — von 16:00 Uhr bis in den Abend hinein füllt sich vom Rand des Zifferblatts ein violettindigoner Bodensatz, der zwischen 23:00 und 4:00 Uhr sein Maximum erreicht. Durch einen mehrschichtigen Verlauf im Multiplikationsmodus sinkt der elfenbeinfarbene Grund wie der „Boden eines Gefäßes" ab.
- Reinigung der Morgendämmerung — zwischen 4:00 und 6:00 Uhr löst Licht von oben (Screen-Blend) den Bodensatz auf. Die Hero-Uhr durchlebt diesen Zyklus fortwährend, synchron zur tatsächlichen Uhrzeit.
- Sternbild der Jahreszeit — bei Sonnenuntergang (±2 Stunden) erscheint das Sternbild der Jahreszeit golden. Frühling = Löwe / Sommer = Skorpion / Herbst = Kassiopeia / Winter = Orion. Nachts bleibt es als schwacher Schimmer bestehen.
- SwiftUI-Implementierung — der Zeitkoeffizient wird mit
TimelineView(.everyMinute)berechnet und fließt in die Multiplikations-/Screen-Zeichnung des Canvas sowie die Deckkraft des Sternbildpfads ein.
Der Deckel der zwölf Häuser — ein Sternbildwappen für jeden Monat
In die Mitte des Deckels ist tieflasurblaue Emaille eingelassen, und mit jedem neuen Monat wird das Haus (Sternbild) dieses Monats neu in Gold eingraviert — begleitet von einer Mondsichel und dem traditionellen japanischen Monatsnamen. Der Deckel der Hero-Uhr trägt das Wappen des laufenden Monats.
Die kreisenden Häuser — · Die Sterne besitzen Tiefe und kreisen unablässig im Raum. Streichst du sie an, trägt die Trägheit sie weiter.
Der Gestaltungston folgt dem „Lapis-Emaille × Altgold" antiker Taschenuhren (Referenz: design-refs/ref-watch.jpg). Die Sternbildlinien sind eine stilisierte Kurzform. In SwiftUI wird das monatlich wechselnde Wappen über Calendar.current.component(.month) ausgewählt und in Goldakzent auf das Canvas gezeichnet.
Arkana — Mysterien der zwölf Häuser
Streiche im Kreis über das Zifferblatt, und nach zwölf Umdrehungen erscheint die Kunst. Nachts Arkana (12 Arten der zwölf Häuser), tags Sonnenkünste (6 Arten), bei geschlossenem Deckel Siegel (6 Arten) — auf dem echten Gerät insgesamt 24 Arten in drei Systemen. Die Vorführung dieser Seite lässt dich sieben repräsentative Beispiele daraus ausprobieren.
Magie beim Öffnen des Deckels
Magie beim Schließen des Deckels (auf dem echten Gerät: Siegel)
Die läutende Stunde (beim Auslösen der Weckglocke)
Ist die Stunde gekommen, flackert der ganze Bildschirm golden, und der Zauberkreis entfaltet sich mit der Inschrift „Die Stunde ist gekommen".
- Aufzieh-Erkennung — verfolgt den kumulierten Drehwinkel um die Mitte des Zifferblatts; je 2π gilt als eine Umdrehung. Die Rauten des Zauberkreises leuchten auf. Bleibt sie 4 Sekunden unberührt, verfliegt das Aufziehen.
- Reinigung des Morgenlichts — Reinigt die Trübung mit Licht. Das Zifferblatt wechselt zwangsweise in seinen Morgendämmerungszustand, und ein goldener Ausbruch durchfährt es.
- Sturm der Sternbilder — Das Sternbild der Jahreszeit entflammt, und seine Sterne stieben von der Uhr davon.
- Rückspulen der Zeit — Die Zeiger laufen rasend rückwärts, und der Zauberkreis dreht sich gegenläufig.
- Bannkreis des Violetten Blitzes — Ein violettindigoner Blitz und ein Stoß. Der Zauberkreis färbt sich violett.
- Karmesinbrand — Funken steigen im dreidimensionalen Raum rings um die Uhr auf (perspektivisch projizierte Partikel mit Flackern).
- Strudel der Blauen Wogen — Wellenringe breiten sich unter den Füßen aus, und Gischt zeichnet, von der Schwerkraft gezogen, Bögen.
- Ring des Sturmwinds — Windbahnen umkreisen die Uhr, indem sie von vorn und hinten um sie herumziehen, und ihr Druck lässt die Uhr schwanken.
- SwiftUI-Implementierung — die Rotationserkennung kumuliert
atan2(ergänzt in ClockAngleMath), Magie wird einheitlich über das ProtocolSpellEffectabgebildet, Slot-Einstellungen liegen in UserDefaults. Beim Läuten erkennt die App den alerting-Zustand von AlarmKit und löst die große Entladung per fullScreenCover aus.
Bildschirmaufbau
Die Startseite ist stets die Uhr. Liste, Bearbeitung und Timer sind als Arbeitsflächen auf der Innenseite des Deckels gestaltet — gravierte Platten auf demselben Filzgrund.
Du sollst die Stunde entfesseln
Nächster Weckruf — morgen, 7:30 Uhr vorm.
Lange drücken, um das Thema zu wechseln
Start (RootView)
Weckglocke
vorm.7:30
Werktags · Schlummern 9 Min.
vorm.9:00
Wochenende
nachm.10:15
Nur einmal
Liste (AlarmListView)
Uhrzeit einstellen
vorm.7:30
Label — „Morgentee" · Schlummern 9 Min.
Auf diese Zeit einstellenBearbeiten (AlarmEditorView)
Timer
Timer (TimerView)
Live Activity / Dynamic Island
Timer und Stoppuhr leben auf dem Sperrbildschirm und in der Dynamic Island fort. Mit einem einzigen Messingakzent auf Schwarz bewahren sie selbst inmitten der System-UI die Aura der Taschenuhr.
POCKETCHIME
Tee-Timer
4:23
Sperrbildschirm — angetrieben durch Text(timerInterval:)
Dynamic Island (Compact) — links das Zifferblatt, rechts die Restzeit
Typografie und Farbe
Die Schrift ist die serifenbetonte Systemschrift (New York / Hiragino Mincho). Ziffern stehen in tabellarischer Breite, und lateinische Beschriftungen erhalten einen weiten Zeichenabstand, der an eine gravierte Inschrift erinnert.
10:09
Uhrzeit einstellen
Öffnet sich der Deckel, beginnt der Tag. Zieh die Zeiger auf und erwarte die Stunde.
RAILROAD GRADE · EST. 2026
| Filzgrund (Hintergrund) | #24331F → #0B110A | |
| Tintenschrift (Fließtext) | #EFE6CD | |
| Messing (Akzent) | #C9A24B | |
| Scharlachrot (Sekundenzeiger, Warnung) | #A03A2A | |
| Stahl (Silber-Thema) | #AEB6C2 |
| Gestaltung | Umsetzung (gemäß DESIGN.md) |
|---|---|
| Öffnen und Schließen des Deckels | rotation3DEffect(axis:(0,1,0), anchor:.leading) + spring 1.3s |
| Zeigerbewegung | Kontinuierlich angetrieben mit TimelineView(.animation) |
| Ziehen der Zeiger | ClockAngleMath (reine atan2-Funktion, durch Unit-Tests abgedeckt) |
| Schlummern | secondaryButtonBehavior: .countdown + postAlert 9 Min. |
| Anzeige der Restzeit | Live Activity über AlarmAttributes<PocketWatchMetadata> |
| Themen-Weitergabe | Durchgängig bis zum Widget via tintColor und metadata.themeName |