《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则会从屏幕的下方滑入。

相关文章
|
1月前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
161 4
|
2月前
|
设计模式 安全 Swift
探索iOS开发:打造你的第一个天气应用
【9月更文挑战第36天】在这篇文章中,我们将一起踏上iOS开发的旅程,从零开始构建一个简单的天气应用。文章将通过通俗易懂的语言,引导你理解iOS开发的基本概念,掌握Swift语言的核心语法,并逐步实现一个具有实际功能的天气应用。我们将遵循“学中做,做中学”的原则,让理论知识和实践操作紧密结合,确保学习过程既高效又有趣。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你打开一扇通往iOS开发世界的大门。
|
2月前
|
搜索推荐 IDE API
打造个性化天气应用:iOS开发之旅
【9月更文挑战第35天】在这篇文章中,我们将一起踏上iOS开发的旅程,通过创建一个个性化的天气应用来探索Swift编程语言的魅力和iOS平台的强大功能。无论你是编程新手还是希望扩展你的技能集,这个项目都将为你提供实战经验,帮助你理解从构思到实现一个应用的全过程。让我们开始吧,构建你自己的天气应用,探索更多可能!
77 1
|
1月前
|
JSON 数据处理 Swift
Swift 中的网络编程,主要介绍了 URLSession 和 Alamofire 两大框架的特点、用法及实际应用
本文深入探讨了 Swift 中的网络编程,主要介绍了 URLSession 和 Alamofire 两大框架的特点、用法及实际应用。URLSession 由苹果提供,支持底层网络控制;Alamofire 则是在 URLSession 基础上增加了更简洁的接口和功能扩展。文章通过具体案例对比了两者的使用方法,帮助开发者根据需求选择合适的网络编程工具。
30 3
|
1月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
30 2
|
1月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
33 2
|
1月前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
53 9
|
1月前
|
机器学习/深度学习 安全 数据挖掘
Swift语言的应用场景非常广泛
Swift语言的应用场景非常广泛
36 4
|
1月前
|
JSON 前端开发 API
探索iOS开发之旅:打造你的第一个天气应用
【10月更文挑战第36天】在这篇文章中,我们将踏上一段激动人心的旅程,一起构建属于我们自己的iOS天气应用。通过这个实战项目,你将学习到如何从零开始搭建一个iOS应用,掌握基本的用户界面设计、网络请求处理以及数据解析等核心技能。无论你是编程新手还是希望扩展你的iOS开发技能,这个项目都将为你提供宝贵的实践经验。准备好了吗?让我们开始吧!
|
1月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
59 1