《Swift iOS应用开发实战》——2.4 理解iOS 8的视图和窗口

简介:

本节书摘来自华章计算机《Swift iOS应用开发实战》一书中的第2章,第2.4节,作者:刘铭 著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.4 理解iOS 8的视图和窗口

在前面几节的学习中我们已经为Calculator项目创建了用户界面,其中使用了视图、Label和Button控件,接下来我们将详细了解有关视图和窗口的概念。
2.4.1 视图概述
视图属于可视化对象,多个视图组合起来就组成了iOS应用程序的用户界面。视图本质上反映的是屏幕上的一块特定的矩形区域内所发生的事情,例如,根据用户的交互进行可视化方面的更新。所有视图都是UIKit框架中的UIView类的子类,例如UILabel、UIImageView、UIButton和UITextField都是它的子类。
另外一个比较特别也比较重要的UIView子类就是UIWindow。
2.4.2 UIWindow类
如果你之前开发过Windows或OS X平台的桌面应用程序,肯定会非常熟悉窗口的概念。一个典型的桌面应用程序会有多个窗口,每个窗口都会有标题栏,并且在标题栏中还会有一些控制按钮,负责窗口的关闭、最大化与最小化。这里的窗口,简单来说只是提供了在屏幕上的一个“面”,应用程序在这个“面”上向用户呈现信息和交互的控件。
基于iOS的UIWindow类也提供了相同的功能:为视图组件的显示提供“面”。但是与桌面应用程序之间的不同在于iOS应用程序通常只能有一个窗口,并且这个窗口必须充满整个屏幕,也没有我们在桌面应用程序中所熟悉的标题栏。
UIWindow也是UIView的子类,而且它位于整个应用程序视图层次的最顶端。用户根本无法看到也不能直接与UIWindow对象进行交互,甚至它本身在一般情况下都是由IB自动创建的。
2.4.3 视图的层次
构建iOS 8应用程序的用户界面使用了分层的方式,不同的视图通过父/子关系相互联系。位于这个层次中最顶端的视图是UIWindow对象,然后添加其他类型的视图对象。在本章之前我们设计的用户界面包括1个窗口、1个视图、1个标签和17个按钮。用户界面的视图层次可以用图2-14来表示。

image

从图2-14中我们可以发现,UIWindow对象是UIView对象的父视图,而UIView则是UIWindow的子视图。同理,UILabel和UIButton则是UIView的子视图。子视图只有一个直接父视图,而一个视图则可以有多个子视图。
另外,视图层次结构可以嵌套更多层级的视图结构,比如我们可以设计下面的层次结构,如图2-15所示。但是为了简化界面,Calculator项目并没有使用这样的层次结构。

image

视图的层次结构可以有效地帮助开发者组织和管理复杂的用户界面。很明显,子视图总是出现在其父视图的上面。可以想象,当Calculator运行的时候,UILabel总是出现在UIView的上面。不仅如此,当父视图大小发生变化的时候(视图大小改变通常是在屏幕发生旋转的时候),依据视图之间的相互关系子视图的大小和位置也会发生变化。
在Calculator项目中UIWindow对象对用户来说是不可见的,因为它总是会被其上的UIView对象全部覆盖掉,然后在这个UIView上面显示UILabel和UIButton。
视图的层次同时也定义了交互事件的处理方式,称做 “响应链”。例如,一个子视图收到一个不能处理的事件,那么这个事件就会被传递到它的即时父视图对象。如果父视图也不能处理该事件,则继续传递给它的父视图。就这样层层传递,直到某个视图对象可以处理这个事件为止。
2.4.4视图的类型
UIKit框架包含了各种视图对象,可以分为以下几类。
(1)窗口
窗口(The Window)特指前面所介绍的UIWindow类,它是整个视图层次中的根视图(root view),并且为所有需要绘制的子视图提供一个“面”。
(2)容器视图
与普通的视图对象相比,容器视图(Container View)增加了一些功能,比如,UIScrollView类就提供了滚动条和滚动功能。
(3)控件
控件类(Controls)所包含的视图既可以呈现信息又可以响应用户的交互。控件类都继承自UIControl类(UIControl继承自UIView),如按钮、滑动块、开关等。
(4)显示视图
显示视图(Display Views)与控件差不多,但它只能呈现反馈的可视化信息,并不能响应用户的交互,比如UILabel和UIImageView类。
(5) 文本和网页视图
UITextView和UIWebView这两个类都能够显示特定格式的信息给用户,比如UIWebView可以显示HTML格式的内容。
(6)导航视图和标签栏
导航视图(Navigation Views)和标签栏(Tab Bars)提供了让用户在程序中进行视图导航的机制,比如电话程序和邮件程序。
(7)警告视图
警告视图(Alert Views and Action Sheets)的设计目的是当有紧急或重要信息的时候提醒用户注意,它们还提供了可选的按钮让用户决定如何进行后面的操作。UIAlertView会在屏幕中央的位置显示一个消息框,UIActionSheet则会从屏幕的下方滑入。

