WatchKit 框架: 將應用程序從褲兜里取出來
原文 http://beyondvincent.com/2015/01/20/2015-01-20-watchkit-framework-taking-apps-pocket/
本文譯自: WatchKit Framework: Taking Apps Out Of Your Pocket
你是否已經厭倦了總是需要將 iPhone 從褲兜里取出來才能查看消息?你希望像 Michael knight 一樣,通過手腕就能與朋友通話嗎?蘋果已經讓其變得可能:全新的 Apple Watch 和非常酷的 WatchKit 框架。
在為 Apple Watch 開發應用程序(也稱為Watch 應用程序)時,開發者需要清晰的知道,目前Watch 應用程序需要一個運行在 iPhone 上的應用程序。因此,需要有兩個可執行文件:
- Watch 應用程序將運行在 Apple Watch 中,里面包括 storyboard,以及在應用程序界面渲染中需要用到的資源文件。
- WatchKit 擴展將運行在 iPhone 中,包括管理應用程序界面的邏輯代碼,以及處理用戶的交互操作。
當開發一個 Apple Watch 應用程序時,在 storyboard 中的每個 scene 都需要對應的創建一個WKInterfaceController。這個類有2個重要的方法:initWithContext和willActivate,它們負責獲取需要顯示的數據,以及初始化并配置可視化模塊,例如按鈕或文字標簽。
如果需要創建一個 view 來顯示收到的信息(例如收到一條 iMessage 通知,邀請你吃午飯,界面中有按鈕需要你來接受或者拒絕邀請。),此時需要實例化一個WKUserNotificationInterfaceController,該類繼承自WKInterfaceController。
在上面的 interface control 類中,還有另外一些有意思的方法:
- presentTextInputControllerWithSuggestions:completion:這個方法的作用是在屏幕中以模態的方式給用戶顯示一個文本輸入界面——通過讓用戶選擇給出的建議文字。
- updateUserActivity:userInfo:獲得當前應用程序的 activity(例如用戶在屏幕中做了一下 tab 操作),并將其報告給用戶的 iPhone,以進行相關的處理。
在 Watch 應用程序中,有一個重要的概念就是glances。其實glances就是應用程序中一種特殊的界面,用來向用戶顯示特定的信息,它的特殊性就在于其無法滾動,并且是只讀的。這也是為什么 glance 不能包含 UI 組件的緣故,例如按鈕,文本輸入框或滑塊。
在 WatchKit 中,我們可以發現有WKInterfaceDevice,該類包含 Apple Watch 中的用戶配置相關信息。通過該類,我們可以獲取相關信息,與用戶賬號相關聯,并顯示到程序中。
該類另外一個重要的作用就是在 Apple Watch 上緩存圖片,這樣在將來可以使用這些緩存圖片,以此避免每次都需要創建這些圖片,進而降低了程序的性能。
該類的一些方法如下:
- preferredContentSizeCategory:獲取有用戶自定義的字體大小。這個方法對于輔助-驅動的應用程序非常重要。
- addCachedImage:name:將傳入的圖片添加至設備的緩存中。
- removeCacheImageWithName:移除之前緩存的圖片。
最后,WatchKit 引入了幾個 interface object 進行界面的構建,這是 UIKit 的定制版本。例如WKInterfaceButton,WKInterfaceDate,WKInterfaceImage,WKInterfaceLabel,WKInterfaceMap,WKInterfaceSlider, 和WKInterfaceSwitch等。
說句實話,我還沒有戴過 Apple Watch,但可以肯定的是,這將意味著新技術的革命,期待吧!