九十四、理解 iOS的视图、窗口 和 属于视图类型的其它类型的物件

在之前的博文当中  我们  已经创建了  几个iOS应用程序,在这些应用程序当中  我们  也创建了  不少用户界面了。我们  在没做什么解释的情况下  已经使用过了  视图  和  窗口。在向前  推进之前  我们  需要  清楚地  理解  iOS用户界面构建  与  管理背后的概念。

视图的概述

视图  属于  肉眼可见的物件。视图  可以用来组装、创建  iOS应用程序的用户界面。视图  本质上  是  屏幕上一个特定大小的特定矩形区域,从视觉上来说,这个区域内  与  这个区域外  不同;从用户交互的角度来说,这个区域内  与  这个区域外  也不同。所有的视图类型物件  都属于  UIView类型,比如  UILabel类型的物件(标签物件)、UIImageView类型的物件(图像视图),UIButton类型的物件(按钮物件)  和  UITextField类型的物件(文本框物件)等。

UIWindow这类物件

如果  你  曾经  为Windows  或者  Mac OS X这样的桌面操作系统  开发过  应用程序,那么  你  对窗口的概念  一定  很熟悉。典型的桌面应用程序  会包含  一个到多个窗口,各个窗口  都拥有  一个标题栏,而  标题栏上的按钮  允许  你  最小化、最大化  或者  关闭  窗口。在这样的语境中  窗口  在屏幕表面  提供了  一个区域,应用程序  可以在这个区域当中  向用户  展示  信息  以及  物件。

UIWindow这类物件  为iOS应用程序  提供了  类似的功能。各种视图物件  都可以显示  在窗口提供的区域内。然而  iOS应用程序的窗口  还是  有  一些不同的,iOS应用程序  只有  一个窗口,窗口  要占满  整个屏幕,并且  窗口  也没有标题栏、最大化、最小化  和  关闭按钮。

其实  UIWindow类型的物件  也属于  UIView类型,并且  在整个视图体系中  位于  最底层。用户  并不会看到  UIWindow类型的物件  或者  与  UIWindow类型的物件  进行  直接互动。UIWindow类型的物件  可以通过编写  代码  来创建,但是  一般  由界面创建器  自动  创建。

视图体系

iOS应用程序的用户界面  是  按照  一定的体系  构建出来的。UIWindow类型的物件  位于  这个体系的最底层,其它视图物件  依次  添加  到这个体系当中。在我们之前创建的单位换算应用程序当中  我们设计的用户界面  包含了  一个窗口、一个视图、一个文本框、一个按钮  和  一个标签。那么  这个用户界面的视图体系  就应该是  这样的:

UIWindow,UIView,UIButton,UILabel,UITextField

这个视图体系中的UIWindow物件  是  UIView物件的主视图,而  UIView物件  则是  UIWindow物件的子视图。与之相似,UIButton物件、UILabel物件  和  UITextField物件  都是  UIView物件的子视图。一个子视图  只能拥有  一个直接的主视图。

根据我们肉眼的观察  子视图  总是  出现  在主视图的上方  而且  子视图  总是  位于  主视图边界以内。子视图的尺寸改变  总是  跟  主视图的尺寸改变  关联  在一起的。也就是说  主视图  有  能力  改变  子视图的位置  和  尺寸。

当用户  与  用户界面  交互时,视图体系  控制着  对事件的处理。视图体系  通过响应链条  来处理  用户触发的事件。比如  一个子视图  无法处理  它收到的事件,那么  它  就将  这项事件  传递  给它的主视图。如果  收到事件的主视图  也无法处理  该项事件,那么  它  就将  这项事件  传递  下一层主视图,直到  事件  得到  处理  为止。

视图类型

苹果  将  不同的视图  都包括  在UIKit框架当中  并且  分成了  几个不同的类别:

窗口

UIWindow类型的窗口物件  位于  视图体系的最底层。其它子视图  在UIWindow物件所提供的区域内  绘制  各自的内容。

容器视图

容器视图  可以用来扩展  其它视图物件的功能。UIScrollView(滚动视图)这类物件  为UITableView(列表视图)这类物件  和  UITextView(文本视图)这类物件  提供了  滚动条  和  滚动的功能。UIToolbar(工具条)这类物件  用来将  多个控件  组织  在单个视图当中。

控件

控件视图  除了  向用户  展示  信息之外  而且  还对用户的互动  进行响应。控件视图  都包含  在UIControl这类物件当中,而  UIControl这类物件本身  就包含  在UIView这类物件当中。控件视图  包含了  按钮、滑块  和  文本框等。

文本  和  网页视图

UITextView(文本视图)  和  UIWebView(网页视图)这两类物件  都为开发者  提供了  显示  格式化文本的机制。比如  UIWebView这类物件设计出来的目的  就是  像网页浏览器那样  显示  html内容的。

导航视图  和  标签栏

导航视图  和  标签栏  为开发者  提供了  在应用程序界面当中  导航的机制。它们  是  和  视图控制器  配合使用的,一般  用  界面创建器  创建。

对话框视图

对话框视图  包含了  UIAlertView  和  UIActionSheet这两类物件。这些物件  用来  向用户  提示  重要  或者  紧急的信息  并且  允许  用户  采取  措施。UIAlertView这类物件  是  蓝色的弹出式对话框。而  UIActionSheet这类物件  则是  从屏幕底部滑出的面板。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值