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];
第二种方法可能不太保险,继续探索优化
网友评论