2014-01-29 4 views
3

В моем приложении я хочу, чтобы заставка была анимирована. Я использую следующий код, но анимация не работает.iOS splash Screen Animation

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

u хотите заставки? Y это очень сложный – chandru

+0

Является ли ваш экран по умолчанию настолько прекрасным, что я хочу его увидеть дольше, чем мне нужно? Я сомневаюсь в этом. Я предпочел бы начать использовать приложение, как только оно будет готово. Так будет и большинство людей. – Abizern

+0

Где вы использовали этот код в viewDidLoad от rootViewController или где-либо еще – 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