背景

前段时间苹果Apple推出 WatchKit,用于开发Apple Watch应用,同时也推出了 Xcode6.2 Beta(非稳定版,好期待稳定版)版本用于开发 Watch App。Apple Watch是苹果在智能穿戴领域的一个尝试,对于苹果和开发者都非常具有挑战。学会开发 WatchApp 将大幅度提高自己的竞争能力。

内容提要

1、初识WatchKit

2、安装Xcode 6.2 Beta

3、iOS工程添加WatchKit支持

4、WatchKit项目结构和UI控件

5、主界面

6、Glance界面

7、通知界面

初识WatchKit

我们去Apple的官网的WatchKit的开发页面:

https://developer.apple.com/watchkit/

相当高大上吧,全是英文,英文没学好的话吃亏不?作为程序员,英语还是要尽量努力学习的,因为很多好的资源和开发环境都是英语的。扯远了...  ——||

苹果WatchKit App的特点:

  1. 不少的智能手表的App是直接运行在手表中,受限于智能手表的内存和运算能力,不能运行很复杂的App。

  2. 目前苹果的做法是:WatchKit分为两部分,一个WatchKit的扩展程序(Extension)以后台程序运行在你的智能手机iPhone上(充分利用iPhone的运算能力和内存),而Watch App运行在你的Apple Watch智能手表上,负责渲染界面,当你的App在Apple Watch上启动时,你的手表就从iPhone获取数据,展示运行结果。(自己的理解,有不对,请指正)

  3. 当然了,Apple也承诺之后会允许真正运行在Apple Watch 上的 App 的出现,Apple Watch 和 WatchKit 的未来还是很值得期待的。

推荐一个大牛的博客,里面一篇《Apple WatchKit 初探》写得不错,值得学习。

http://onevcat.com/2014/11/watch-kit/

如果英语还不错,可以观看苹果的官方WatchKit开发介绍视频,那自然是极好的(甄嬛体):

点击中间的播放按钮即可。

安装Xcode 6.2 Beta

目前Xcode的正式版是6.1.1,可是没有集成WatchKit。只有Xcode 6.2 Beta(测试版)集成了WatchKit,所以只好下来试试,期待含有WatchKit的Xcode正式版快些放出。

进入链接:https://developer.apple.com/xcode/downloads/

点击 Download Xcode 6.2 beta 3,会提示你登陆苹果开发者账号,没有的话注册一个。Xcode 6.2 beta 3有2.81GB,所以下载需要些时间,可以够你吃两三只烤鸡 :P 。下载完后双击 xcode_6.2_beta_3.dmg 这个文件,出现如下窗口(对苹果用户应该不陌生):

只需要简单地将Xcode-Beta这个图标拖放到Applications那个图标上,就开始安装了,安装完大小是5GB多。然后可以在LaunchPad里打开或者在Applications里打开。也可以拖放到Dock里,以方便以后访问。

启动Xcode 6.2 Beta,

点击 Create a new Xcode project (创建一个新的Xcode项目)

我们选择iOS的 Single View Application,点击Next到下一步,

上图是项目的基本配置,项目名称我们叫做“HelloWatchKit”,随便取。Language(编程语言)选择Swift,毕竟是全新的苹果开发语言,老的Objective-C虽然好,但是上手没有Swift那么容易(其实关键是小编只会Swift...),而且苹果也会大力发展Swift。Next下一步,选择存放路径,默认就好,你也可以自己选择放在哪里。

iOS工程添加WatchKit支持

iOS项目创建好了,如何添加WatchKit支持呢?我们需要添加一个Target。可以点击 HelloWatchKit -> Add target 来添加

也可以点击 File -> New -> Target来添加

选择了添加Target之后,会弹出如下窗口,选择 iOS -> Apple Watch,点击Next

进入基本设置,记得勾选 Include Glance Scene(因为之后要用到Glance界面),如下图红色框所示

点击Finish按钮,就可以了。

接下来测试一下我们的工程。

选择运行目标是 HelloWatchKit WatchKit App(如下图红框所示),模拟器我选了默认的iPhone 6,点击左上角的灰黑色小三角(红框所示)来运行

