- 最近在做一個(gè)截屏功能,把截屏的圖片展示在界面上毕莱,本來是打算從相冊取出直接展示在界面,因?yàn)閺南鄡匀〉脠D片是完整的遍坟,但發(fā)現(xiàn)存在2個(gè)問題:1.相冊需要用戶授權(quán)裤翩,否則無法展示截圖资盅。2.更重要的原因,ios11從相冊取截圖需要時(shí)間明顯變慢了(馬上取會(huì)取到倒數(shù)第二張圖片)。
- 為了縮減截屏?xí)r間,截圖直接用Core Graphics畫出來,但存在一個(gè)問題,存在UIAlertView,Core Graphics是無法畫出的律姨。為了避免這個(gè)問題振峻,如果界面有UIAlertView,就不展示截屏圖片。 但如何判斷UIAlertView是否存在界面上呢?google,百度都沒找到答案,后面發(fā)現(xiàn)UIAlertView的superView竟然還為nil,最后經(jīng)過探索發(fā)現(xiàn)alertView出現(xiàn)時(shí),主窗口keyWindow會(huì)發(fā)生變化,會(huì)切換為_UIAlertControllerShimPresenterWindow,所以找到了方法判斷UIAlertView是否展示择份。
if ([[UIApplication sharedApplication].keyWindow isKindOfClass:NSClassFromString(@"_UIAlertControllerShimPresenterWindow")]) return; //窗口上有彈窗 就不展示截屏