2009-07-03 10 views
6

Sto usando l'animazione di flip per animare tra due viste nel mio viewcontroller. Il problema è che lo sfondo mostra uno sfondo bianco mentre l'animazione è in corso. Mi piacerebbe mostrare uno sfondo nero.iPhone: la visualizzazione di flipping mostra uno sfondo bianco

Ho provato a impostare il colore di sfondo della vista principale in nero sia in IB che nel codice. Ma lo sfondo è ancora bianco.

Qualcuno può aiutarmi per favore.

Grazie.

L'aggiunta del codice di

[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 

Anche dopo questo ho uno sfondo bianco

risposta

8

Penso che il problema potrebbe essere che UIWindow viene visualizzato durante l'animazione. Per risolvere questo problema, imposta il colore di sfondo della tua finestra principale. Puoi farlo in codice o in IB.

0

Si inizia con la creazione di una vista principale falso, e impostare il suo sfondo al nero:

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

Quindi, si creano le viste anteriore e posteriore e le si aggiunge alla vista principale:

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

Se si utilizza IB, saltare il passaggio precedente e aggiungere direttamente le vostre opinioni

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

Ora fare l'animazione flip come al solito.

EDIT: Probabilmente non funziona perché nel codice si aggiunge il frontView sotto la barra degli strumenti. Aggiungi prima il backView, poi il frontView e infine la barra degli strumenti usando il metodo addSubview :. Quindi, utilizzare il seguente codice per animare flip:

- (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]; 

} 

Poiché il codice esegue [self.view exchangeSubviewAtIndex: 0 withSubviewAtIndex: 1]; l'ordine in cui aggiungi le sottoview è rilevante.

+0

Grazie. Non riesco a farlo funzionare. postare il codice nella domanda – lostInTransit

Problemi correlati