如何判断UIAlertView是否显示

  • 最近在做一个截屏功能,把截屏的图片展示在界面上,本来是打算从相册取出直接展示在界面,因为从相册取得图片是完整的,但发现存在2个问题:1.相册需要用户授权,否则无法展示截图。2.更重要的原因,ios11从相册取截图需要时间明显变慢了(马上取会取到倒数第二张图片)。
  • 为了缩减截屏时间,截图直接用Core Graphics画出来,但存在一个问题,存在UIAlertView,Core Graphics是无法画出的。为了避免这个问题,如果界面有UIAlertView,就不展示截屏图片。 但如何判断UIAlertView是否存在界面上呢?google,百度都没找到答案,后面发现UIAlertView的superView竟然还为nil,最后经过探索发现alertView出现时,主窗口keyWindow会发生变化,会切换为_UIAlertControllerShimPresenterWindow,所以找到了方法判断UIAlertView是否展示。
    if ([[UIApplication sharedApplication].keyWindow isKindOfClass:NSClassFromString(@"_UIAlertControllerShimPresenterWindow")]) return; //窗口上有弹窗 就不展示截屏

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,294评论 4 61
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,222评论 8 184
  • 雨幕中,一个人静默着地去了旧时工作过的乡村小镇。 而且为了怀怀旧,我选择坐着极慢的老铁路火车,听着咣当作响的车轮闲...
    迷而知返阅读 298评论 0 0
  • 一件事情发生,虽然自我机制思维会立刻得出结论,从而产生相对应的行动,但是我们制造业在得出结论时停下来,自我思维和结...
    摩西44阅读 294评论 0 0
  • 这两天在学习iOS的设计规范,主要为大家接受下我们会经常用,栏,控件和视图。 其中配合了《零基础学UI》这本书的内...
    钰钰01阅读 1,656评论 0 0