用Swift开发macOS程序, 四、界面设计
到这里,我们才开始真正的学习macOS程序开发。
macOS程序是桌面应用程序,幸运的是这类程序我们见的用的太多,所以能让我们容易地去理解它。桌面应用程序分两个部分:即界面层和逻辑层。逻辑层又分两部分,业务逻辑层与数据逻辑层。其中逻辑层的实现,大部分可以依赖我们前面所学的Swift知识,那界面层呢?只好现在从头开始学了。程序界面的作用,无外乎是提供了一种人机交互方式。所以界面层的实现也可以分两部分:首先是页面布局的设计,即我们所看到的;其次是功能的应用,即我们所操作的。Xcode是一个功能强大且易于使用的编辑器。它提供了两种方式用来处理界面层:Storyboard与Swift,Storyboard能让我们做到所见即所得,同时能与Swift合用,使得开发变得很轻松。所以,大约来说,前者简单后者有效。
恭喜你,从本章开始,你可以看到具体的运行程序了。每一次程序的成功运行,是我们再一次在军事演习上的胜利,再一次人生的在进步。好吧,让辛苦留住嘴角的微笑,让努力带走额头的山川,我们开始吧。
请留意,此后章节有大量的图片,请留心你的流量,我可没有钱陪给你。还有,从这一章开始,不再区分有无经验,只概述与正文两部分,你需要查看概述确定你有无需要阅读本章内容。
????? 概述 ?????
我们将使用Storyboard、Swift相互协作的方式来设计界面。Xcode编辑器会为我们提供了大量的组件,用来设计界面。也就是说,在大多数情况下,我们不需要自己来设计组件就能完成程序开发。这些组件是例如按钮,文本输入框,表格这一类的东西。每个组件只跟定位、数据、样式、事件有关,当你了解了单个组件,你就大约学会了界面设计:
- 定位,即组件在页面中的位置。可使用相对或绝对数据来确定其位置,并能为其添加约束等限制。
- 样式,即组件最终呈现的模样。有两种方式确定其样式:其一,为属性赋值;其二,通过实现委托的方法进而确定组件是如何显示数据。
- 数据,即组件需要呈现的内容。有三种方式为组件提供数据:其一,为属性赋值;其二,通过实现委托的方法来为其提供数据;其三,Cocoa数据绑定。
- 事件,即组件对事件的接收与处理。是通过实现委托方法来确定将要监听和处理某操作。
下面我们将从上述的四个方面来学习如何设计程序界面。
????? 正文 ?????
一、建立一个名为「iWriter」的macOS工程。
在开始之前,我们需要建立一个macOS工程,就叫它:「iWriter」。
- 启动Xcode,在「Welcome to Xcode」页面,点击左侧第二项「Create a new Xcode project」。
- 在「Choose a template for your new project」页面,选择顶部菜单项「macOS」,选择第一栏「Application」中第一项「Cocoa App」后,点击「Next」。
- 在「Choose options for your new project」页面,「Product Name」项填入「iWriter」,「Language」项选择「Swift」,勾选其下的「Use Storyboards」,勾选最下的「Include Unit Tests」及「Include UI Tests」,然后点击「Next」。注意:Team、Organization Name、Organization Identifier跟你的苹果开发账号有关,如有需要,请参考forgot2015的苹果 iOS 开发者公司账号申请流程。
- 在跳出的文件流览框里,选择工程存放的位置后,点击「Creat」,创建完成了「iWrter」项目。
二、先了解一下Xcode界面:
有了macOS工程之后,我们还需要了解Xcode的自身的布局、各区名称及其作用。这里需要我们用一下心,因为以下章节都需用到,同时到了下一章,我们只提各区及按钮的英文名,你需要知道我们讲的是那个位置和该如何操作。如Size栏,就是Inspector Area(检查区)的Size(尺寸)栏等。
- 界面的分区及功能按钮,有图参考:
- Run or Stop(运行、停止)按钮,启动或停止当前项目程序:
- 左,点击,编译并运行当前方案。可以理解为,为当前程序运行一个实例;
- 右,点击,关闭正在运行的方案或程序,可以理解为,关闭当前程序的运行实例。
- Library(库)按钮,打开库窗口:
- 编辑区为Swift时,显示大括弧图标,点击跳出代码库窗口;
- 编辑区为Storyboard时,显示方圆图标,点击显示组件库窗口。
- Editor Control(编辑区控制)按钮,切换编辑区模式:
- 左,Standard Editor(基本编辑器),为Storyboard或Swift提供单一区域;
- 中,Assistant Editor(助理编辑器),为Storyboard或Swift提供双区域,当Storyboard与Swift以左右分区显示时,方便Storyboard组件关联到Swift的ViewController中;
- 右,Version Editor(版本编辑器),为Swift提供前后两个版本的代码比较。
- Area Control(大区控制)按钮,显示或隐藏非编辑区域:
- 左,显示或隐藏Navigator Area(导航区);
- 中,显示或隐藏Debug Area(调试区);
- 右,显示或隐藏Inspectors Area(检查区)。
- Navigator Area(导航区),从左到右依次为:
- Project(项目)栏,为项目文件提供分群组导航;
- Source Control(代码管理)栏,为代码分支、标签、远程提供导航;
- Symbol(标识)栏,为代码按属性、方法提供导航;
- Find(查找)栏,为工程按字元串查找提供导航;
- Issue(问题)栏,为工程按编译、运行的问题提供导航,区分警示(黄)与错误(红);
- Test(测试)栏,为单元、界面测试提供导航;
- Debug(调试)栏,为调试时线程节点提供导航;
- Breakpoint(断点)栏,为设置的所有断点提供导航;
- Report(报告)栏,为每次编译与运行的信息提供导航。
- Editor Area(编辑区),有Storyboard、Swift、Form等等编辑方式:
- 上,面包屑(文件链)栏,可快速切换各级文件;
- 下,操作区,有Storyboard、Swift、Form编辑方式。
- Inspector Area(检查区),后六项在Storyboard中选择组件后激活,从左到右依次为:
- File(文件)栏,当前文件信息,可设置;
- Help(帮助)栏,为所选类提供帮助文档;
- Identity(身份)栏,组件身份,在组件关联后,可使用;
- Attribute(属性)栏,当前组件或控制器属性信息,可设置。
- Size(尺寸)栏,当前组件或控制器尺寸信息,可设置。
- Connection(关联)栏,当前组件或控制器关联到代码中的属性、事件等信息,可设置。
- Binding(绑定)栏,数据Cocoa绑定。
- Effect(效果)栏,当前组件或控制器的整体效果信息,可设置。
- Debug Area(调试区),调试时显示运行中数据:
- 左,运行时,提供当前对象、属性、变数值;
- 右,运行时,输出运行错误。同时可通过po命令输出指定对象、属性、变数、方法的值。