首页 » iOS编程(第4版) » iOS编程(第4版)全文在线阅读

《iOS编程(第4版)》4.2 视图层次结构

关灯直达底部

任何一个应用都有且只有一个UIWindow对象。UIWindow对象就像一个容器,负责包含应用中的所有视图。应用需要在启动时创建并设置UIWindow对象,然后为其添加其他视图。

加入窗口的视图会成为该窗口的子视图(subview)。窗口的子视图还可以有自己的子视图,从而构成一个以UIWindow对象为根视图的视图层次结构(见图4-3)。

图4-3 视图层次结构构成应用的界面

视图层次结构形成之后,系统会将其绘制到屏幕上,绘制过程可以分为两步:

•层次结构中的每个视图(包括UIWindow对象)分别绘制自己。视图会将自己绘制到图层(layer)上,每个UIView对象都有一个layer属性,指向一个CALayer类的对象。读者可以将图层看成是一个位图图像(bitmap image)。

•所有视图的图层组合成一幅图像,绘制到屏幕上。

图4-4使用计算器应用的视图层次结构展示了上述绘制步骤。

图4-4 视图首先分别绘制自己,然后组合起来绘制到屏幕上

部分视图类(例如UIButton和UILabel)已经实现了绘图功能。例如,在Quiz应用中,只需要创建UILabel对象并设置文本内容,UILabel对象就可以自动完成绘制文本的过程。

但是Apple并没有提供可以自动绘制同心圆的视图对象。因此,Hypnosister应用将创建一个UIView的子类,并编写自定义的绘图代码。