开屏广告无入侵方式

1.改变rootviewcontoller-旧流程
对是否显示广告进行判断,广告ViewController 成为 Window的RootViewController。
这个时候去获取 keyWindow的rootViewController, 是 广告ViewController。
首页提前加载活动弹窗,就会收到影响。

2.不改变rootviewcontroller。 广告显示跟主线业务进行分离。

3.图片下载成功就显示出来。

//makeKeyAndVisible 这个不需要调用改变keywindow的方式。

static UIWindow *instanceWindow;

{
    UIWindow  * bg = [[UIWindow alloc] initWithFrame:CGRectMake(0, 100, 300, 300)];
    UIWindow *curWindow = [UIWindow currentWindow];//获取当前的window
    bg.windowLevel = curWindow.windowLevel+1;
    bg.backgroundColor=[UIColor redColor];
    bg.hidden=NO;
instanceWindow=bg;
}

{
instanceWindow.hidden = YES;
instanceWindow=nil;销毁掉
}

keyWindow不是一成不变的,当你创建alertView或者ActionSheet的时候,它们所在的window会变成keyWindow。也就是说系统默认创建的window首先变成keywindow,而当弹框的时候,alertView所在的window变成keywindow,默认的keywindow变成非keywindow。

发现

(1)UITextEffectsWindow
这是iOS8引入的一个新window,是键盘所在的window。它的windowLevel是最高的。
(2)UIRemoteKeyboardWindow
iOS9之后,新增了一个类型为 UIRemoteKeyboardWindow 的窗口用来显示键盘按钮。

参考:
https://www.cnblogs.com/junhuawang/p/6004918.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容