嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第二三篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。
突然插播這個主題,是因為自己在實作另一個 APP 的時候,突然想到,如果可以因為時間點的不同(例如:早上、晚上、或者某個特定日期)而顯示不一樣的啟動畫面,不僅是圖片改變了、文字也跟著改,感覺還滿酷的,而且也可以起到一定的療癒作用(如果你寫的是關心他人的文字)
因為 iOS APP 的啟動畫面可以做在 LaunchScreen.storyboard 或是自己在 Main.storyboard 製作一個啟動畫面,故一開始的想法是 - 如何根據裝置時間切換不同的 LaunchScreen 去下關鍵字,然後下了一個上午,突然覺得心灰意冷,不知道是下錯還是沒人想要這樣做,找不到類似的文章(多半都是拉長啟動畫面秒數)
後來轉念一想,如果我想要在 Storyboard 操控文字或是圖片,必須建立 IBOutlet 連結,然後又再想想,我的需求是「根據不同時間顯示不同的圖片及文字」,而不是「切換 LaunchScreen」,那這樣子的話,我要想的辦法就是 - 如何跟 LaunchScreen.storyboard 裡的圖片及文字建立連結
然後我就找到了工作室夥伴 Jeremy Xue 的 D6 - 讓我們在啟動畫面(Launch Screen)做一些怪怪的事吧,在文章中,操控 LaunchScreen 裡頭物件的方法為 viewWithTag
,就讓我們看下去吧
先在 Assets.xcassets 放入你要切換的背景圖素材:
去 LaunchScreen.storyboard
拉一個 ImageView 設定 Auto Layout 及 tag 為 1:
然後拉一個 Label 設定 Auto Layout 及 tag 為 2(不要打字上去)
因為要取得特定時間格式,故先宣告一個 DateFormatter():
接下來因為只想取得系統時間裡的「時」,故寫一個方法來回傳 Int:
然後是訪問 LaunchScreen 的 ViewController,可詳前言的文章:
在方法裡繼續寫使用 viewWithTag
操控圖片的條件:
在方法裡繼續寫使用 viewWithTag
操控文字的條件及動畫:
最後在 viewDidLoad call 它:
(Status Bar 的時間似乎是「錄製影片」狀態就會只呈現 9:41,並非是沒修改到時間)
這個僅為我自己玩玩而已,不知道實際應用到專案上會有什麼問題
若想參考整個 project,可詳我的 GitHub