相关文章
|
20天前
|
设计模式 安全 Swift
探索iOS开发:打造你的第一个天气应用
【9月更文挑战第36天】在这篇文章中,我们将一起踏上iOS开发的旅程,从零开始构建一个简单的天气应用。文章将通过通俗易懂的语言,引导你理解iOS开发的基本概念,掌握Swift语言的核心语法,并逐步实现一个具有实际功能的天气应用。我们将遵循“学中做,做中学”的原则,让理论知识和实践操作紧密结合,确保学习过程既高效又有趣。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你打开一扇通往iOS开发世界的大门。
|
21天前
|
搜索推荐 IDE API
打造个性化天气应用:iOS开发之旅
【9月更文挑战第35天】在这篇文章中,我们将一起踏上iOS开发的旅程,通过创建一个个性化的天气应用来探索Swift编程语言的魅力和iOS平台的强大功能。无论你是编程新手还是希望扩展你的技能集,这个项目都将为你提供实战经验,帮助你理解从构思到实现一个应用的全过程。让我们开始吧,构建你自己的天气应用,探索更多可能!
44 1
|
2月前
|
搜索推荐 API 开发工具
打造个性化天气应用:从零开始的iOS开发之旅
【8月更文挑战第31天】本文是一篇针对初学者的iOS应用开发指南,将引导读者通过Swift和iOS SDK构建一个简单而美观的天气应用。我们将探索如何利用API获取实时天气数据,并在应用中实现用户友好的界面设计。文章不仅包括代码示例,还提供了设计理念和用户体验优化的建议,旨在帮助初学者理解iOS开发的基础知识,并激发他们创造个性化应用的兴趣。
|
16天前
|
安全 Swift iOS开发
探索iOS开发中的Swift语言之美
在数字时代的浪潮中,移动应用已成为日常生活的延伸。本文将深入探讨iOS平台上的Swift编程语言,揭示其背后的设计哲学、语法特性以及如何利用Swift进行高效开发。我们将通过实际代码示例,展示Swift语言的强大功能和优雅简洁的编程风格,引导读者理解并运用Swift解决实际问题。
|
1月前
|
存储 IDE 开发工具
移动应用开发之旅:打造你的首个iOS应用
【9月更文挑战第23天】在数字化浪潮中,移动应用已成为连接用户与数字世界的关键桥梁。本文将带领读者踏上开发属于自己的第一个iOS移动应用的旅程,从理解移动操作系统的核心概念出发,逐步深入到实际的应用构建过程中。通过简洁明了的语言和具体的代码示例,我们将一起探索如何在苹果的iOS平台上实现一个简单的“待办事项列表”应用,让读者不仅能够学习到编程知识,还能体会到将想法转化为现实产品的成就感。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供一个实用的指南,帮助你迈出成为移动应用开发者的第一步。
|
1月前
|
安全 Swift iOS开发
探索iOS开发之旅:Swift语言的魅力与挑战
【9月更文挑战第21天】在这篇文章中,我们将一起潜入iOS开发的海洋,探索Swift这门现代编程语言的独特之处。从简洁的语法到强大的功能,Swift旨在让开发者能够以更高效、更安全的方式构建应用程序。通过实际代码示例,我们会深入了解Swift如何简化复杂任务,并讨论它面临的挑战和未来的发展方向。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和知识。
41 4
|
1月前
|
开发框架 Android开发 iOS开发
探索安卓与iOS开发的差异:构建未来应用的指南
在移动应用开发的广阔天地中,安卓与iOS两大平台各占半壁江山。本文将深入浅出地对比这两大操作系统的开发环境、工具和用户体验设计,揭示它们在编程语言、开发工具以及市场定位上的根本差异。我们将从开发者的视角出发,逐步剖析如何根据项目需求和目标受众选择适合的平台,同时探讨跨平台开发框架的利与弊,为那些立志于打造下一个热门应用的开发者提供一份实用的指南。
55 5
|
1月前
|
Swift iOS开发 UED
揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【9月更文挑战第5天】本文通过具体案例介绍如何在iOS应用中使用Swift与UIKit实现自定义按钮动画,当用户点击按钮时,按钮将从圆形变为椭圆形并从蓝色渐变到绿色,释放后恢复原状。文中详细展示了代码实现过程及动画平滑过渡的技巧,帮助读者提升应用的视觉体验与特色。
47 11
|
1月前
|
安全 编译器 Swift
探索iOS开发之旅:Swift编程语言的魅力与挑战
【9月更文挑战第5天】在iOS应用开发的广阔天地中,Swift作为苹果官方推荐的编程语言,以其简洁、高效和安全的特点,成为了开发者的新宠。本文将带领你领略Swift语言的独特魅力,同时探讨在实际开发过程中可能遇到的挑战,以及如何克服这些挑战,成为一名优秀的iOS开发者。
|
1月前
|
设计模式 前端开发 Swift
探索iOS开发:Swift与Objective-C的较量
在这篇文章中,我们将深入探讨iOS开发的两大编程语言——Swift与Objective-C。我们将分析这两种语言的特性、优势和局限性,并讨论它们在现代iOS开发中的应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和建议。
50 3