2014-07-07 8 views
6

i implementato il metodo in ViewController AUIViewControllerAnimatedTransitioning con UIStatusBarAnimation

- (BOOL)prefersStatusBarHidden { 
    return NO; 
} 

ho implementato il metodo in ViewController B

- (BOOL)prefersStatusBarHidden { 
    return YES; 
} 

- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation { 
    return UIStatusBarAnimationSlide; // when doing hiding animation i want it to slide up 
} 

ho implementato una classe T conforme per viewController transizione dire AtoBTransition, ho usato questo ViewControllerTransition for Transitioning Da vc (viewcontroller) A a vc B. when transitioning to vc B i want the status bar to slide up (hide with sliding animation) ma in questo caso, sembra che non faccia l'animazione scorrevole.

Domande: Basta supporre che non ho fatto codice UIStatusBar nella classe T e non ho aggiunto il valore View controller-based status bar appearance in informazioni plist. E la transizione T funziona perfettamente secondo necessità.

  1. Sono sicuro che il codice legge in -preferredStatusBarUpdateAnimation facendo punto di interruzione o di registrazione, ma il motivo per cui non ha nascosto l'animazione di stato facendo scorrere? quando si passa a slowmotion nel simulatore. sembra che non faccia animazione.

  2. la mia teoria è che è in conflitto con il contesto di animazione di transizione, quindi è possibile fare l'animazione di nascondere UIStatusBar all'interno dell'implementazione di T come parte del suo schema di transizione?

  3. è possibile eseguire l'animazione UIStatusBar insieme a ViewControllerAnimationTransition?

sentirsi liberi di cancellare alcune cose. grazie in anticipo .. :)

+0

La transizione del controller di visualizzazione personalizzata (da A a B) funziona correttamente? – Aaron

+0

Sì signore. funziona correttamente – matadorx12

+0

Sei in grado di nascondere la barra di stato? Penso che questo sia quello che stai dicendo nella domanda numero 1, ma non ne sono sicuro al 100%. – Aaron

risposta

1

Non penso che sia possibile farlo direttamente con l'API di transizione del controller di visualizzazione di iOS 7.

Ora, sto assumendo in base agli hook di questa API e all'API della barra di stato che la barra di stato è un animale a sé stante e non è disponibile per l'animazione con una transizione personalizzata. Penso che sia così perché quando viene creato il transitionContext UIViewControllerContextTransitioning per te il controller A è già aggiunto al suo containerView e perché sei responsabile dell'aggiunta del controller di visualizzazione B allo containerView (perché devi passare ad esso) tutta la vista i metodi di manipolazione della barra di stato del controller B vengono attivati ​​quando si esegue questa operazione.

Tuttavia, è possibile animato UIApplication telaio s 's keyWindow' durante la transizione di animazione Così nel metodo della classe che implementa -animateTransition:UIViewControllerAnimatedTransitioning.

[UIView animateWithDuration:[self transitionDuration:transitionContext] delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ 

    [UIApplication sharedApplication].keyWindow.frame = CGRectMake(0, 0, 320, 568); // move frame up 

} completion:^(BOOL finished) { 

    // assuming 
    [UIApplication sharedApplication].keyWindow.frame = CGRectMake(0, 20, 320, 568); //move frame down 
}]; 

Se si va con questo approccio, avrete probabilmente bisogno di regolare il telaio della finestra chiave nel controller della vista A scendere sotto la barra di stato e di essere in stile chiaro/scuro a seconda delle necessità. Quindi fai il contrario per ottenere l'effetto desiderato nel controller di visualizzazione B. È pericoloso, ma potrebbe funzionare.

+0

Sir, è anche lo stesso caso se si spinge la vista controller per navigationController? ha ancora la transizione dell'animazione (predefinita) giusto? – matadorx12

+0

Non sono sicuro di aver capito la tua domanda. – Aaron

+0

Voglio dire spingere la vista per navigazioneController con 'self.navigationController pushViewController' ha anche la transizione. è lo stesso caso di sopra? perché non posso fare animazione di nascondigli di status anche quando passaggio da 'A' a' B' senza 'T'. senza usare 'T' su Transizione' A' su 'B'. – matadorx12