1. 程式人生 > >WatchKit入門:建立一個簡單的猜數遊戲

WatchKit入門:建立一個簡單的猜數遊戲

轉自:http://www.cocoachina.com/ios/20150202/11087.html

QQ截圖20150202110231.jpg

本文由cocoaChina譯者小組成員@TurtleFromMars 翻譯自Appcoda,原作者:julian engel編者注:再過幾個月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可以相互溝通,不過本教程不涵蓋這部分內容。

QQ截圖20150202110455.jpg

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

示例App

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

finalLayout.png

建立WatchKit示例應用

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

watch-kit-new-project.png

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

watch-kit-target.png

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

watch-kit-warning.png

點選Activate,即在Xcode專案中新增新方案,該方案可在Apple Watch模擬器中測試App。在專案導航欄中可以看到兩個新加的資料夾:WatchKit Extension還有WatchKit App。

watch-kit-new-folder.jpg

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”,如圖:

watchkit-demo-label.jpg

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

watchkit-slider.png

由於猜數在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,讓文字適應較窄的空間。最終設計如下:

watch-kit-demo-final-layout.png

程式碼時間

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

開啟原始碼檔案,為文字標籤和滑動條分別建立outlet,然後在InterfaceController類中新增以下程式碼:

1 2 3 @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和相應控制元件。

watchkit-outlets.png

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

watchkit-outletaction.png

會自動新增如下函式:

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

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

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

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

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

1 2 3 4 5 6 7 8 9 @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切換螢幕尺寸。

watchkit-simulator.jpg

不錯吧?WatchKit初上手感覺如何?此處可以下載專案檔案,以供參考。(譯註:下載連結源為Dropbox,中國大陸需要翻牆。)

沒有翻牆的請點選此處下載百度網盤下載