1、iOS11視圖無(wú)法顯示----添加在window上的視圖無(wú)法顯示
我們一般都會(huì)用下面這種方式來(lái)讓一個(gè)視圖顯示在最頂層:
UIView *shareView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, screenSize.width, screenSize.height)];
UIWindow *window = [UIApplication sharedApplication].windows.lastObject;
[window addSubview:shareView];
但是今日發(fā)現(xiàn)部分用戶升級(jí)iOS11之后這些視圖部分加載不出來(lái)徽惋,遂去查看了一下噪窘,發(fā)現(xiàn)如果當(dāng)前控制器不是導(dǎo)航器的根控制器的時(shí)候匈勋,[UIApplication sharedApplication].windows多了一個(gè)視圖:
FD4A6B30-1B49-4E23-93C9-48FE24189276.png
而以前的情況是這樣的:
20E0C683-98D6-4B53-B0F5-193C32F6E6F2.png
大家應(yīng)該都看得出來(lái)是多了一個(gè)_UIInteractiveHighlightEffectWindow把还,目前還不了解多出來(lái)的這個(gè)是什么層疮装,總之大家都可以看到阅虫,這個(gè)window的hidden為YES,userInteractionEnabled為NO褒颈,所有視圖添加到這上面肯定無(wú)法顯示柒巫,可以顯示也無(wú)法點(diǎn)擊,目前我這的處理方法:
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];
第二種方法可能不太保險(xiǎn)泉唁,繼續(xù)探索優(yōu)化