在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 = [UIApplication sharedApplication].keyWindow;
// 快速显示一个提示信息
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.labelText = text;
// 设置图片
hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"MBProgressHUD.bundle/%@", icon]]];
// 再设置模式
hud.mode = MBProgressHUDModeCustomView;
// 隐藏时候从父控件中移除
hud.removeFromSuperViewOnHide = YES;
// 1秒之后再消失
[hud hide:YES afterDelay:0.7];
}