İki Kasa — Altın ve Gümüş
Tema, Environment aracılığıyla tüm görünümlere dağıtılır ve anında değişir. Kadranın, ibrelerin ve rakamların biçemi bile her kasa için ayrı ayrı tasarlanır.
Altın — Avcı Saati
Lacivert lapis emaye × altın yaldızlı Roma rakamları (IIII gösterimi) · hilal ve sekiz köşeli yıldızdan oluşan merkezi nişan
Eski altın (yaşlandırılmış pirinç) kazımalı kasa. Saat 6 konumunda bir sonraki vakit için küçük bir pencere
#8F7028
Lapis #101838
Altın Yaldız #D9B45C
Ay Altını #F2DC96
tint #A67C2E
Gümüş — Demiryolu Saati
Beyaz kadran · kalın Arap rakamları · çubuk ibreler
Saniye ibresi, demiryolu saati geleneğine uygun biçimde kırmızı takılır
#9CA3AE
Beyaz Porselen #FAFAF7
Demir Siyahı #1A1C22
Kırmızı #B02E2E
tint #44546A
İbrelerle Saati Ayarlama
DatePicker kullanılmaz. Kurgu düğmesini çevirme hareketinin yerine, kadranın ibrelerinin kendisini sürükleyerek çalma saatini belirlersin. Aşağıdaki kadranı gerçekten sürükleyebilirsin.
ÖÖ7:30
- Açı→Saat Dönüşümü — sürükleme koordinatları atan2 ile açıya çevrilir, dakika ibresi 6°'lik, saat ibresi 30°'lik adımlarla nicelenir (
ClockAngleMatholarak saf bir fonksiyona dönüştürülüp test kapsamına alınır). - Bağlantı — dakika ibresi çevrildiğinde saat ibresi dakikada 0,5° ile onu izler. 0 dakikayı geçtiğinde saat ileri/geri alınır (45→15 dakika geçişiyle belirlenir).
- Dokunsal Geri Bildirim — her 1 dakikalık adımda .sensoryFeedback(.selection). Dişlinin tıklama hissini parmağına geri verir.
- Seçili İbre — ibrenin ucunda pirinç renkli bir halka (topuz) gösterilir, hangisinin kullanıldığını belirtir.
- Onaylama — «Bu Saate Ayarla» levhasıyla kaydedilir. AlarmKit'in Alarm.Schedule.relative'ine dönüştürülür.
Vaktin Bulanıklığı — Alacakaranlık ve Şafak
Gece derinleştikçe, kadran bir ruh kabı gibi mor-laciverte bulanıklaşır. Şafak vaktinde, bulanıklık ışıkla birlikte arınır. Gün batımı vaktinde, mevsimin takımyıldızı kadranda belirip ışıldar. Aşağıdaki kaydırıcıyla bir günü baştan sona gezdirebilirsiniz.
21:00Akşam
- Bulanıklık — 16.00'dan akşama doğru kadranın kenarından mor-lacivert bir tortu dolar, 23.00 ile 4.00 arasında en yoğun hâline ulaşır. Çarpma (multiply) karışımlı çok katmanlı bir gradyanla, fildişi zemin rengi «bir kabın dibi» gibi çöker.
- Şafağın Arınması — 4.00 ile 6.00 arasında, yukarıdan gelen ışık (screen karışımı) tortuyu eritir. Kahraman saat, gerçek saate bağlı olarak bu döngüyü her an yaşar.
- Mevsimin Takımyıldızı — gün batımında (±2 saat) o mevsimin takımyıldızı altın renginde belirir. İlkbahar = Aslan / Yaz = Akrep / Sonbahar = Kassiopeia / Kış = Orion. Gece boyunca soluk bir ışıltıyla kalıcı olur.
- SwiftUI Uygulaması —
TimelineView(.everyMinute)ile saat katsayısı hesaplanır ve Canvas'ın çarpma/screen çizimine ve takımyıldız yolunun opaklığına yansıtılır.
On İki Burcun Kapağı — Her Ay Değişen Takımyıldız Nişanı
Kapağın merkezine lacivert lapis emaye kakılmıştır, ay değiştikçe o ayın burcu (takımyıldızı) altınla yeniden kazınır. Bir hilal eşliğinde, geleneksel Japon ay adlarıyla birlikte. Kahraman saatin kapağı, şu anki ayın nişanını taşımaktadır.
Dönen Burçlar — · Yıldızlar derinlik kazanır ve uzayda dönmeye devam eder. Okşayıp döndürürsen eylemsizlik biner
Tasarımın tonu, antika bir cep saatinin «lapis emaye × eski altın» üslubunu izler (kaynak: design-refs/ref-watch.jpg). Takımyıldız çizgileri, üslupsallaştırılmış sade bir biçimdir. SwiftUI'de her ayın nişanı Calendar.current.component(.month) ile seçilir ve Canvas üzerine altın yaldızla çizilir.
Sihir — On İki Burcun Sırları
Kadranı daire çizerek okşa, on iki tur kurunca sanat tezahür eder. Gece Sihir (on iki burçtan 12 tür), gündüz Güneş Sanatı (6 tür), kapak zincilenmişken Mühür (6 tür) — gerçek cihazda üç sistemden 24 tür bulunur. Bu sayfanın gösterimi, bunlardan yedi temsilî örneği denemene izin verir.
Kapak açıldığında beliren büyü
Kapak zincilendiğinde beliren büyü (gerçek cihazda Mühür)
Çalma Vakti (Vakit Çanı tetiklendiğinde)
Vakit gelince tüm ekran altın renginde titreşir, «Vakit Geldi» yazısıyla birlikte büyü dairesi açılır.
- Kurma Algılama — kadranın merkezi etrafındaki toplam dönüş açısı izlenir, her 2π'de bir kurma sayılır. Büyü dairesinin eşkenar dörtgenleri tutuşur. 4 saniye dokunulmazsa kurma dağılıp gider.
- Şafak Işığının Arınması — Bulanıklığı ışıkla arındırır. Kadran zorla şafak durumuna geçer, altın renkli bir patlama yayılır.
- Takımyıldız Fırtınası — Mevsimin takımyıldızı alevlenir, yıldızlar saatten dört bir yana saçılır.
- Zaman Geri Sarma — İbreler büyük hızla geri gider, büyü dairesi tersine döner.
- Mor Yıldırım Seti — Mor-lacivert bir parıltı ve sarsıntı. Büyü dairesi mora döner.
- Kızıl Alev — Saatin çevresinden kıvılcımlar 3D uzayda yükselir (perspektif izdüşümlü parçacıklar, titreşimli).
- Mavi Dalga Girdabı — Ayaklarının altında dalgacıklar yayılır, sıçrayan damlalar yerçekimine kapılıp bir yay çizer.
- Kasırga Halkası — Rüzgâr çizgileri saatin önünden arkasından dolanarak döner, rüzgârın basıncıyla saat sallanır.
- SwiftUI Uygulaması — dönüş algılama
atan2birikimiyle yapılır (ClockAngleMath'e eklenir), büyüler protocolSpellEffectaltında birleştirilir ve yuva ayarları UserDefaults'a kaydedilir. Çalma anında AlarmKit'in alerting durumu algılanarak fullScreenCover ile büyük açılım tetiklenir.
Ekran Düzeni
Ana Ekran her zaman saattir. Liste, düzenleme ve Kum Saati, kapağın iç yüzeyindeki çalışma yüzeyleri olarak, aynı keçe zemin üzerine kazınmış levhalarla kurulur.
Sen, Vakti Salıver
Sıradaki vakit — Yarın ÖÖ 7:30
Kasa değiştirmek için basılı tut
Ana Ekran (RootView)
Vakit Çanı
ÖÖ7:30
Hafta içi · Erteleme 9 dk
ÖÖ9:00
Hafta sonu
ÖS10:15
Yalnızca bir kez
Liste (AlarmListView)
Saati Ayarla
ÖÖ7:30
Etiket — «Sabah Çayı» · Erteleme 9 dk
Bu Saate AyarlaDüzenle (AlarmEditorView)
Kum Saati
Kum Saati (TimerView)
Live Activity / Dynamic Island
Kum Saati ve Kronometre, Kilit Ekranı'nda ve Dynamic Island'da yaşamaya devam eder. Siyah zemin üzerine tek bir pirinç vurgusuyla, sistem arayüzünün içinde bile cep saatinin varlığını korur.
POCKETCHIME
Çay Kum Saati
4:23
Kilit Ekranı — Text(timerInterval:) ile sürülür
Dynamic Island (compact) — solda kadran, sağda kalan süre
Tipografi ve Renk
Yazı tipi, sistemin serif fontudur (New York / Hiragino Mincho). Rakamlar eşit aralıklı (tabular) rakamlarla kazınır, Latin harfli etiketler ise geniş harf aralığıyla bir kazıma yazıt görünümü kazanır.
10:09
Saati Ayarla
Kapağı açınca gün başlar. İbreyi kur, vakti bekle.
RAILROAD GRADE · EST. 2026
| Keçe zemin (arka plan) | #24331F → #0B110A | |
| Mürekkep yazı (gövde metni) | #EFE6CD | |
| Pirinç (vurgu) | #C9A24B | |
| Kızıl (saniye ibresi, uyarı) | #A03A2A | |
| Çelik (Gümüş kasa) | #AEB6C2 |
| Tasarım | Uygulama (DESIGN.md'ye göre) |
|---|---|
| Kapağın açılıp kapanması | rotation3DEffect(axis:(0,1,0), anchor:.leading) + spring 1.3s |
| İbrelerin hareketi | TimelineView(.animation) ile sürekli olarak sürülür |
| İbreyi sürükleme | ClockAngleMath (atan2'ye dayanan saf bir fonksiyon, birim testleriyle kapsanır) |
| Erteleme | secondaryButtonBehavior: .countdown + 9 dakikalık postAlert |
| Kalan süre gösterimi | AlarmAttributes<PocketWatchMetadata> üzerinden Live Activity |
| Tema yayılımı | tintColor ve metadata.themeName ile Widget'a kadar tutarlı |