从启动图像平滑过渡到主视图

时间:2011-06-10 17:56:02

标签: iphone transition launch

当应用加载时,是否可以实现平滑过渡,从启动图像到第一个视图?

默认行为是打开/关闭,立即更改:启动图像出现,然后它立即消失,让主视图控制器发生。我想实现一些淡入淡出或放大或缩小。

这可能吗?

谢谢!

4 个答案:

答案 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
//