当应用程序从后台返回时,进度HUD冻结 - iOS

时间:2016-01-26 09:26:22

标签: ios objective-c iphone user-interface

我正在使用M13ProgressHUD在我的应用中显示加载程序。它工作正常,但如果我在加载器打开时将我的应用程序发送到后台并返回,则加载程序将被冻结。为什么会这样?

image

我将hud添加为:

_hud = [[M13ProgressHUD alloc] initWithProgressView:[[M13ProgressViewRing alloc] init]];
_hud.progressViewSize = CGSizeMake(60.0, 60.0);
_hud.animationPoint = CGPointMake([UIScreen mainScreen].bounds.size.width / 2, [UIScreen mainScreen].bounds.size.height / 2);
_hud.indeterminate = YES;
_hud.primaryColor = [UIColor whisperRed];
_hud.secondaryColor = [UIColor whisperRed];
((M13ProgressViewRing*)_hud.progressView).backgroundRingWidth = 2.0;
_hud.maskType = M13ProgressHUDMaskTypeSolidColor;
UIWindow *window = ((AppDelegate *)[UIApplication sharedApplication].delegate).window;
[window addSubview:_hud];

并将其显示为:

dispatch_async(dispatch_get_main_queue(), ^{
        // Show an activity indicator
        [_hud performAction:M13ProgressViewActionNone animated:YES];
        [_hud setStatus:@"Connecting via Facebook"];
        [_hud setIndeterminate:YES];
        [_hud show:YES];
    });

为什么当app返回到前台时它会被冻结,即使我在主队列中添加它?

2 个答案:

答案 0 :(得分:1)

当iOS应用程序进入后台时,将从所有图层中删除所有动画。我通过M13ProgressSuite源代码快速搜索了一下。似乎图书馆对UIApplicationDidEnterBackgroundNotificationUIApplicationWillEnterForegroundNotification通知没有反应。因此,当应用程序进入前台时,库不会重新建立动画。

另请参阅github上的this问题

您可以订阅UIApplicationDidEnterBackgroundNotificationUIApplicationWillEnterForegroundNotification通知,并自行做出反应。

答案 1 :(得分:0)

self.view中添加hud视图我查看了库,我认为库中存在问题,也在github上报告。我在大多数项目中使用MBPrgressHud,它对我来说很有效。 Anoter解决方法是UIApplicationWillEnterForegroundNotification并在那里重新开始动画。

Detail of issue link