2012-02-07 32 views
6

Chciałbym podeprzeć odczucie głównego ekranu powitalnego zanikającego po wywołaniu nazwy applicationDidBecomeActive, ale nie działa. Co ja robię źle?Ekran powitalny ios fade out (iphone 5 friendly)

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if(IS_IPHONE_5) 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]]; 
    else 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]]; 

    [self.window.rootViewController.view addSubview:splash]; 

    [UIView animateWithDuration:0.5 
        animations:^{ 
         splash.alpha = 0; 
        } 
        completion:^(BOOL finished) { 
         [splash removeFromSuperview]; 
        }]; 
} 

Następnie musisz zdefiniować gdzieś. Używam projektu .pch, ale możesz użyć swojego nagłówka, jeśli chcesz.

#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

Odpowiedz

3

Jeśli to naprawdę Twój kod, prawdopodobnie masz literówkę w nazwie obrazu. (Jeśli nie, daj nam znać, co oznacza "nie działa").

Ekran powitalny zwykle nie pojawia się co applicationDidBecomeActive:. didFinishLaunchingWithOptions: to czas, w którym wiesz, że zostałeś uruchomiony, a ekran powitalny został wyświetlony w Twoim imieniu.

+1

Dziwne, w symulatorze rozbryzguje się za każdym razem, ale w urządzeniu jest tylko przy początkowym obciążeniu. dobrze wiedzieć. – Jacksonkr

2

Twój kod wygląda poprawnie; Robię to w kilku aplikacjach.

Jednak chcesz to zrobić jako część applicationDidFinishLaunching:options:, a nie w applicationDidBecomeActive:. Rozjaśnianie ekranu powitalnego ma sens tylko wtedy, gdy jest on wyświetlany, co ma miejsce tylko wtedy, gdy aplikacja jest uruchomiona i jeszcze nie działa. Gdy aplikacja staje się aktywna, mogła znajdować się w tle - czyli już uruchomiona - tak więc zanikajcie ekran powitalny w tym przypadku nie ma sensu.

Czy chcesz, aby ekran powitalny pojawiał się ZAWSZE, gdy stanie się aktywny, nawet jeśli zostanie wznowiony z tła ze stanu zawieszenia?

3

Spróbuj dodać go bezpośrednio do okna zamiast rootViewController.view.

[self.window addSubview:splash]; 

Konieczne może być również obrócenie obrazu przy użyciu metody view.transform w celu dopasowania do obrazu startowego.

6

znajdę, z iOS6 można uzyskać ładne przejście w ten sposób

-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [UIView animateWithDuration:0.2 
          delay:0 
         options: UIViewAnimationCurveEaseIn 
        animations:^{ 
         self.window.viewForBaselineLayout.alpha = 0; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

    return YES; 
} 

następnie natychmiast na początku

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    [UIView animateWithDuration:0.5 
          delay:0 
          options: UIViewAnimationCurveEaseOut 
         animations:^{ 
         self.window.viewForBaselineLayout.alpha = 1; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

Daje krzyż fadeish efekt na ekranie załadunku do teraz załadowany ekran aplikacji.

+0

ha To jest poprawne rozwiązanie –