美文网首页
ios学习笔记-UI继承关系、生命周期

ios学习笔记-UI继承关系、生命周期

作者: 5f375ff95999 | 来源:发表于2015-04-13 13:59 被阅读0次

    前言

    关于UI的继承关系图:

    NSObject

    了解这个图之前,可以去补充一下 UIKit的知识。

    和Mac OS X的应用程序有所不同,iPhone应用通常只有一个窗口,就是一个UIWindow类的实例。应用程序在启动时创建这个窗口(或者从nib文件进行装载),并往窗口中加入一个或多个视图,然后将它显示出来。iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了。一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow。也就说,没有UIWindow,就看不见任何UI界面。

    和Mac OS X有点不同,在Mac OS X中,NSWindow的父类是NSResponder;而在iPhone OS中,UIWindow的父类是UIView。

    在创建应用程序窗口时,应该将其初始的边框尺寸设置为整个屏幕的大小。如果窗口是从nib文件装载,Interface Builder不允许创建比屏幕尺寸小的窗口;如果窗口是通过编程方式创建的,则必须在创建时传入期望的边框矩形。除了屏幕矩形之外,没有理由传入其它边框矩形。屏幕矩形可以通过UIScreen对象来取得,具体代码如下:

    UIWindow* aWindow = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    

    上面这个视图层次可以分为如下几个大类:

    容器

    容器视图用于增强其它视图的功能,或者为视图内容提供额外的视觉分隔。比如,UIScrollView类可以用于显示因内容太大而无法显示在一个屏幕上的视图。UITableView类是UIScrollView类的子类,用于管理数据列表。表格的行可以支持选择,所以通常也用于层次数据的导航—比如用于挖掘一组有层次结构的对象。

    UIToolbar对象则是一个特殊类型的容器,用于为一或多个类似于按键的项提供视觉分组。工具条通常出现在屏幕的底部。Safari、Mail、和Photos程序都使用工具条来显示一些按键,这些按键代表经常使用的命令。工具条可以一直显示,也可以根据应用程序的需要进行显示。

    控件

    控件用于创建大多数应用程序的用户界面。控件是一种特殊类型的视图,继承自UIControl超类,通常用于显示一个具体的值,并处理修改这个值所需要的所有用户交互。控件通常使用标准的系统范式(比如目标-动作模式和委托模式)来通知应用程序发生了用户交互。控件包括按键、文本框、滑块、和切换开关。

    显示视图

    控件和很多其它类型的视图都提供了交互行为,而另外一些视图则只是用于简单地显示信息。具有这种行为的UIKit类包括UIImageView、 UILabel、UIProgressView、UIActivityIndicatorView。

    文本和web视图

    文本和web视图为应用程序提供更为高级的显示多行文本的方法。UITextView类支持在滚动区域内显示和编辑多行文本;而UIWebView类则提供了显示HTML内容的方法,通过这个类,您可以将图形和高级的文本格式选项集成到应用程序中,并以定制的方式对内容进行布局。

    警告视图和动作表单

    警告视图和动作表单用于即刻取得用户的注意。它们向用户显示一条消息,同时还有一或多个可选的按键,用户通过这些按键来响应消息。警告视图和动作表单的功能类似,但是外观和行为不同。举例来说,UIAlertView类在屏幕上弹出一个蓝色的警告框,而UIActionSheet类则从屏幕的底部滑出动作框。

    导航视图

    页签条和导航条和视图控制器结合使用,为用户提供从一个屏幕到另一个屏幕的导航工具。在使用时,您通常不必直接创建UITabBar和UINavigationBar的项,而是通过恰当的控制器接口或Interface Builder来对其进行配置。

    窗口

    窗口提供一个描画内容的表面,是所有其它视图的根容器。每个应用程序通常都只有一个窗口。更多信息请参见“UIWindow的作用”部分。

    除了视图之外,UIKit还提供了视图控制器,用于管理这些对象。更多信息请参见“视图控制器的作用”部分。

    UIWindow的创建过程

    创建一个空的项目,就可以看到UIWindow是怎么出来的了。在程序启动完毕之后就会调用一次,创建过程如下:

    UIWindow创建过程

    把 view添加到UIWindow一般有两种方式:

    (1)直接将控制器的view添加到UIWindow中,并不理会它对应的控制器

    [self.window  addsubview:vc.view];
    

    (2)设置uiwindow的根控制器,自动将rootviewcontroller的view添加到window中,负责管理rootviewcontroller的生命周期

    [self.window.rootviewcontroller=vc];
    

    建议使用第二种方法,因为第一种方法会存在很多问题。

    相关文章

      网友评论

          本文标题:ios学习笔记-UI继承关系、生命周期

          本文链接:https://www.haomeiwen.com/subject/menhfttx.html