UIWindow的获取

注意:还是直接用下面这个比较靠谱。尤其是iOS11之后。
[UIApplication sharedApplication].keyWindow;
 
1、下面这种是比较严谨的方式
- (UIWindow *)lastWindow
{
    NSArray *windows = [UIApplication sharedApplication].windows;
    for(UIWindow *window in [windows reverseObjectEnumerator]) {
        
        if ([window isKindOfClass:[UIWindow class]] &&
            CGRectEqualToRect(window.bounds, [UIScreen mainScreen].bounds))
            
            return window;
    }
    
    return [UIApplication sharedApplication].keyWindow;
}
 
2、不要简单的使用使用
[[UIApplication sharedApplication].windows lastObject];
 
3、MBProgressHUD+MJ.h中使用的就是第二种方式,在iOS11系统中的下列场景中出现问题:
(1)vcA在navigationcontroller中。
(2)vcA中能够正常使用
[MBProgressHUD showMessage:JSONDict[@"Message”]];
(3)vcA push vcB。
(4)vcB pop vcA。
(5)vcA中不能够正常使用
[MBProgressHUD showMessage:JSONDict[@"Message”]];
 
posted @ 2018-04-04 00:37  码出境界  阅读(234)  评论(0编辑  收藏  举报