WatchKit編程指南:WatchKit Apps--App概要
原文 http://www.cocoachina.com/ios/20141216/10640.html
本文由CocoaChina翻譯組成員dada()翻譯自 Apple Watch Programming Guide:App Essentials ,敬請勘誤。
Xcode支持用storyboard來創建Watch app的界面。當你在工程中新建一個Watch app,Xcode提供會提供一個storyboard來實現你的UI。這個Storyboard至少有一個Watch app的界面場景,并可能有額外的快速預覽(glance)或通知界面場景。你可以從界面控制器中的對象庫中拖動到storyboard的場景中。
Storyboard中的每個場景以相應的 WKInterfaceController 子類為支持 (對于動態通知界面,子類是 WKUserNotificationInterfaceController )。 對于每一個新的場景,可以在標識檢查器(Identity inspector)中輸入你界面控制器的名字。 每個界面控制器的代碼都在WatchKit的擴展目標中運行,不用在你的Watch app中引入任何代碼。
界面控制器怎樣工作( How Interface Controllers Work)
界面控制器(Interface controller)管理你storyboard的場景內容。每個界面控制器都使用outlet來保存場景中的引用對象,并定義action方法來響應用戶交互。在運行時,你可以使用界面控制器的 initWithContext: 和 willActivate 方法來配置界面。在這些方法里,你的操作任務如下:
-
獲取你想展示的數據。
-
設置初始化和配置標簽,圖片和其他控件。
-
根據你的需要,展示或隱藏你的界面對象。
這里沒有限制Watch app中能擁有的界面控制器數量,但是過多的界面控制器意味著更復雜,所以要盡可能精簡。您為app選擇的導航類型定義了用戶怎樣從一個界面跳入下一個。 有些導航類型需要你清晰的展示下一個界面控制器,而有些不用。更多關于兩個場景間導航的信息,請查閱 Interface Navigation .
整合你的故事版場景( Assembling Your Storyboard Scenes)
Watch app不使用iOS app那種布局模型。當你整合你的Watch app的界面場景,你無法在充足的空間里通過任意的布局元素來創建視圖層級。相反,當你添加元素到場景,Xcode列出許多選項給你,垂直地疊放在不同的 行中。在運行時,Apple Watch會根據可用空間將這些元素平鋪出來。
WatchKit也提供了幾種在storyboard場景里更精確的布局方法。大多數視圖元件的size和position都可以在屬性監視器 (Attributes inspector)里配置。對象組群提供了另一種重要的工具來布局組件,及允許你像垂直布局那樣水平布局你的元素。組群還提供額外的選項來布局組群的邊 界內組件。組群沒有默認的視覺呈現形式,但可以按你自己的想法配置背景顏色或者背景圖。
圖5-1展示了排列在storyboard文件中的幾種不同元素。前三個元素都是標簽,它們每個都占用了自己那一行的全部水平寬度。對于每個標 簽,對齊變量決定了視圖控制器邊框是向左對齊、向右對齊還是居中對齊。標簽的下面是一組水平排列的包含了兩張圖的對象。界面還包含了一個開關、, 一條separator(分割線)和一個按鈕,這些元素都垂直地堆疊在對象組的最下面。
圖5-1 Xcode中的界面:
當在Xcode中創建你的界面時,盡可能地讓對象自己調整尺寸來適應可用空間。App界面應該可以運行兩種尺寸的Apple Watch。讓系統調整對象尺寸來適應可用空間,這樣可最小化為每款設備編寫的代碼量。
在運行時更新界面( Updating Your Interface at Runtime)
在運行過程中,界面控制器能讓對象在相應的storyboad場景中做如下改變:
-
設置或修改數據變量
-
支持改變對象的外觀
-
改變對象的尺寸
-
改變對象的透明度
-
顯示或隱藏對象
你不能添加新的對象到界面或者改變已經存在對象的次序。盡管你不能移除對象,但你可以通過隱藏對象來暫時從圖層中移除。當控件被隱藏時,其他對象將會填充 此前被占用的空間。 如果不想填滿這些空間,可以把對象的alpha值設置為0。 更多關于隱藏場景對象的信息請查閱 Hiding Interface Objects 。
界面的國際化( Internationalizing Your Interface)
WatchKit app的storyboard是默認基于國際化的。這個特性會使在storyboard中任意的字符串都被自動的添加到__Localizable.strings__文件中。 您 唯一 要做的工作就是針對每種目標語言翻譯文件中的字符串,并將其包含到應用程序中。 當在運行時創建storyboard場景時,Xcode會插入與本地化相關的文件。
當考慮國際化你的app時,您主要考慮的是如果排布你的界面,讓包含文本的標簽和控件能有足夠的空間進行擴展。您可以垂直布局界面元素以便有足夠的空間展示其標題,而不是把多個按鈕放在同一行中。
對于文本和圖片的國際化處理,可以使用iOS和OS X應用相同的技術。
-
使用 NSLocalizedString 宏來從資源文件夾加載字符串。
-
使用 NSNumberFormatter 對象來格式化數值型變量。
-
使用 NSDateFormatter 對象來格式化日期。
更多信息詳見國際化處理 Internationalization and Localization Guide 。