2014-01-29 124 views
3

在我的应用程序中,我想让初始屏幕成为动画我正在使用下面的代码,但动画无效。iOS初始屏幕动画

UIImageView *splashScreen = [[UIImageView alloc] initWithImage:[UIImage imageNamed: @"Default.png"]]; 
[self.window.rootViewController.view addSubview: splashScreen]; 

[self.window makeKeyAndVisible]; 

NSLog(@"begin splash"); 
[UIView animateWithDuration: 0.2 
         delay: 0.5 
        options: UIViewAnimationOptionCurveEaseOut 
       animations: ^{splashScreen.alpha = 0.0; 
       } 
       completion:^(BOOL finished) { 
        [splashScreen removeFromSuperview]; 
        NSLog(@"end splash"); 
       } 
]; 
+0

你想要一个闪屏? Y这很复杂 – chandru

+0

您的默认屏幕非常漂亮,我想看到它比我需要更长的时间?我对此表示怀疑。准备就绪后,我宁愿开始使用该应用程序。大多数人也是如此。 – Abizern

+0

你在哪里可以在rootViewController的viewDidLoad或其他地方使用这段代码 – channi

回答

6

您不能为动画图像设置动画,但您可以等到应用程序启动并使用动画添加自己的视图。

6

你不得不采用一些技巧,将实现

打开AppDelegate.m和下面的代码添加到您的应用程序didFinishLaunching或应用程序didFinishLaunchingWithOptions功能:

//1. add the image to the front of the view... 
UIImageView *splashImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
[splashImage setImage: [UIImage imageNamed:@"Default"]]; 
[self.window addSubview:splashImage]; 
[self.window bringSubviewToFront:splashImage]; 

//2. set an anchor point on the image view so it opens from the left 
splashImage.layer.anchorPoint = CGPointMake(0, 0.5); 

//reset the image view frame 
splashImage.frame = CGRectMake(0, 0, 320, 480); 

//3. animate the open 
[UIView animateWithDuration:1.0 
         delay:0.6 
        options:(UIViewAnimationCurveEaseOut) 
       animations:^{ 

        splashImage.layer.transform = CATransform3DRotate(CATransform3DIdentity, -M_PI_2, 0, 1, 0); 
       } completion:^(BOOL finished){ 

        //remove that imageview from the view 
        [splashImage removeFromSuperview]; 
       }]; 

download sample app

animated-splash-screen-default-png