Apple Watch如今對於第三方開發者來講更多的仍是一塊額外的屏幕。暫時WatchKit沒有能給出足夠的接口。如今Watch App的主要運算邏輯須要依賴iPhone,Apple也承諾會有原生的手錶App,可能要等到Apple Watch和WatchKit的徹底版面世的時候。html
屏幕尺寸 | 38mm | 42mm |
---|---|---|
分辨率 | 272 x 340 | 312 x 390 |
寬高比 | 4:5 | 4:5 |
主屏模式 | Glance模式 | 通知模式 |
---|---|---|
主界面 | 單屏即時信息頁面 | 消息通知界面 |
可自定義佈局,放置button等控件 | 全部信息必須在一屏內展現,不能有交互控件,點擊進入Watch應用 | 有通知的時候喚起,可添加合適的按鈕 |
![]() |
![]() |
![]() |
Short Look | Long Look |
---|---|
查看屏幕上包含應用圖標、名稱、簡單通知內容等信息 | 應用圖標和名稱將會移至屏幕頂端,內容佔據主要的顯示空間,佩戴者能夠滑動來完成其它交互 |
![]() |
![]() |
static | dynamic |
---|---|
直接載入 | 初始化interfaceController後載入 |
![]() |
![]() |
只支持如下手勢,不支持自定義手勢git
手勢 | 行爲 |
---|---|
縱向滑動 | 瀏覽內容 |
橫向滑動 | 頁面間切換 |
點按 | 選擇內容 |
長按擠壓 | 打開菜單 |
數字表冠 | 旋轉,調整滾動速度 |
屏幕邊緣向左掃 | 返回上一個界面 |
屏幕底部向上滑 | 打開Glance界面 |
一個完成的Watch應用由 WatchKit App 和 WatchKit Extension兩部分組成,WatchKit App負責展現,安裝在Watch上,WatchKit Extension負責業務和控制邏輯,安裝在iPhone上。全部運算、邏輯以及控制都是在iPhone上完成。經過WatchKit通信github
Watch App 控制流數組
ViewController 生命週期xcode
WKInterfaceController 至關於UIViewController 。生命週期方法分別是:緩存
-initWithContext: 被初始化時調用,通常在這裏配置視圖元素,至關於-viewDidLoad
-willActivate 將要呈現的時候調用,也能夠在這個方法中進行視圖元素的設置,至關於-viewWillAppear
-didDeactivate 呈現後調用,在這個方法中停用持有self的對象,如NSTimer。至關於-viewDidDisappear架構
WKInterfaceObject 及其子類app
WKInterfaceObject 至關於UIView的代理,WatchKit實際呈現的View對於開發者來講是不可見的,只能經過WKInterfaceObject對UI對象屬性進行設置,能夠設置的屬性很是少。學習成本並不大。
WKInterfaceButton 至關於UIButton的代理
WKInterfaceImage 至關於UIImageView的代理佈局
WatchKit獨立於UIKit,全部的類都繼承自NSObject,沒有完整的Response chain學習
Watch App 的視圖開發不能使用代碼,必須StoryBoard。
Watch App 採起的佈局方式和 iOS App徹底不一樣。不能使用 autoLayout或者座標。只能使用相對佈局。
水平:left center right
垂直:top center bottom
View Size可使用三種方式設置:
Size To Fit Content : View的大小適應內容的大小
Relative To Container : 相對容器設置自身大小
Fixed :設置固定的寬高
WKInterfaceGroup 佈局容器
貌似其餘的WKInterfaceObject子類對象都不能重疊,只有這個類能夠同其餘的WKInterfaceObject對象重疊佈局。至關於Android的layout佈局控件。
WKInterfaceTable 列表視圖
相對於UITableView,不須要設置delegate和dataSource。在初始化的時候直接設置行數和樣式。
經過-setNumberOfRows:withRowType:
經過-rowControllerAtIndex:枚舉每一個行進行設定。
經過rowController設置cell樣式,至關於UITableViewCell。rowController繼承自NSObject,這點同其餘WK組件不一樣。顯示邏輯須要在SB中設置,並綁定。細節看代碼
-(void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex 實現這個方法接受table的點擊回調,不須要也沒法設置delegate。
Menu 視圖
在SB中加入Context Menu,長按屏幕呼出。
能夠經過SB或者代碼的方式設置Menu Item。上下文環境調用如下方法添加:
-addMenuItemWithItemIcon:title:action:
-addMenuItemWithImageNamed:title:action:
-addMenuItemWithImage:title:action:
-clearAllMenuItems除了用SB設置和以上方法外,沒法獲取WKInterfaceMenu和WKInterfaceMenuItem的實例或者代理。
WKInterfaceImage
至關於UIImageView
-setImageNamed: 獲取Watch App的圖片,注意這個圖片必須存儲在Watch App,手錶本身的bundle裏。Extension中的圖片用這個方法是沒法顯示的。
-setImage: -setImageData: 從Extension中獲取圖片,經過藍牙傳送到手錶。
能夠經過WKInterfaceDevice 的 -addCachedImage:name: 方法將Extension中獲取的圖片緩存到手錶中。每一個 app 的 cache 的尺寸大約是 20M,超過的話 WatchKit 將會從最老的數據開始刪除,以騰出空間存儲新的數據。
棧導航方式,相似UINavigationController。觸碰左上角可返回
-pushControllerWIthName:context: 第一個參數是Controller對應的Identifier字符串,在SB中設置。可經過content傳遞數據。
-popController
-popToRootController
modal方式。行爲基本同UIKit同樣,不一樣的是觸碰左上角可返回
-presentControllerWithName:context:
-dismissController
分頁導航。相似UIPageController。左右滑動切換
-presentControllerWithNames:contexts: 傳入 names 和 contexts數組,經過這種方式被呼出的 Controller 將以 page 導航方式呈現。
全部的導航方式均可以經過代碼或者SB的方式實現。
須要xcode6.2以上版本運行
選iwatch WatchKit App運行