1. 程式人生 > >iOS11 解決MBProgressHUD彈框不顯示問題

iOS11 解決MBProgressHUD彈框不顯示問題

在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:YES afterDelay:0.7];

}