当应用加载时,是否可以实现平滑过渡,从启动图像到第一个视图?
默认行为是打开/关闭,立即更改:启动图像出现,然后它立即消失,让主视图控制器发生。我想实现一些淡入淡出或放大或缩小。
这可能吗?
谢谢!
答案 0 :(得分:15)
没有框架支持,但如果您自己手动执行,则可以获得该结果。根据您的启动图像以及您的UI的外观,您可以采用不同的方式进行操作,但基本上:在加载时,使第一个视图控制器加载并在图像视图中显示default.png图像。然后设置淡出该图像的动画以显示您的实际UI。
答案 1 :(得分:7)
修改了Dancreek的答案,在AppDelegate应用程序中完成所有操作:didFinishLaunchingWithOptions。我喜欢这个,因为代码保证只在应用程序启动时运行,并且它不会污染任何视图控制器。
这很简单:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// set up your root view and stuff....
//.....(do whatever else you need to do)...
// show the main window, overlay with splash screen + alpha dissolve...
UIImageView *splashScreen = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]];
[self.window addSubview:splashScreen];
[self.window makeKeyAndVisible];
[UIView animateWithDuration:0.3 animations:^{splashScreen.alpha = 0.0;}
completion:(void (^)(BOOL)) ^{
[splashScreen removeFromSuperview];
}
];
}
答案 2 :(得分:2)
你很幸运。我刚刚在几分钟前做过这件事。你需要一个闪屏。视图上的图像与设备加载的默认图像完全相同。然后在你的应用程序中使用从viewDidAppear函数
调用的淡入淡出动画来解除它- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self performSelector:@selector(killSplashScreen) withObject:nil afterDelay:1.0];
}
- (void)killSplashScreen {
[UIView animateWithDuration:0.5 animations:^{splashScreen.alpha = 0.0;} completion:NULL];
}
答案 3 :(得分:0)
我们经常使用名为“splashView”的东西来做这件事。它由Shannon Applecline撰写,并根据CC许可证提供。你将不得不做一些谷歌搜索来找到它。
//
// splashView.h
// version 1.1
//
// Created by Shannon Appelcline on 5/22/09.
// Copyright 2009 Skotos Tech Inc.
//
// Licensed Under Creative Commons Attribution 3.0:
// http://creativecommons.org/licenses/by/3.0/
// You may freely use this class, provided that you maintain these attribute comments
//
// Visit our iPhone blog: http://iphoneinaction.manning.com
//