实现app的开始是定义storyboard场景。每个场景定义了app的一部分界面。可以为不同的尺寸自定义场景。

组装storyboard界面

WatchKit app和iOS app的布局模式不同。组装WatchKit app界面时,并不是把元素在一个空间里任意层次结构的摆放,而是把元素添加到场景,Xcode会管理他们,一行一行的竖直堆在上面。运行时,Apple Watch会根据可用的空间布局他们。

虽然Xcode处理了整体布局,WatchKit也提供了在场景中微调元素的方式。调整最多的是元素的大小和位置。可以改变元素的位置也可以改变水平竖直对齐方式。大小的话可以指定一个宽度或者让它根据可用的空间自己计算宽度。

Group对象提供了另外一种布局界面的方法。Group元素是其他元素的容器,可以在group中水平或竖直布局元素。可以group嵌套group然后用间距来改变他们的大小和位置。Group没有默认的可视图像,但是可以配置它的背景颜色或者图片。

下图展示了一个storyboard中的布局。前三个元素是标签,他们有不同的对齐方式。标签下面是一个包含两个图片水平布局的group对象。这个界面也包含了一个分割线还有一个按钮在group对象下面。

在Xcode中创建界面时,尽量让元素在有可用空间时自己调整位置。界面应该适应Apple Watch不同的尺寸。让系统自动布局可以减少为每种尺寸写布局的工作量。

适应不同的尺寸

Xcode支持为不同尺寸的Apple Watch自定义界面。默认情况下在storyboard中改变的尺寸会影响所有的尺寸,但是也可以在storyboard中为特定的尺寸定义。比如,可能需要在不同的尺寸上微调元素的大小或者指定不同的图片。

要定义指定的设备尺寸,点击属性旁边的(+)按钮然后选择特定的尺寸。对特定尺寸的更改只影响这个尺寸。下图显示了在Apple Watch 42mm上文字的缩放。

不应该让用户在不同的尺寸上感觉到明显的差异,尽量缩小不同尺寸设备上的差异。虽然可以每种尺寸单独实现一套界面,但是不推荐这样做。尽量所有尺寸使用一套界面。

要查看不同尺寸上的效果的话,可以使用storyboard底部的按钮来切换设备尺寸。storyboard默认显示通用尺寸。在通用尺寸下的更改会影响所有尺寸。如果切换到特定的模式下, 这时候的改变只影响那个尺寸。

运行时更新界面

在运行时,界面控制器可以对storyboard场景对应的对象做下面的操作:

  • 设置或更新数据的值
  • 改变界面的样子,如果对应的对象支持的话
  • 改变对象的大小
  • 改变对象的透明度
  • 显示或隐藏一个对象

不能添加新的对象或者改变已有对象的顺序。虽然不能移除对象,但是可以隐藏它,这样可以临时不显示在界面上。当一个对象隐藏时,其他对象会占据这个对象以前占据的空间。如果要隐藏对象但是要保留位置,可以设置对象的透明度为0.

设置App的主题颜色

每个WatchKit app都有一个相关的主题颜色,会影响下面的UI元素:

  • status bar上的标题
  • short-look通知的app名字

app的主题颜色存储在storyboard的全局属性里。要访问这个属性的话, 选择storyboard然后选择File inspector。选择弹出菜单中的颜色,或者使用颜色选择器选择指定的颜色。

为界面国际化

WatchKit app的storyboard默认就启用了国际化。这会导致任何加到storyboard中的字符串会自动加到Localizable.strings文件中。只需要为特定语言翻译文件中的字符串,然后在发布的app中引用他们。当在运行时创建storyboard中的场景时,Xcode会加入对应的本地化后的字符串。

注意像label喝controls这类的UI控件有足够的空间显示。相对于把多个按钮放在同一行,把他们放在多行这样他们有足够的空间显示。

对于用程序设置的文字和图片,使用iOS和OS Xapp中同样的方法来国际化。

  • 使用NSLocalizedString来加载字符串资源
  • 使用NSNumberFormatter对象来格式化数字
  • 使用NSDateFormatter对象来格式化时间。

使用WatchKit extension时,NSLocal对象会返回Apple Watch中配置的地点信息。使用这个类来获得用户选择的语言,以及备选语言,以及地点相关的信息。

