最近开始学习ios编程,因为以前学习过c/c++等编程语言,所以初略过了一遍object c的语法基础。之后开始学习ios的控件,这里主要整理一下关于ios控件的api,加深自己的印象。学习书籍是ios编程第四版。
首先是视图与视图层次结构,如下图。第一次使用的starUML建模软件,因为没接触过这个东西,故可能画法有错误,不过主要也就是表达一下视图层次结构的概念。
UIWindow作为iOS程序的窗口(也可以说是根视图),它就像一个容器,可以用来存放自己定义的各个子视图(UIView或其子类)。层次结构中的每个视图分别绘制自己,视图会将自己绘制在图层上,如同cocos2d-x的层layer,每个UIView对象都有一个layer属性,指向一个CALayer类的对象。
为UIWindow添加View的方法为[self.window addSubView:(View的名字)];当然也可以设置window的rootViewController属性,rootViewController的类型为UIViewController类型,即视图控制器。每个UIViewController或者是继承自UIViewController的子类都有一个view属性,view属性指向一个UIView对象。 UIViewController对象可以管理一个视图层次结构,view就是这个视图层次结构的根视图,当程序将view作为子视图加入窗口时,也会加入UIViewController对象所管理的整个视图层次结构。
视图控制器在应用需要将其管理的某个视图显示到屏幕上时,它才会创建其视图。这是一种延迟加载的方法,可以提高内存的使用效率。
视图控制器可以通过两种方式创建视图层次结构:
1.代码方式:覆盖UIViewController中的loadView方法
2.NIB文件方式:使用Interface Builder创建一个NIB文件,然后加入所需的视图层次结构,最后视图控制器会在运行时加载NIB文件编译而成的XIB文件。
在视图控制器刚被创建时,其view属性为nil,当应用需要视图控制器控制的视图显示在屏幕上时,如果view属性为nil,会自动调用loadView方法。
以上为视图控制器与视图控制器的基本概念。很多语言都是书本上的,摘抄以做记录。