• UIWindow


     

    UIWindow的详细介绍

            注释:iOS程序启动完毕后,创建的第一个视图控件就是UIWindow(和第一个对象区别开来)

     
     
     
    窗口的创建过程
     
     
     
     
    展现一个空项目搭建一个程序  
     
         目的:展现程序运行过程
     
     
     
     
    在storyboard没有的情况下创建项目,这样创建有许多代码
     
     
     
     
    这个window就是应用所在的window
     
     
     
     
     
     
    在代理对象的实现类中实现协议的方法,来完整写出window的创建过程,创建/显示
     
     
    正常显示
     
    一注释,一片漆黑
     
     
     
     
     
     

    添加UIView到UIWindow中两种常见方式:

     
     
     
     
     
     
    设置控制器的UIView颜色是蓝色
     
     
     
     
     
    第一种:- (void)addSubview:(UIView *)view;直接将view添加到UIWindow中,但并不会理会view对应的UIViewController
     
     
     
     
    弊端:这个方法一调用完,就释放控制器,导致只剩下view,那控制器上监听的按钮是不是一点击就崩溃了
     
     
     

    第二种:@property(nonatomic,retain) UIViewController *rootViewController;自动将rootViewController的view添加到UIWindow中,负责管理rootViewController的生命周期

     
    只要将控制器的设置成窗口的根控制器就会显示one控制器的view 
     
     
     
     
         你看也能显示,没有主动添加view到window上也能显示
     
     
     
     
    控制器只是起到辅助作用,没有控制器也能显示控件到window上,但一个应用肯定有很多界面,一个window显示是不现实的
     
     
    开发中只能用第二种,第一种各种弊端:野指针,控制器指针因为已经释放了;第二种不会
     
     
     
    演示第一种和第二种的区别
     
     
             加个开关
     
     
    第一种内容没换过来
     
     
    第二个方法就旋转过来了
     
     
     

     旋转事件 --> UIApplication --> UIWindow  —rootViewController   旋转由控制器控制

         不同界面就是将不同的控制器设置成根控制器就好了,这部分总结就是window是最牛的,必须用第二种方法

     
    05- UIWindow补充

    加载storyboard的实质

           窗口创建过程的代替,以前storyboard的创建方式就是自动生成创建window的代码,并将箭头所指的控制器变成跟控制器

        就是代替上面的代码(storyboard对应的就是一个控制器啊),如果把主要的storyboard的删掉,就不会显示了,因为不会加

    载storyboard箭头所指的控制器,也不会创建window。

    下面苹果官方文档storyboard的创建过程

           

    makeKeyAndVisible方法的实质底层语句

     
     
     
     
     
     
     
     
     
     
    现在window2是主窗口
     
     
     
     
     
     
    ios6下非主窗口,写不了
     
    ————
     
    主窗口获取,一开始是window,后来是window2,所以只有一个主窗口
     
     
     
    ————————
     
    你会发现键盘也在一个window上,以后要改键盘上的东西,要首先拿到这个window
     
     
     
     
  • 相关阅读:
    Docker优势
    jdk-tomcat-jenkens 安装
    SQL-2--TRIGGER
    边工作边刷题:70天一遍leetcode: day 92
    边工作边刷题:70天一遍leetcode: day 39
    边工作边刷题:70天一遍leetcode: day 96
    边工作边刷题:70天一遍leetcode: day 1
    边工作边刷题:70天一遍leetcode: day 94
    边工作边刷题:70天一遍leetcode: day 95
    边工作边刷题:70天一遍leetcode: day 97
  • 原文地址:https://www.cnblogs.com/kongweiiwei/p/4654785.html
Copyright © 2020-2023  润新知