视图和控件
UIView“家族”
UIView类的继承层次
应用界面的构建层次
iOS应用界面是由若干个视图构建而成的,这些视图对象采用树形构建
视图分类
为了便于开发,苹果将UIKit框架中的视图分成以下几个类别。
控件。继承自UIControl类,能够响应用户高级事件。
窗口。它是UIWindow对象。一个iOS应用只有一个UIWindow对象,它是所有子视图的“根”容器。
容器视图。它包括了UIScrollView、UIToolbar以及它们的子类。UIScrollView的子类有UITextView、
UITableView和UICollectionView,在内容超出屏幕时,它们可以提供水平或垂直滚动条。UIToolbar
是非常特殊的容器,它能够包含其他控件,一般置于屏幕底部,特殊情况下也可以置于屏幕顶部。
显示视图。用于显示信息,包括UIImageView、UILabel、UIProgressView和UIActivityIndicator-
View等。
文本和Web视图。提供了能够显示多行文本的视图,包括UITextView和UIWebView,其中UITextView
也属于容器视图,UIWebView是能够加载和显示HTML代码的视图。导航视图。为用户提供从一个屏幕到另外一个屏幕的导航(或跳转)视图,它包括UITabBar和
UINavigationBar。
警告框和操作表。用于给用户提供一种反馈或者与用户进行交互。UIAlertView视图是一个警告框,它
会以动画形式弹出来;而UIActionSheet视图给用户提供可选的操作,它会从屏幕底部滑出。
动作是为了响应一个控件的事件而定义的方法,返回值类型为IBAction。
关闭和打开键盘的通知
在关闭和打开键盘时,iOS系统分别会发出如下广播通知:UIKeyboardDidHideNotification和UIKeyboardDidShowNotification。
使用广播通知的时候需要注意在合适的时机注册和解除通知
屏幕滚动控件 ScrollView
ScrollView的属性有很多,但最为重要的就是与显示相关的属性:contentSize、contentInset和contentOffset。
1. contentSize属性
contentSize属性表示ScrollView中内容视图(Content View)(注意和ScrollView视图不同,是frame指定的范围)的大小,它返回CGSize结构体类型,该结构体包含width和height两个成员。
正是因为内容视图超出了ScrollView视图大小,才会有滚动屏幕的必要。
2. contentInset属性
contentInset属性用于在ScrollView中的内容视图周围添加边框,这往往为了留出空白以放置工具栏、标签 栏或导航栏等
3. contentOffset属性contentOffset属性是内容视图坐标原点与ScrollView坐标原点的偏移量,返回CGPoint结构体类型,这个结构体类型包含x和y两个成员。
应用如何与用户交流呢?警告框(AlertView)和操作表(ActionShee,屏幕底部弹出,选项列表,给用户提供多于两个的选择)就是为此而设计的。
警告框是UIAlertView创建的,用于给用户以警告或提示,最多有两个按钮,超过两个就应该使用操作表。
一般情况下,警告框的使用场景有如下几个。
应用不能继续运行。例如,无法获得网络数据或者功能不能完成的时候,给用户一个警告,这种警告框只需一个按钮。
询问另外的解决方案。好多应用在不能继续运行时,会给出另外的解决方案,让用户去选择。例如,Wi-Fi网络无法连接时,是否可以使用3G网络。
询问对操作的授权。当应用访问用户的一些隐私信息时,需要用户授权,例如用户当前的位置、通讯录或日程表等。
工具栏和导航栏
其中都可以放置UIBarButtonItem。UIBarButtonItem是工具栏和导航栏中的按钮,在事件响应方面与UIButton类似。
工具栏类为UIToolbar。在iPhone中,工具栏位于屏幕底部。
工具栏是工具栏按钮(UIBarButtonItem)的容器。
导航栏主要用于导航,考虑的是整个应用,而工具栏应用于当前界面,考虑的是局部界面。
UINavigationController。导航控制器,可以构建树形导航模式应用的根控制器,
UINavigationBar。导航栏,它与导航控制器是一对一的关系。它管理一个视图栈,用来显示树形结构 中的视图。
UINavigationItem。导航栏项目,在每个界面中都会看到。它分为左、中、右3个区域,左侧区域一般 放置一个返回按钮(设定属性是backBarButtonItem)或左按钮(设定属性是leftBarButtonItem), 右侧区域一般放置一个右按钮(设定属性是rightBarButtonItem),中间区域是标题(属性是title) 或者提示信息(属性是prompt)。导航栏与导航栏项目是一对多的关系,
UIBarButtonItem。与工具栏中的按钮一样,它是导航栏中的左右按钮。
屏幕布局
在Interface Builder设计器中,屏幕或控件的尺寸以点(point)为单位。在视网膜屏幕技术中,1个点包括了4个像素,而没有采用视网膜屏幕技术的还是1个点包括1个像素.
在iPad和iPhone屏幕布局中,一般会有状态栏、工具栏、导航栏以及内容视图部分,它们的尺寸也是固定的。 如图3-64所示,在iPhone竖屏幕中,状态栏占用20点,导航栏(或工具栏)占用44点,标签栏占用49点。
绝对布局和相对布局
绝对布局就是视图或控件在屏幕中的位置绝 对,它的大小也是绝对的。即使它所在的父容器视图大小变化或者屏幕旋转了,它的位置也不变。相对布局在上 述情况下,它的位置是变化的。
选择器
日期选择器
普通选择器
数据源协议与委托协议
UIPickerViewDataSource中的方法有如下两种。
numberOfComponentsInPickerView:。为选择器中拨轮的数目。
pickerView:numberOfRowsInComponent:。为选择器中某个拨轮的行数
集合视图
集合视图的组成,它有4个重要的组成部分。
单元格。它是集合视图中的一个单元格。
节。它是集合视图中的一个行数据,由多个单元格构成。
补充视图。它是节的头和脚。
装饰视图。集合视图中的背景视图。
集合视图单元格
集合视图单元格是集合视图中最为重要的组成部分
小结
本章首先向大家介绍了视图和控件之间的关系以及应用界面的构建层次,然后介绍了标签、按钮、文本框、 文本视图、开关、滑块、分段控件、网页控件、屏幕滚动控件、活动指示器、进度条、警告、操作表、工具栏、 导航栏等基本控件,接着介绍了屏幕布局的内容,然后我们向大家介绍了一个较为复杂的控件——选择器,最后 讨论了iOS 6中集合视图方面的内容。