一个view加到UIWindow的方式主要有2种:
方法1、直接拿到当前的window,通过UIWindow *window = [UIApplication shareApplication].windowslastObject],然后在用[ window addSubView:view]即可
方法2、设置UIWindow的控制器,将RootVC的view加到window上,可以这么用:
self.window.rootviewcontroller = vc就行了 。
第一种存在一些问题,主要是因为生命周期不同步引起的。下面举出两种可能引起问题的case。
case1:当view发生一些事件的时候,通知控制器,但是控制器已经销毁了,可能会出现不可预知的错误。
case2: 当发生屏幕旋转事件的时候,UIapplication对象会将旋转事件传递给UIWindow实例,UIWindow又会将旋转事件传递给它的根控制器,由根控制器决定是否需要旋转。传递过程是:
UIapplication->UIWindow->根控制器,第一种方法因为没有拿到根控制器,所以在这种情况下view不能跟着旋转,为了适配还得再进行相关的开发。demo中写的就是这种case,转屏的时候view不会跟着转。
另外,直接把view添加到UIWindow上面去。也不容易整体控制,不好管理。