iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
0
自我挑戰組

Swift - 來吧!鐵人三十項系列 第 23

Day23:當天的鐵人當天寫 - 根據系統時間顯示不同啟動畫面

  • 分享至 

  • xImage
  •  

前前言

嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第二三篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。


前言

突然插播這個主題,是因為自己在實作另一個 APP 的時候,突然想到,如果可以因為時間點的不同(例如:早上、晚上、或者某個特定日期)而顯示不一樣的啟動畫面,不僅是圖片改變了、文字也跟著改,感覺還滿酷的,而且也可以起到一定的療癒作用(如果你寫的是關心他人的文字)

因為 iOS APP 的啟動畫面可以做在 LaunchScreen.storyboard 或是自己在 Main.storyboard 製作一個啟動畫面,故一開始的想法是 - 如何根據裝置時間切換不同的 LaunchScreen 去下關鍵字,然後下了一個上午,突然覺得心灰意冷,不知道是下錯還是沒人想要這樣做,找不到類似的文章(多半都是拉長啟動畫面秒數)

後來轉念一想,如果我想要在 Storyboard 操控文字或是圖片,必須建立 IBOutlet 連結,然後又再想想,我的需求是「根據不同時間顯示不同的圖片及文字」,而不是「切換 LaunchScreen」,那這樣子的話,我要想的辦法就是 - 如何跟 LaunchScreen.storyboard 裡的圖片及文字建立連結

然後我就找到了工作室夥伴 Jeremy Xue 的 D6 - 讓我們在啟動畫面(Launch Screen)做一些怪怪的事吧,在文章中,操控 LaunchScreen 裡頭物件的方法為 viewWithTag,就讓我們看下去吧


實作小東西測試 - LaunchScreen

先在 Assets.xcassets 放入你要切換的背景圖素材:

去 LaunchScreen.storyboard
拉一個 ImageView 設定 Auto Layout 及 tag 為 1:

然後拉一個 Label 設定 Auto Layout 及 tag 為 2(不要打字上去)


實作小東西測試 - ViewController

因為要取得特定時間格式,故先宣告一個 DateFormatter():

接下來因為只想取得系統時間裡的「時」,故寫一個方法來回傳 Int:

然後是訪問 LaunchScreen 的 ViewController,可詳前言的文章

在方法裡繼續寫使用 viewWithTag 操控圖片的條件:

在方法裡繼續寫使用 viewWithTag 操控文字的條件及動畫:

最後在 viewDidLoad call 它:


實作小東西測試 - Demo

(Status Bar 的時間似乎是「錄製影片」狀態就會只呈現 9:41,並非是沒修改到時間)


後記

這個僅為我自己玩玩而已,不知道實際應用到專案上會有什麼問題
若想參考整個 project,可詳我的 GitHub


上一篇
Day22:當天的鐵人當天寫 - Set、Closure(1)
下一篇
Day24:當天的鐵人當天寫 - 畫面版本號碼自動更新
系列文
Swift - 來吧!鐵人三十項30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言