2014-09-16 6 views
7

Ho notato in iOS8, quando sto spingendo un nuovo UIViewController in un UINavigationController, il vecchio UIViewController scivola fuori ma è visibile nel mio nuovo primo piano UIViewController se ha uno sfondo non opaco .iOS8 UINavigationController push/pop con problema UIView trasparente

Quando la spinta è terminata, il vecchio controller scompare, lasciando l'intera animazione all'apparenza ruvida.

Prima di iOS8 non si vedeva la vista dietro a quella che veniva spinta anche se era trasparente. Come se ci fosse una maschera che scivolava dentro. Qualcuno sa di un buon modo per risolvere questo problema, quindi è come il vecchio comportamento senza re-implementare l'intera animazione push con un'animazione personalizzata?

enter image description here

+1

Hai mai trovato una buona soluzione per questo? – Lizza

risposta

2

Non è un bug, è comportamento standard di UINavigationController.

Durante la transizione push, UINavigationController fa scorrere il primo controller più lentamente del secondo. Terminata l'animazione del secondo contoroller, UINavigationController rimuove il primo controller di visualizzazione. Se il controller della seconda vista ha uno sfondo trasparente, si vede il primo controller durante la transizione.

Hai 3 modi per raggiungere il tuo obiettivo:

  1. aggiungere lo stesso sfondo (non trasparente) alla seconda ViewContorller.
  2. Creare una transizione personalizzata, come descritto qui: Navigation controller custom transition animation
  3. Effettuare le transizioni utilizzando l'animazione UIView.
-1

Questo è ciò che ha funzionato per me:

iOS7:

presentingVC.modalPresentationStyle = UIModalPresentationCurrentContext; 

iOS 8:

modalVC.modalPresentationStyle = UIModalPresentationOverCurrentContext; 
modalVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 

(modalVC essendo del parere che si sta per presentare)

e poi in entrambi:

[presentingVC presentViewController:modalVC animated:YES completion:nil]; 

qui è la fonte originale: http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=18661