iphone闪屏多任务处理

Posted

技术标签:

【中文标题】iphone闪屏多任务处理【英文标题】:iphone splash screen multi-tasking 【发布时间】:2011-02-22 10:53:33 【问题描述】:

我使用下面的代码向 iPhone 添加了一个褪色的闪屏

UIImageView *splashView;
..
..
..
splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0,20, 320, 460)];
splashView.image = [UIImage imageNamed:@"Default.png"];
[window addSubview:splashView];
[window bringSubviewToFront:splashView];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.8];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:window cache:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
splashView.alpha = 0.0;
splashView.frame = CGRectMake(-60, -60, 440, 600);
[UIView commitAnimations];

- (void)startupAnimationDone:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context 
   [splashView removeFromSuperview];
   [splashView release];

这是针对我现在启用多任务处理的旧应用程序。我有一个问题,如果应用程序关闭(通过主页按钮或锁定)我想取消动画。我添加了以下代码以在应用关闭时删除启动视图

-(void) applicationDidEnterBackground:(UIApplication *)application
   [splashView removeFromSuperview];
   [splashView release];

如果应用程序在初始屏幕动画完成之前关闭应用程序将崩溃,因为初始屏幕在 applicationDidEnterBackground 中被删除,因此当 startupAnimationDone 被调用时(在 applicationDidEnterBackground 之后)没有什么可以删除所以它崩溃。

有没有办法取消applicationDidEnterBackground中的动画?

【问题讨论】:

不要为 iPhone 应用程序启动闪屏!这不是标准 UI 体验的一部分。启动一些标准的 Apple 包含的应用程序; 任何有启动画面吗? 我同意,但这是客户的要求。他们将此用作广告空间,以使应用程序免费。 【参考方案1】:

您需要在移除视图之前强制完成动画。您可以通过为终点创建一个新动画来做到这一点。设置一个非常短的持续时间并确保使用+setAnimationBeginsFromCurrentState: 方法从当前状态开始

更长的答案可以在my answer to an old question找到。

【讨论】:

【参考方案2】:

[splashView release]之后调用splashView = nil

或致电[splashView.layer removeAllAnimations]

【讨论】:

以上是关于iphone闪屏多任务处理的主要内容,如果未能解决你的问题,请参考以下文章

当 iPad 进入分屏多任务模式时收到通知

iOS 10 iPad Safari分屏多任务功能确实有用

什么是unix 多任务

WWDC 2019 - iOS13 April 2020 要求

iPhone OS 4 多任务处理 - 在后台播放音频

iPhone 多任务处理和网络服务调用