標籤:
Apple Watch 開發詳解
Apple Watch現在對於第三方開發人員來說更多的還是一塊額外的螢幕。暫時WatchKit沒有能給出足夠的介面。現在Watch App的主要運算邏輯需要依賴iPhone,Apple也承諾會有原生的手錶App,可能要等到Apple Watch和WatchKit的完全版面世的時候。
1、兩種螢幕解析度
| 螢幕尺寸 |
38mm |
42mm |
| 解析度 |
272 x 340 |
312 x 390 |
| 寬高比 |
4:5 |
4:5 |
2、三種螢幕模式
| 主屏模式 |
Glance模式 |
通知模式 |
| 主介面 |
單屏即時資訊頁面 |
訊息通知介面 |
| 可自訂布局,放置button等控制項 |
所有資訊必須在一屏內展示,不能有互動控制項,點擊進入Watch應用 |
有通知的時候喚起,可添加合適的按鈕 |
|
|
|
3、兩種通知顯示方式
| Short Look |
Long Look |
| 查看螢幕上包含應用表徵圖、名稱、簡單通知內容等資訊 |
應用表徵圖和名稱將會移至螢幕頂端,內容佔據主要的顯示空間,佩戴者可以滑動來完成其它互動 |
|
|
| static |
dynamic |
| 直接載入 |
初始化interfaceController後載入 |
|
|
4、手勢
只支援以下手勢,不支援自訂手勢
| 手勢 |
行為 |
| 縱向滑動 |
瀏覽內容 |
| 橫向滑動 |
頁面間切換 |
| 點按 |
選擇內容 |
| 長按擠壓 |
開啟菜單 |
| 數字錶冠 |
旋轉,調整捲動速度 |
| 螢幕邊緣向左掃 |
返回上一個介面 |
| 螢幕底部向上滑 |
開啟Glance介面 |
5、 Watch App 架構
6 、基礎類
WatchKit獨立於UIKit,所有的類都繼承自NSObject,沒有完整的Response chain
7、UI開發
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 將會從最老的資料開始刪除,以騰出空間儲存新的資料。
8、導航開發
棧導航方式,類似UINavigationController。觸碰左上方可返回
-pushControllerWIthName:context: 第一個參數是Controller對應的Identifier字串,在SB中設定。可通過content傳遞資料。
-popController
-popToRootController
modal方式。行為基本同UIKit一樣,不同的是觸碰左上方可返回
-presentControllerWithName:context:
-dismissController
分頁導航。類似UIPageController。左右滑動切換
-presentControllerWithNames:contexts: 傳入 names 和 contexts數組,通過這種方式被呼出的 Controller 將以 page 導航方式呈現。
所有的導航方式都可以通過代碼或者SB的方式實現。
9、其他
- 不能執行需要許可權的任務,例如在watch中請求位置許可權
- 不要在watch中進行背景工作
- 不要在watch中執行複雜邏輯、耗時任務
- watch中無法播放視頻
- cache尺寸只有20M
- 感應器API未開放
- 動畫API未開放,用一組幀圖片代替
10、 Demo
Apple Watch 開發詳解