2009-07-03 21 views
6

Używam animacji klapki do animowania między dwoma widokami w moim kontrolerem viewcontroller. Problem polega na tym, że tło pokazuje białe puste tło podczas animacji. Chciałbym pokazać czarne tło.iPhone - odwracanie widoków pokazuje białe tło

Próbowałem ustawić kolor tła widoku głównego na czarny zarówno w IB i kodzie. Ale tło jest wciąż białe.

Czy ktoś może mi pomóc.

Dzięki.

Dodawanie kodu

[self setContentView:[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]]; 
contentView.backgroundColor = [UIColor blackColor]; 
[contentView addSubview:toolbar]; 
[self setView:contentView]; 
[contentView release]; 

frontView = [[FrontView alloc] initWithFrame:viewFrame]; 
[frontView setViewController:self]; 
[self.view insertSubview:frontView belowSubview:toolbar]; 

//Initializing the back view here too 
//on button click, executing normal flip code 

Nawet po to mam białe tło

Odpowiedz

8

Myślę, że Twoim problemem może być wyświetlanie interfejsu użytkownika podczas animacji. Aby rozwiązać ten problem, ustaw kolor tła głównego okna. Możesz to zrobić w kodzie lub w IB.

0

zacząć tworząc fałszywy główny widok, i ustawić jego tło na czarny:

// Create the main view 
    UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
    contentView.backgroundColor = [UIColor blackColor]; 
    self.view = contentView; 
    [contentView release]; 

Następnie należy utworzyć widok z przodu iz tyłu i dodać je do głównego widoku:

// create front and back views 
UIView *frontView = ... 
UIView *backView = ... 

Jeśli używasz IB, pomiń poprzedni krok i dodać bezpośrednio swoje poglądy

// add the views 
    [self.view addSubview:backView]; 
    [self.view addSubview:frontView]; 

teraz zrobić animację z klapką, jak zwykle.

EDYCJA: Prawdopodobnie nie działa, ponieważ w kodzie dodajesz widok z przodu poniżej paska narzędzi. Dodaj najpierw backView, następnie frontView, a na końcu pasek narzędzi, używając metody addSubview :. Następnie za pomocą następującego kodu animowanie klapki:

- (IBAction) flipView{ 
    // Start Animation Block 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [UIView beginAnimations:nil context:context]; 
    [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:1.0]; 

    // Animations 
    [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; 

    // Commit Animation Block 
    [UIView commitAnimations]; 

} 

Ponieważ kod wykonuje [self.view exchangeSubviewAtIndex 0 withSubviewAtIndex: 1]; Kolejność, w której dodajesz subviews, jest istotna.

+0

Dzięki. Nie mogę zmusić go do działania. umieszczenie kodu w pytaniu – lostInTransit