苹果的Xcode的运行速度真的很快(虽然Google新发布的Android Studio已经很快了,但还是与Xcode速度上有些差距),立即就为我们呈现了 iPhone 6 和 Apple Watch的两个模拟器的运行状态

怎么样,有点意思不,我们继续学习吧。

WatchKit项目结构和UI控件

我们先来看一下Xcode为我们打开的项目:HelloWatchKit

在左边的项目列表里,点开HelloWatchKit WatchKit App这个目录,再单击Interface.storyboard,在中间就会显示其可视化的界面。我们可以看到有三个界面,最上面的是Main Interface(主界面),在它下面是Glance Interface(Glance界面),Glance是英语:反光; 瞥见 的意思。所以Glance界面是一个用于呈现信息的即时界面,如果不需要也可以把它挥扫掉或者点击一下重新进入主界面Main Interface(我们一般在智能手机上体验过的每个软件更新后,打开下面有好几个白色小圆点的,你要一一扫过才能进入主界面的,那几个就是Glance界面)。在Glance
Interface下面是Notification Interface(通知界面),当Apple Watch手表接收到一个通知时,就会进入通知界面,也可以从通知界面再回到主界面。

Apple Watch的程序是写在WatchKit Extension这个目录下的(在我们的项目中就是HelloWatchKit WatchKit Extension)。里面有三个类:InterfaceController,GlanceController和Notification Controller(Controller是控制器的意思),分别对应上面我们介绍过的三个界面:主界面,Glance界面和通知界面。

我们再回到Interface.storyboard,点击Main Interface,可以看到右下角的控件栏显示了可以被添加到主界面的所有控件。目前还不多,一共大概13个控件。比如Group控件是一个布局容器,有垂直或水平之分。Table控件是用来呈现列表的。其他控件如Button(按钮),Label(标签)等大家应该不陌生。

主界面

为了测试,我们随便往Main Interface里拖进去几个控件,选中控件不放开直接拖到主界面上,我们拖了一个Switch(开关),一个Separator(分割线),一个Button(按钮)和一个Timer(计时器,会从零开始计时),此时我们的布局是默认的垂直布局,如下图

我们把目标选为HelloWatchKit WatchKit App,然后点击运行按钮。

可以看到运行起来后,除了Timer计时器控件没有显示,其他都显示了,这是因为我们没有把Timer置为Enabled(可用),我们选中Timer控件,把右上角的Enabled的勾打上,如下图红框所示。并且把Format(格式)改为下拉列表中的Short(短格式),再把Timer的框往右拉大一些(不然显示不全)。

再次运行程序,会看到如下图,Timer开始计时了,有趣吧

然后我们把Timer和Switch控件删除(用不着了),接下来我们选中Label控件,可以在右边配置它的属性,比如我们可以把Position(位置)中的Horizontal(水平)属性改为Center(居中),如下图,可以看到我们的Label由默认的靠左对齐变为居中对齐了,也可以更改Vertical(垂直)的属性为居中或靠底部对齐。

在界面中,我们除了可以添加各种控件,也可以配置界面的各种属性。例如,选中主界面,可以看到右上角的属性列表,我们可以配置它的背景颜色,在Color(颜色)那一栏,我们选择紫色,可以看到背景颜色变为很美的紫罗兰。

我们也可以添加背景图片,在Background(背景)那一栏,目前还没有图片可以选择(No Image)。我们来添加一张图片到工程中,随便拖放一张电脑里的图片到Supporting Files(支持文件)目录,在弹出的窗口点击Finish(完成),

可以看到我们的图片IMG_6090.JPG已经添加到我们的工程了。重新回到我们的Interface.storyboard,在主界面的属性列表里的Background一栏已经可以选择刚添加的图片了,选好后,则主界面如下图所示。

那么,我们如何和主界面中的控件来交互呢?我们来学习一个苹果Xcode的高级功能:Assistant Editor(助手编辑器)。默认的编辑器是Standard Editor(标准编辑器)。在左上角,点击红框所示的Show Assistant Editor,会发现Xcode为我们在Interface.storyboard右边打开了InterfaceController.swift这个文件(前面提到了,这个文件里的类正是控制主界面的),