Apple Watch 1.0 开发介绍 2.1 WatchKit Apps UI要点的更多相关文章

  1. Apple Watch 1.0 开发介绍 1.2 简介 配置Xcode工程

    WatchKit app需要一个现有的iOS app.在iOS app工程中,添加一个新的WatchKit app target,它包含了WatchKit app和WatchKit extension ...

  2. Apple Watch 1.0 开发介绍 1.1 简介 开发苹果手表

    使用Apple Watch,用户可以使用一种不显眼的方式查看信息.不用把iPhone从口袋里拿出来,就可以通过看一下手表快速获得重要信息. 作为Apple Watch的第三方app开发者,应该通过使用 ...

  3. Apple Watch 1.0 开发介绍 1.4 简介 使用iOS技术

    WatchKit extension可以使用iOS app同样的技术,但是由于他是extension,使用有些技术的时候会有限制,有些不推荐使用.下面是一些介绍以及什么时候使用什么技术: 有些需要权限 ...

  4. Apple Watch 1.0 开发介绍 1.3 简介 WatchKit App 架构

    WatchKit app和WatchKit extension一起实现了app的界面.当用户在Apple Watch中操作时,WatchKit app从storyboards中选择合适的场景.比如,如 ...

  5. android 蓝牙4.0 开发介绍

    最近一直在研究一个蓝牙功能 由于本人是菜鸟  学起来比较忙 一直搞了好久才弄懂 , 网上对蓝牙4.0也就是几个个dome 抄来抄去,全是英文注解 , 对英语不好的朋友来说 真是硬伤 , 一些没必要的描 ...

  6. 从0开发3D引擎(补充):介绍领域驱动设计

    我们使用领域驱动设计(英文缩写为DDD)的方法来设计引擎,在引擎开发的过程中,领域模型会不断地演化. 本文介绍本系列使用的领域驱动设计思想的相关概念和知识点,给出了相关的资料. 上一篇博文 从0开发3 ...

  7. 从0开发3D引擎(二):准备预备知识

    大家好,本文介绍了开发3D引擎需要的预备知识,给出了相关的资源. 上一篇博文 从0开发3D引擎(一):开篇 了解Web 3D Web 3D的历史 目前Web 3D是基于WebGL这个Web端3D AP ...

  8. 从零开始编写自己的C#框架(6)——SubSonic3.0插件介绍(附源码)

    前面几章主要是概念性的东西为主,向初学者们介绍项目开始前的一些知识与内容,从本章开始将会进入实操阶段,希望跟着本系统学习的朋友认真按说明做好每一步操作(对于代码最好是直接照着文档内容在你的IDE中打一 ...

  9. 【转载】Ssh整合开发介绍和简单的登入案例实现

    Ssh整合开发介绍和简单的登入案例实现 Ssh整合开发介绍和简单的登入案例实现 一  介绍: Ssh是strtus2-2.3.1.2+ spring-2.5.6+hibernate-3.6.8整合的开 ...

随机推荐

  1. Mars之android的Handler(2)

    handler .looper.messageque的关系在前面已经有个介绍,但前面handler(1)中handler的使用是极少的一种情况,因为handler.sendMessage()可以在Ma ...

  2. 什么是Spring?Spring是什么?

    Spring概述: Spring是一个开源框架,是为了解决企业应用程序开发复杂性而开发的. 从简单性.可測试性和松耦合的角度而言,不论什么java应用都能够从Spring中受益. 简而言之,Sprin ...

  3. UVA 11090 - Going in Cycle!!(Bellman-Ford)

    UVA 11090 - Going in Cycle!! option=com_onlinejudge&Itemid=8&page=show_problem&category= ...

  4. struts2第一个程序的详解(配图)

    首先我们在struts2中要写上一个action <packagename="fish"namespace="/test"extends="st ...

  5. linux+nginx+mysql+php

    LNMP(linux+nginx+mysql+php)服务器环境配置   一.简介 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为 “engine X”, 是一个高性能的 ...

  6. c++野指针 之 实战篇

    一:今天做poj上的3750那个题,用到了list的erase方法.提交之后总是报runtime error! 纠结了好长时间.曾有一度怀疑过vector的erase和list的erase处理方式不一 ...

  7. 重温delphi之控制台程序:Hello World!

    原文:重温delphi之控制台程序:Hello World! 这二天用c#开发ActiveX时,发现不管怎么弄,c#就是没办法生成ocx的纯正activeX控件,而且还要强迫用户安装巨大的.net f ...

  8. linux进程解析--进程的退出及销毁

    一进程的退出: 当一个进程运行完毕或者因为触发系统异常而退出时,最终会调用到内核中的函数do_exit(),在do_exit()函数中会清理一些进程使用的文件描述符,会释放掉进程用户态使用的相关的物理 ...

  9. 用NMAKE创建VS2012 C++工程 HelloWorld

    由于需要精通GDAL的源代码,所以还是有必要精通NMAKE,先来尝试创建一个NMAKE工程. 之前一篇文章Windows7中Emacs 24 shell使用Gitbash已经介绍了如何在Emacs的s ...

  10. ok6410 u-boot-2012.04.01移植七完善u-boot移植(u-boot移植结束)

    继ok6410 u-boot-2012.04.01移植六后,开发板已支持MLC NAND.DM9000等.但还需要完善比如环境变量.mtdpart分区.裁剪.制作补丁等.下面的工作就是完善移植的u-b ...