再過幾個月Apple Watch就要正式發布了

來源:互聯網
上載者:User

標籤:

本文由cocoaChina譯者小組成員@TurtleFromMars 翻譯自Appcoda,原julian engel,原文:WatchKit Introduction: Building a Simple Guess Game
編者註:再過幾個月Apple Watch就要正式發布了。如你所知,Apple已在Xcode 6.2 beta上附帶了WatchKit SDK,讓開發人員為Apple Watch建立應用。您或許已經開始嘗試用WatchKit開發App,如果還沒起手,本篇入門教程就是為您準備的。這周Julo開發組的Julian會為您介紹WatchKit,展示如何利用它建立一個簡單的猜數遊戲,您將會瞭解如何建立Watch app,布局介面並測試應用。

我們這就開始教程吧。

Apple在2014年11月18日發布的Xcode 6.2 beta中首次內建了WatchKit,該SDK可以讓開發人員為Apple Watch建立應用。要想為Apple Watch開發應用,首先你需要一個蘋果開發人員付費帳號,下載Xcode 6.2 beta。本教程的樣本App使用Swift語言編寫,需要對Swift語言編程基礎有一定要求。

正片開始。

瞭解WatchKit App

現在Apple尚不允許開發人員建立原生Watch app,目前你可以構建的三種Apple Watch 使用者體驗分別是WatchKit app,Glance和可操作式通知(actionable notification)。本教程集中講解WatchKit app,暫不涉及Glance和通知。

首先,Watch app不是獨立的應用,也就是說在使用者iPhone上啟動並執行配對App必不可少,我們要構建的Watch app只是iPhone app的擴充,Watch app的安裝和管理由iPhone app負責。另外,iPhone app與Watch app可以相互溝通,不過本教程不涵蓋這部分內容。

Apple Watch有38mm和42mm兩種螢幕尺寸,但不必分別設計使用者介面,Xcode會自動調整布局,適應螢幕尺寸。不過這裡用的不是Auto Layout,而是WatchKit專屬的布局系統。

樣本App

今天我們要為Apple Watch建立一個簡單的猜數遊戲,遊戲規則如下:Watch app會先確定一個0到5之間的自然數,讓玩家進行猜測,然後檢測玩家是否猜中,顯示相應資訊。App介面如下:

建立WatchKit樣本應用

我想你已經裝好了Xcode 6.2 beta 4(或更新版本),請用Single View Application模板建立一個項目,命名為WatchKitDemo(隨意命名即可),選擇語言為Swift,其他設定原封不動,項目儲存在你喜歡的地方。

之前講過,Watch app是iPhone app的擴充,要想建立Watch app,請在Xcode菜單上選擇Editor > Add Target,然後選擇Apple Watch > WatchKit App,構建Watch app必需的一切都可以用WatchKit App模板自動產生。

取消選擇Include Notification Scene,其他選項不變,點擊Finish,然後會彈出提示詢問是否啟用新方案(scheme)。

點擊Activate,即在Xcode項目中添加新方案,該方案可在Apple Watch模擬器中測試App。在項目導覽列中可以看到兩個新加的檔案夾:WatchKit Extension還有WatchKit App。

WatchKit app僅包含Storyboard和使用者介面相關資源,而負責應用邏輯、更新介面的代碼位於WatchKit extension。簡而言之,Watch app提供展現資訊的視圖、與使用者互動,而挑重擔的是iPhone app。

設計使用者介面

現在我們開始設計Watch app的使用者介面。選擇WatchKitDemo WatchKit App下的Interface.Storyboard檔案,與iOS app類似,Xcode提供Storyboard來為Watch app設計使用者介面。

首先向介面控制器(Interface Controller)中拖入一個文字標籤(Label),你會發現它自動定位到視圖控制器的頂部,這是因為Apple Watch螢幕尺寸很小,介面控制器被分為上(TOP)、中(CENTER)、下(BOTTOM)三大地區。現在選中文字標籤,在屬性偵測器的Position欄下可以設定橫縱位置,把Horizontal和Vertical都設為Center。

然後把文本改為“Your guess is: 3”,

接下來我們要讓使用者修改猜想的數字,向介面中拖入一個滑動條(Slider),然後修改滑動條屬性:

由於猜數在0到5之間,設步長(steps)為5,這樣滑動條就被分成了5格,每格代表一個數字。我們想讓3作為預設數字,設值(value)為0.6,最小值(minimum)為0,最大值(maximum)為1。

設定完畢後,從物件程式庫拖入一個按鈕(Button),設標題為Guess,將垂直位置設為Center。

要構建完整的介面,我們還需要一個文字標籤,用來顯示使用者猜測結果是否正確。向視圖中拖入一個Label,設文本為“Press Guess to play”,然後修改垂直位置為Bottom,設字型的Min Scale(最小比例)為0.5,讓文本適應較窄的空間。最終設計如下:

代碼時間

好,搭完介面,開始寫代碼吧。前面說過,程式邏輯在WatchKit Extension中。InterfaceController.swift已經關聯剛剛設計完的Interface Controller。

開啟源碼檔案,為文字標籤和滑動條分別建立outlet,然後在InterfaceController類中添加以下代碼:

123 @IBOutlet var guessSlider: WKInterfaceSlider!         // the slider@IBOutlet var guessLabel: WKInterfaceLabel!     // the label displaying the guess number@IBOutlet var resultLabel: WKInterfaceLabel!    // Wrong/Correct Label

然後是這行代碼,建立猜測數位變數:

1 var guessNumber = 3

項目基礎設施建立完成,現在把介面元素串連到相應的outlet。切回Interface.storyboard,開啟輔助編輯器,顯示剛剛在寫的代碼檔案,然後分別串連outlet和相應控制項。

現在按住control從滑動條拖到代碼上,這次不是IBOutlet,選IBAction,命名為updateGuess。

會自動添加如下函數:

1 @IBAction func updateGuess(value: Float) { }

該方法將用於擷取使用者猜測的數字並更新文字提示,在其中插入這兩行代碼:

12 guessNumber = Int(value * 5)guessLabel.setText("Your guess: \(guessNumber)")

由於之前滑動條取值範圍被設為0到1,取值乘5所得才是我們實際需要的數字,隨後更新文字標籤。

按住control從按鈕拖到代碼,再建立一個action方法,命名為startGuess,該方法產生一個隨機數並與猜測數進行比較,並更新提示內容,代碼如下:

123456789 @IBAction func startGuess() {    var randomNumber = Int(arc4random_uniform(6))         if(guessNumber == randomNumber) {        resultLabel.setText("Correct. You win!")    else {        resultLabel.setText("Wrong. The number is \(randomNumber)")    }}

代碼中首先使用arc4random_uniform(6)函數產生一個0到5的隨機數,然後進行比較,顯示結果。

搞定。可以測試App了。

運行Watch App

要想運行App,請選擇“WatchKitDemo WatchKit App”方案,然後指定運行裝置,點擊運行按鈕測試應用。在模擬器中還可以由Hardware > External Displays > Apple Watch - 38mm切換畫面尺寸。

再過幾個月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.