接下来,很神奇的事情,我们选中主界面中的Label,按住ctrl键(不是cmd键),然后移动鼠标(如果你用触摸板操作,那就是按住触摸板移动),会发现出现一条蓝色的线,一端连接着Label,一端可以随意拖动,

把其拖动到InterfaceController类的第一个方法上面,则会弹出一个对话框,在对话框里填入myLabel这个名字(随便用什么名字),

点击connect(连接)按钮,则创建了一个Outlet(插座,出口),在程序中可以看到Xcode为我们生成了一段代码:@IBOutlet weak var myLabel: WKInterfaceLabel!

类似地,先将Button按钮的文字改为Click(点击),但是与刚才对Label的操作不一样的是,我们在弹出的对话框中不选择默认的Outlet类型,而是选择Action(动作)类型,因为Button按钮按下后我们要让其实现某些动作。名字填上myButton,点击connect生成myButton这个Action。在程序中可以看到Xcode为我们生成了一段代码:@IBAction func myButton() {}

你可以看到我们的InterfaceController.swift现在如下图这样

接着,我们在myButton这个Action的大括号里,写入一行代码:myLabel.setText("The Button is clicked”)

意思是,当Button按钮被按下后,Label的文字会改变为“The Button is clicked”

我们来测试一下效果,运行之后,如下图所示,我们点击Click按钮,可以看到Label文字变为“The Button is clicked”



Glance界面

看完了主界面,我们来学习一下Glance界面。在Glance界面中我们也拖进一个控件,用一个Label,把文字改为“Click To Show Main” (点击显示主界面),因为我们之前说过,我们可以从Glance界面点击一下返回主界面。

为了测试,我们先把运行的第一个界面设置为Glance界面(默认是运行主界面)。点击左上角的HelloWatchKit WatchKit App,在出现的下拉列表里选择 Edit Scheme (编辑体系),

会弹出如下图的窗口,我们在Excutable(可执行程序)的下拉列表里选择Glance - HelloWatchKit WatchKit App.app,然后点击Close(关闭)按钮。

重新运行。可以看到如下图,我们的启动界面变为了Glance界面

在Glance界面的任意位置点击一下,就回到了主界面,如下图,是不是很有意思。





通知界面

体验过了Main Interface(主界面)和Glance Interface(Glance界面),我们最后来看一下Notification(通知)界面。我们先用Edit Scheme把Excutable调为Notification - HelloWatchKit WatchKit App.app,点击Close按钮关闭

运行一下,可以看到通知界面的布局

从上到下有四个组件:HelloWatch那个是通知的标题;Test Message那个是通知的内容;First Button那个是一个按钮,点击会返回主界面;Dismiss(开除,解除)那个是另一个按钮,点击会关闭通知。

虽然没在真机上测试,是不能有实际的通知的,但我们可以用模拟器模拟通知的效果。当然大家也可以连接真机测试。

我们点击 HelloWatchKit WatchKit Extension目录下的Supporting Files目录中的PushNotificationPayload.apns这个文件,可以看到这个文件里面就是控制通知界面的一些代码。

我们再次点击HelloWatch Watch App目录下的Interface.storyboard,看到Glance Interface下面的就是我们的通知界面。

我们可以在PushNotificationPayload.apns这个文件修改通知文本的显示,比如我们将First Button改为“Show Main Interface”,运行,如下所示,

点击Show Main Interface,则回到我们的主界面。

后记

至此,对于WatchKit已经大体介绍完了。苹果的WatchKit开发包的能力远不止此,我们只是演示了基本的知识点。而且因为WatchKit刚放出不就,相信以后应该会越来越强大。祝愿可穿戴设备越走越好,未来可穿戴设备一定举足轻重。

* 您若觉得本文不错,请点右上角“分享到朋友圈”

* 新朋友请关注程序员联盟,公众号:ProgrammerLeague

苹果WatchKit轻松入门的更多相关文章

  1. 一、vue基础语法(轻松入门vue)

    轻松入门vue系列 Vue基础语法 一.HelloWord 二.MVVM设计思想 三.指令 1. v-cloak 2. v-text 3. v-html 4. v-show 4. v-pre 5. v ...

  2. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...

  3. Groovy轻松入门——搭建Groovy开发环境

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/17/104391.html Groovy轻松入门--搭建Groovy开发环境 多日来,我发表了 ...

  4. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  5. Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)

    转载请务必注明出处(all copyright reserved by iOSGeek) 本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina ...

  6. JavaScript面向对象轻松入门之封装(demo by ES5、ES6、TypeScript)

    本章默认大家已经看过作者的前一篇文章 <JavaScript面向对象轻松入门之抽象> 为什么要封装? 封装(Encapsulation)就是把对象的内部属性和方法隐藏起来,外部代码访问该对 ...

  7. asp.net core轻松入门之MVC中Options读取配置文件

    接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件 首先注册MV ...

  8. AngularJs轻松入门

    AngularJs轻松入门系列博文:http://blog.csdn.net/column/details/angular.html AngularJs轻松入门(一)创建第一个应用 AngularJs ...

  9. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy

    转自 :Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18) 在前几篇文章中,我已经向大家介绍了Groovy是什么,学习Groovy的重要性等内容,还不了 ...

