Apple Watch 開發詳解

來源:互聯網
上載者:User

標籤:

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 架構
  • 一個完成的Watch應用由 WatchKit App 和 WatchKit Extension兩部分組成,WatchKit App負責展示,安裝在Watch上,WatchKit Extension負責業務和控制邏輯,安裝在iPhone上。所有運算、邏輯以及控制都是在iPhone上完成。通過WatchKit通訊

  • Watch App 控制流程

  • ViewController 生命週期

6 、基礎類
  • WKInterfaceController 相當於UIViewController 。生命週期方法分別是:

    -initWithContext: 被初始化時調用,一般在這裡配置視圖元素,相當於-viewDidLoad
    -willActivate 將要呈現的時候調用,也可以在這個方法中進行視圖元素的設定,相當於-viewWillAppear
    -didDeactivate 呈現後調用,在這個方法中停用持有self的對象,如NSTimer。相當於-viewDidDisappear

  • WKInterfaceObject 及其子類

    WKInterfaceObject 相當於UIView的代理,WatchKit實際呈現的View對於開發人員來說是不可見的,只能通過WKInterfaceObject對UI對象屬性進行設定,可以設定的屬性非常少。學習成本並不大。
    WKInterfaceButton 相當於UIButton的代理
    WKInterfaceImage 相當於UIImageView的代理

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
  • https://github.com/darcyzhang/CloudWatch

  • 需要xcode6.2以上版本運行

  • 選iwatch WatchKit App運行

Apple Watch 開發詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.