本文譯自: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,但可以肯定的是,這將意味著新技術的革命,期待吧!