iOS11 解决MBProgressHUD弹框不显示问题

来源:互联网 发布:外贸邦海关数据 编辑:程序博客网 时间:2024/05/22 13:12

在iOS11上,多了一个_UIInteractiveHighlightEffectWindow类型窗口,hidden = YES。MBProgressHUD使用[[UIApplication shareApplication] lastObject]获取最上层窗口并添加,此时拿到的窗口为_UIInteractiveHighlightEffectWindow,并不可见。

解决办法: 将MBProgressHUD中获取最上层窗口的方法([[UIApplication shareApplication] lastObject])替换成[UIApplication shareApplication].keyWindow即可。

e.g.

+ (void)show:(NSString *)text icon:(NSString *)icon view:(UIView *)view

{

    if (view ==nil) view = [UIApplicationsharedApplication].keyWindow;

    // 快速显示一个提示信息

    MBProgressHUD *hud = [MBProgressHUDshowHUDAddedTo:view animated:YES];

    hud.labelText = text;

    // 设置图片

    hud.customView = [[UIImageViewalloc] initWithImage:[UIImageimageNamed:[NSStringstringWithFormat:@"MBProgressHUD.bundle/%@", icon]]];

    // 再设置模式

    hud.mode = MBProgressHUDModeCustomView;

    

    // 隐藏时候从父控件中移除

    hud.removeFromSuperViewOnHide =YES;

    

    // 1秒之后再消失

    [hud hide:YESafterDelay:0.7];

}

原创粉丝点击