美文网首页
UIView和UIWindow之间的关系

UIView和UIWindow之间的关系

作者: Z_Han | 来源:发表于2016-07-29 15:48 被阅读188次

    iPhone OS通过UIView和UIWindow在屏幕上展现图形内容。UIWindow为内容显示提供背景平台,而UIView负责绝大部分的内容描画,并负责响应事件。

    简单的讲,UIView需要一个窗口UIWindow来展示页面,而UIWindow类似于一个UIView。

    1、继承关系

    UIView是视图的基类,UIViewController是视图控制器的基类,UIResponder是表示一个可以在屏幕上响应触摸事件的对象;UIWindow 继承于UIView, 但这个 UIWindow 是一个重中之重的View。


    2、UIWindow

    UIWindow对象是所有UIView的根视图,管理和协调的应用程序的显示。UIWindow类是UIView的子类,可以看作是特殊的UIView。一般应用程序只有一个UIWindow对象,即使有多个UIWindow对象,也只有一个UIWindow可以接受到用户的触屏事件。在AppDelegate的didFinishLaunchingWithOptions方法中,有这样一段code:

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;
    self.window.backgroundColor = [UIColor grayColor];       //给window设置一个背景色 
    [self.window makeKeyAndVisible];     //让window显示出来  
    
    //在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象!
    [UIApplication sharedApplication].windows
    
    /**
    *程序中每个时刻只能有一个 UIWindow是keyWindow。
    *如果某个UIWindow内部的文本框不能输入文字,
    *可能是因为这个 UIWindow不是keyWindow
    **/
    [UIApplication sharedApplication].keyWindow;
    
    //获得某个UIView所在的UIWindow!
    view.window;
    
    - (void)makeKeyWindow;//让当前UIWindow变成keyWindow(主窗口)!
    - (void)makeKeyAndVisible; //让当前UIWindow变成keyWindow,并显示出来!
    

    3、UIView

    UIView对象定义了一个屏幕上的一个矩形区域,同时处理该区域的绘制和触屏事件。可以在这个区域内绘制图形和文字,还可以接收用户的操作。一个UIView的实例可以包含和管理若干个子UIView,常用方法:

    - (void)removeFromSuperview;将视图从父视图中移除
    - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;插入一个视图到指定位置,视图越在下面,index越小
    - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;将index1和index2位置的两个视图互换位置
    
    - (void)addSubview:(UIView *)view;添加视图到父视图
    - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;插入视图到指定视图的下面
    - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;插入视图到指定视图上面
    
    - (void)bringSubviewToFront:(UIView *)view;把视图移到最顶层
    - (void)sendSubviewToBack:(UIView *)view;把视图移到最底层
    - (UIView *)viewWithTag:(NSInteger)tag;根据视图的tag属性找到搜索视图
    

    4、题外话

    UIViewController对象负责管理所有UIView的层次结构,并响应设备的方向变化。UIScreen可以获取设备屏幕的大小。

    感谢:http://blog.csdn.net/kuqideyupian/article/details/7731942

    相关文章

      网友评论

          本文标题:UIView和UIWindow之间的关系

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