ios - iPhone启动画面多任务处理

标签 ios multitasking splash-screen

我使用下面的代码向 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];
}

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

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

如果应用程序在启动屏幕动画完成之前关闭,则应用程序会崩溃,因为启动屏幕已在 applicationDidEnterBackground 中删除,因此当调用startupAnimationDone(在 applicationDidEnterBackground 之后)时,没有任何内容可删除,因此会崩溃。

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

最佳答案

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

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

关于ios - iPhone启动画面多任务处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5077159/

相关文章:

javascript - React Native - 启动画面更改错误

objective-c - 为什么 ARC 让我的应用程序如此缓慢?

ios - iPhone 和 iPad 之间 iOS 的 scrollViewDidEndZooming 错误

ios - 准确的地理位置范围变量

ios - 如何向 UIView 添加径向渐变?

ios7 - iOS 多任务切换器系统镜像与应用程序镜像差异解决方法

java - 如何设置线程上运行的各个任务的最大执行时间?

java - 使用 Spring 任务执行器

android - 使用 Phonegap 的动画启动画面

ios - 在 iOS 上使用 Cordova 闪屏时出现黑条