随机推荐

  1. Android数据库hibernate框架

    说明 /** * YDL_Hibernate总结 <br/> * (一)支持功能: 1.自己主动建表,支持属性来自继承类:可依据注解自己主动完毕建表,而且对于继承类中的注解字段也支持自己主 ...

  2. JavaScript中的对象(一)

    Email:longsu2010 at yeah dot net 最近我和朋友谈起JavaScript中对象的问题.朋友以写JavaScript为生,而且生活的很好,然而我发现他并不真正懂这们语言的某 ...

  3. php 汉字转拼音 [包含20902个基本汉字+5059生僻字]

    原文:php 汉字转拼音 [包含20902个基本汉字+5059生僻字] 昨天在转换拼音的时候发现个bug,有好多字都无法转换,不过也不能怪他,毕竟人家的库才8k,应该只有常用的.无奈上网找了下,发现一 ...

  4. LNK1207: incompatible PDB format in********

    LNK1207: incompatible PDB format in******** VC中错误:LINK : fatal error LNK1207: incompatible PDB forma ...

  5. 淘宝分布式 key/value 存储引擎Tair安装部署过程及Javaclient測试一例

    文件夹 1. 简单介绍 2. 安装步骤及问题小记 3. 部署配置 4. Javaclient測试 5. 參考资料 声明 1. 以下的安装部署基于Linux系统环境:centos 6(64位),其他Li ...

  6. struts(三)——struts框架实现登录示例

    前两篇讲解了struts框架的基本实现,自己感觉讲的也有些枯燥,今天拿登录的例子来做一个实现. 1.新建一个javaweb项目,并将struts的jar包拷贝到WebRoot/WEB-INF/lib下 ...

  7. 一个linux常见命令的列表

    这是一个linux常见命令的列表. 那些有• 标记的条目,你可以直接拷贝到终端上而不需要任何修改,因此你最好开一个终端边读边剪切&拷贝. 所有的命令已在Fedora和Ubuntu下做了测试 命 ...

  8. win7问题解决,凭据管理器和无法访问,不允许一个用户使用一个以上用户名与服务器或共享资源进行多重连接。

    WIN7凭据管理器,如果你用一个帐号远程登录以后在电脑中会记住这个信息,假如你想用另外的帐号,那么就到控制面板-凭据管理器里中进行修改或者删除. 如果你登录以后提示,“无法访问.不允许一个用户使用一个 ...

  9. 金色的 SQL注意事项(1)

    page(1-75) 最好是没有意义的主键字段,以方便未来的扩展. PS:主键,以后标书编码填错须要改的时候,关联表都须要跟着改.假设是一个无意义的自增字段是主键就无此原因. 主键最好不要设置为联合主 ...

  10. ZOJ 3795 Grouping 求最长链序列露点拓扑

    意甲冠军:特定n积分.m向边条. 该点被划分成多个集合随机的每个集合,使得2问题的关键是无法访问(集合只能容纳一个点) 问至少需要被分成几个集合. 假设没有戒指,接着这个话题正在寻求产业链最长的一个有 ...