适配iOS11的坑

1、iOS11视图无法显示----添加在window上的视图无法显示
我们一般都会用下面这种方式来让一个视图显示在最顶层:

UIView *shareView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, screenSize.width, screenSize.height)];
UIWindow *window = [UIApplication sharedApplication].windows.lastObject; 
[window addSubview:shareView];

但是今日发现部分用户升级iOS11之后这些视图部分加载不出来,遂去查看了一下,发现如果当前控制器不是导航器的根控制器的时候,[UIApplication sharedApplication].windows多了一个视图:

FD4A6B30-1B49-4E23-93C9-48FE24189276.png

而以前的情况是这样的:

20E0C683-98D6-4B53-B0F5-193C32F6E6F2.png

大家应该都看得出来是多了一个_UIInteractiveHighlightEffectWindow,目前还不了解多出来的这个是什么层,总之大家都可以看到,这个window的hidden为YES,userInteractionEnabled为NO,所有视图添加到这上面肯定无法显示,可以显示也无法点击,目前我这的处理方法:
1、将视图添加到控制器的view上面,而不是window;
2、改成下面的方法:

UIView *shareView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, screenSize.width, screenSize.height)];
UIWindow *window = [UIApplication sharedApplication].windows[[UIApplication sharedApplication].windows.count-2]; 
[window addSubview:shareView];

第二种方法可能不太保险,继续探索优化

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

推荐阅读更多精彩内容

友情链接更多精彩内容