文章

关于使用 UIKit 开发 App

了解 UIKit 和 Xcode 为 iOS 和 Apple tvOS app 提供的基本支持。

概览

UIKit 框架提供了为 iOS 和 Apple tvOS 构建 app 所需的核心对象。您可以使用这些对象在屏幕上显示内容,与这类内容进行互动,以及管理与系统的互动。App 依赖 UIKit 来实现基本行为,并且 UIKit 为您提供了多种方式,让您可以根据自身的具体需求来自定这类行为。

Xcode 提供了模板项目作为起点,供您打造自己的每个 app。例如,图 1 显示了使用 Xcode 中单一视图 app 模板创建的 app 的结构。模板项目提供了一个最基本的用户界面,让您可以立即构建和运行项目,并在设备或模拟器中查看结果。

图 1

单一视图 iOS app 的结构

新单一视图 app 的模板包含 app 委托和视图控制器的源文件。此外还包含 Storyboard、素材目录和 Info.plist 文件。

在构建 app 时,Xcode 会编译源文件并为项目创建一个 app 套装。App 套装是一个结构化目录,其中包含与 app 关联的代码和资源。资源包括图像素材资源、Storyboard 文件、字符串文件和为代码提供支持的 app 元数据。虽然 app 套装的结构很重要,但是 Xcode 知道您的资源需要用在哪里,所以现在不必担心。

所需的资源

每个 UIKit app 都需要具备以下资源:

  • App 图标

  • 启动屏幕 Storyboard

系统将在主屏幕上、“设置”中以及任何其他必要的地方显示您的 app 图标,以便将您的 app 与其他 app 区分开来。由于 app 图标会用在多个不同的地方和多种不同的设备上,因此您需要在 Xcode 项目的 AppIcon 图像素材资源中提供多个版本的 app 图标。App 图标应该鲜明独特,以帮助用户在主屏幕上快速识别您的 app。不过,您可以根据所需提供的不同尺寸图像,相应地调整图标的细节。

图 2

为 iOS app 提供图标

素材资源目录包含 app 图标的多个变体版本。

LaunchScreen.storyboard 文件包含 app 的初始用户界面,这个界面可以是初始屏幕,也可以是实际界面的简化版本。当用户轻点 app 的图标时,系统会立即显示启动屏幕,让用户知道 app 现在正在启动。启动屏幕还会在 app 初始化期间为 app 提供掩护。当 app 准备就绪后,系统会隐藏启动屏幕,并显示 app 的实际界面。

所需的 App 元数据

系统从 app 套装内的信息属性列表 (Info.plist) 文件中获取 app 的配置和功能相关信息。Xcode 在每个新项目模板中提供了这个文件的预配置版本,但是您可能需要在某些时候修改这个文件。例如,如果 app 依赖特定的硬件,或者使用特定的系统框架,您可能需要将与这些特性相关的信息添加到此文件中。

Info.plist 文件的一种常见修改是声明 app 的硬件和软件要求。您通过这些要求告诉系统您的 app 需要哪些条件才能运行。例如,导航 app 可能要求设备具备 GPS 硬件,以便提供逐向导航功能。App Store 会阻止 app 安装在不符合 app 要求的设备上。

图 3

声明 app 的硬件和软件要求

设备功能包括 app 是否需要摄像头、定位服务或特定技术等信息。

如需了解 Info.plist 文件中可以包含的各种键,请参阅“信息属性列表键参考 (英文)”。

UIKit App 的代码结构

UIKit 提供了 app 所需的许多核心对象,其中包括实现以下功能的对象:与系统互动、运行 app 的主事件循环,以及在屏幕上显示内容。您可以直接套用其中的大多数对象,或者只进行细微修改。了解要修改哪些对象以及何时进行修改,对于实现 app 而言至关重要。

UIKit app 的结构基于“模型-视图-控制器 (MVC)”设计模式,其中对象按用途划分。模型对象管理 app 的数据和业务逻辑。视图对象提供数据的直观展示。控制器对象充当模型和视图对象之间的桥梁,在适当的时候在这两者之间移动数据。

图 4 显示了 UIKit app 一种较为典型的结构。您提供模型对象来显示 app 的数据结构。UIKit 提供大部分视图对象,您也可以根据需要为数据定义自定视图。数据对象和 UIKit 视图之间的数据交换则由视图控制器和 app 委托对象负责协调。

图 4

App 核心对象

一个 app 包含一个主 app 控制器和一个或多个视图控制器。它还包含用于显示 app 数据的模型对象,以及 app 界面所需的窗口和视图对象。

UIKit 和 Foundation 框架提供了许多基本类型,可用来定义 app 的模型对象。UIKit 提供了一个 UIDocument (英文) 对象,用于管理属于磁盘文件的数据结构。Foundation 框架定义了用于表示字符串、数字、数组和其他数据类型的基本对象。Swift 标准资源库 (英文) 提供了许多与 Foundation 框架中相同的类型。

UIKit 提供了 app 控制器和视图层中所需的大多数对象。具体来说,UIKit 定义了 UIView (英文) 类,该类通常负责在屏幕上显示内容。(您还可以使用 Metal 和其他系统框架将内容直接呈现在屏幕上。)UIApplication (英文) 对象负责运行 app 的主事件循环和管理 app 的整个生命周期。

另请参阅

基础知识

保护用户的隐私

保护个人数据,并尊重用户对数据的使用偏好。