二種外裝 — 金與銀
主題經由 Environment 分發至全部畫面,即時切換。錶盤・指針・數字之樣式,皆依外裝各自造分。
金 — 狩獵錶
紺瑠璃琺瑯×金彩羅馬數字(IIII 標記)・新月與八芒星之中央紋
古金(做舊黃銅)之彫金錶殼。6時位置設有下個刻限之小窗
#8F7028
瑠璃 #101838
金彩 #D9B45C
月金 #F2DC96
tint #A67C2E
銀 — 鐵道錶
白色錶盤・粗體阿拉伯數字・棒形指針
秒針依循鐵道錶之作法,以紅色點綴
#9CA3AE
白瓷 #FAFAF7
鐵黑 #1A1C22
赤 #B02E2E
tint #44546A
以指針調校時刻
不採用 DatePicker。以拖曳錶盤指針本身之所作,取代旋轉錶冠之動作,藉此決定鳴動時刻。下方錶盤可供實際拖曳操作。
上午7:30
- 角度→時刻轉換 — 以 atan2 將拖曳座標角度化,分針以 6°、時針以 30° 為刻度量子化(以
ClockAngleMath純函式化並納入測試對象)。 - 連動 — 旋轉分針時,時針將以 0.5°/分 隨之追動。跨越 0 分則進位/退位一時(依 45→15 分之跨越判定)。
- 觸感 — 每 1 分刻度皆附 .sensoryFeedback(.selection)。將齒輪之咔嗒觸感回饋於指尖。
- 選取中之指針 — 於指針尖端顯示黃銅色圓環(旋鈕),以示正操作何者。
- 確定 — 以「依此時刻校準」牌匾保存。並轉換為 AlarmKit 之 Alarm.Schedule.relative。
刻之濁 — 宵闇與曉光
夜色愈深,錶盤便如靈魂之器般漸漸濁染成紫紺。曉光之刻,濁澱隨光一同淨化。日落之際,當季星座將於盤面浮現生光。請以下方滑桿試著讓一日流轉一週。
21:00宵
- 濁澱 — 自16時至入宵,盤面邊緣逐漸湧滿紫紺濁澱,於23時至4時達到最大。以相乘混合之多層漸層,使象牙底色如「器皿之底」般沉澱下陷。
- 曉光之淨化 — 4時〜6時,自上方灑落之光(螢幕混合)將濁澱溶解。主視覺懷錶與實際時刻連動,恆常經歷此一週期。
- 當季星座 — 日落(±2小時)之際,當季星座將以金色浮現。春=獅子座 / 夏=天蠍座 / 秋=仙后座 / 冬=獵戶座。夜間則以微光留存。
- SwiftUI 實作 — 以
TimelineView(.everyMinute)算出時刻係數,反映於 Canvas 之相乘/螢幕描繪與星座路徑之不透明度。
十二宮之蓋 — 逐月更替之星座紋
錶蓋中央鑲嵌紺瑠璃琺瑯,每逢月份更替,便以金色重新刻鏤當月之宮(星座)。伴隨新月與和風月名。主視覺懷錶之錶蓋,正披覆著當月之紋樣。
廻轉星宿 — · 群星帶有深淺層次,於空中持續廻轉。輕撫轉動則帶有慣性
意匠之基調仿自古董懷錶之「瑠璃琺瑯×古金」(參考資料:design-refs/ref-watch.jpg)。星座連線為意匠化之簡式。SwiftUI 中,以 Calendar.current.component(.month) 選取逐月更替之紋樣,並以金彩描繪於 Canvas 之上。
魔導 — 十二宮之秘蹟
以指於盤面畫圓輕撫,上鏈滿十二圈,術式便會顯現。夜為魔導(十二宮共12種)、晝為秘術(6種)、闔蓋則為封咒(6種) — 實機共三大體系24種。本頁之演武,可從中試放代表性的七種。
開蓋之時的魔法
闔蓋之時的魔法(實機中為封咒)
鳴動之刻(刻告鐘發動之時)
刻限一至,整個畫面便金光明滅,伴隨「刻限,已然到來」之刻印,魔法陣隨之展開。
- 上鏈偵測 — 追蹤繞盤面中心之累積旋轉角,每 2π 為一圈。魔法陣之菱紋隨之亮起。放置4秒後,上鏈之力便如霧消散。
- 曉光之祓 — 以光淨化濁澱。盤面強制轉換為曉之狀態,金色光爆隨之迸發。
- 星宿之嵐 — 當季星座燃燒而起,群星自懷錶四散飛濺。
- 逆刻 — 指針高速逆行,魔法陣隨之逆向旋轉。
- 紫電結界 — 紫紺閃光與衝擊。魔法陣轉為紫色。
- 紅蓮之焔 — 火星自懷錶周圍於3D空間中飛舞升起(透視投影粒子,附帶搖曳效果)。
- 蒼波之渦 — 波紋自足下擴散,飛沫受重力牽引描出弧線。
- 疾風之環 — 風之筋脈一邊繞行懷錶前後一邊環周而過,風壓使懷錶隨之搖晃。
- SwiftUI 實作 — 旋轉偵測為
atan2之累積(附加於 ClockAngleMath),魔法統一為 protocolSpellEffect,欄位設定則存於 UserDefaults。鳴動之時,偵測 AlarmKit 之 alerting 狀態,以 fullScreenCover 呈現盛大發動。
畫面構成
首頁恆為懷錶。一覽・編輯・刻限計則作為錶蓋內側之工作面,於同一氈布地上以彫金牌匾組成。
汝,解放刻限
下個刻限 — 明日 上午 7:30
長按以切換主題
首頁(RootView)
刻告鐘
上午7:30
平日 · 貪睡 9分
上午9:00
週末
下午10:15
僅此一次
一覽(AlarmListView)
校準時刻
上午7:30
標籤 — 「晨間紅茶」 · 貪睡 9分
依此時刻校準編輯(AlarmEditorView)
刻限計
刻限計(TimerView)
Live Activity / Dynamic Island
刻限計與刻止計皆存活於鎖定畫面與 Dynamic Island 之中。以黑底點綴一抹黃銅之色,縱使身處系統 UI 之中,亦保有懷錶之氣息。
POCKETCHIME
紅茶之刻限計
4:23
鎖定畫面 — 以 Text(timerInterval:) 驅動
Dynamic Island(compact)— 左為錶盤,右為剩餘時間
組版與色彩
字體採用系統襯線體(New York / Hiragino Mincho)。數字以等寬數字刻鏤,英文標籤則加寬字距,擬作彫金之銘文。
10:09
校準時刻
開啟錶蓋,一日便就此展開。捲動指針,靜候時刻。
RAILROAD GRADE · EST. 2026
| 氈布地(背景) | #24331F → #0B110A | |
| 墨字(本文) | #EFE6CD | |
| 黃銅(點綴色) | #C9A24B | |
| 緋紅(秒針・警示) | #A03A2A | |
| 鋼(銀主題) | #AEB6C2 |
| 意匠 | 實作(依循 DESIGN.md) |
|---|---|
| 錶蓋開闔 | rotation3DEffect(axis:(0,1,0), anchor:.leading) + spring 1.3s |
| 指針運行 | 以 TimelineView(.animation) 連續驅動 |
| 指針拖曳 | ClockAngleMath(atan2 之純函式・單元測試對象) |
| 貪睡 | secondaryButtonBehavior: .countdown + postAlert 9分鐘 |
| 剩餘時間顯示 | AlarmAttributes<PocketWatchMetadata> 之 Live Activity |
| 主題傳遞 | 以 tintColor 與 metadata.themeName 貫徹至 Widget |