MBProgressHUD中0.7版本在ios11上面的小坑

来源:互联网 发布:集成吊顶软件免费版 编辑:程序博客网 时间:2024/05/30 04:26

之前没注意,今天更新了系统,突然发现MBProgressHUD不显示了,要么就是一直显示不隐藏,这是个啥意思呀?
因为我的MBProgressHUD比较古老了,是Version 0.7的,所以正常显示的小伙伴就不要改动了。
研究下原来发现问题:
首先说显示:

+ (MB_INSTANCETYPE)showHUDAddedTo:(UIView *)view animated:(BOOL)animated {    MBProgressHUD *hud = [[self alloc] initWithView:view];    [view addSubview:hud];    [hud show:animated];    return MB_AUTORELEASE(hud);}

以前写的的时候是:

if (view == nil) view = [[UIApplication sharedApplication].windows lastObject]; MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];

现在不行了,我改为:

if (view == nil) view = [UIApplication sharedApplication].keyWindow;; MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];

再说隐藏:

+ (BOOL)hideHUDForView:(UIView *)view animated:(BOOL)animated {    if (view == nil) view = [[UIApplication sharedApplication].windows lastObject];    MBProgressHUD *hud = [self HUDForView:view];    if (hud != nil) {        hud.removeFromSuperViewOnHide = YES;        [hud hide:animated];        return YES;    }    return NO;}

改为:

+ (BOOL)hideHUDForView:(UIView *)view animated:(BOOL)animated {     if (view == nil) view = [UIApplication sharedApplication].keyWindow;    MBProgressHUD *hud = [self HUDForView:view];    if (hud != nil) {        hud.removeFromSuperViewOnHide = YES;        [hud hide:animated];        return YES;    }    return NO;}

还有一处方法:
以前用法:

_hud = [MBProgressHUD showHUDAddedTo:[[UIApplication sharedApplication].windows lastObject] animated:YES];

改为

//_hud = [MBProgressHUD showHUDAddedTo:[UIApplication sharedApplication].keyWindow animated:YES];//不要改成这样,因为改完发现会一闪而过。 _hud = [MBProgressHUD showHUDAddedTo:[UIApplication sharedApplication].delegate.window animated:YES];

这样就可以正常显示了,别问我为什么,我也不知道为什么,有时间再去研究吧。

阅读全文
0 0