实现view添加到window的方式

一个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上面去。也不容易整体控制,不好管理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值