我正在使用M13ProgressHUD在我的应用中显示加载程序。它工作正常,但如果我在加载器打开时将我的应用程序发送到后台并返回,则加载程序将被冻结。为什么会这样?
我将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返回到前台时它会被冻结,即使我在主队列中添加它?
答案 0 :(得分:1)
当iOS应用程序进入后台时,将从所有图层中删除所有动画。我通过M13ProgressSuite源代码快速搜索了一下。似乎图书馆对UIApplicationDidEnterBackgroundNotification
和UIApplicationWillEnterForegroundNotification
通知没有反应。因此,当应用程序进入前台时,库不会重新建立动画。
另请参阅github上的this问题
您可以订阅UIApplicationDidEnterBackgroundNotification
和UIApplicationWillEnterForegroundNotification
通知,并自行做出反应。
答案 1 :(得分:0)
在self.view
中添加hud视图我查看了库,我认为库中存在问题,也在github上报告。我在大多数项目中使用MBPrgressHud,它对我来说很有效。 Anoter解决方法是UIApplicationWillEnterForegroundNotification
并在那里重新开始动画。