2015-05-28 15 views
12

mi hanno questi ViewControllers aggiunte in storyboard:animazioni strano quando cambia NavigationItem pronta

enter image description here

Nessuno è collegata con una classe personalizzata, tutto è puro storyboard.

Video on iPhone simulator on iOS7

Ciò avviene solo quando si utilizza layout automatico su iOS7.

Qualcun altro ha visto questo?

Download sample project of problem

+0

Ti riferisci al modo in cui il titolo proviene dal centro del viewController? – Woodstock

+0

Principalmente l'etichetta con il testo "WTF?" Sembra strano – Arbitur

+0

Se guardi la mia immagine puoi vedere che ho aggiunto l'etichetta usando lo storyboard e sta usando l'autolayout. E nel video puoi vedere la strana animazione di transizione che non ho aggiunto, è solo una semplice azione Show. – Arbitur

risposta

3

Edit 2:

Come qualcuno menzionate nelle osservazioni, non sono in grado di riprodurre il problema con il vostro progetto di esempio. Una cosa che ho notato, però, è che il tuo progetto è configurato con un obiettivo di distribuzione che è iOS 8.3. Ecco i passaggi per risolvere il problema:

Passaggio 1: Seleziona il progetto in Project Navigator di Xcode. Fase 2: Accertarsi di selezionare il progetto nella colonna di sinistra dell'editor di progetto e non il bersaglio Fase 3: Selezionare la scheda Parametri di compilazione Passo 4: Modificare la iOS distribuzione di destinazione a iOS 7.1 o iOS 7.0 a seconda del sistema operativo su cui si sta eseguendo il test. Step 5: Costruisci ed esegui.

Speriamo che questo ti possa aiutare.

Edit:

Step1. Seleziona il tuo UIViewController con l'etichetta 14 e nella terza scheda del riquadro di destra di Xcode, inserisci un ID di Storyboard come vc14.

Step2. Seleziona il tuo UIViewController con l'etichetta 12 e nella stessa scheda, inserisci una classe personalizzata come ViewController.

Step3. Rimuovi l'azione successiva del trigger dal tuo Button e sostituiscila con un @IBAction in ViewController

Step4. Aggiungere il codice al tuo @IBAction in ViewController:

@IBAction func push(sender: AnyObject) { 
    var vc14 = self.storyboard?.instantiateViewControllerWithIdentifier("vc14") as! UIViewController 
    vc14.view.layoutIfNeeded() 
    self.navigationController?.pushViewController(vc14, animated: true) 
} 

Spiegazione:

L'animazione strano sta avvenendo perché il layout non si è mai verificato prima che la segue spinge il UIViewController nel UINavigationController. iOS 7 non ha protetto adeguatamente contro tale scenario chiamando manualmente layoutIfNeeded prima di entrare in un blocco di animazione e quando il layout si verifica infine, attiva le animazioni implicite. Nell'esempio di codice che ti ho dato, ho attivato manualmente il layout prima di premere lo ViewController nello stack per evitare questo problema.

+0

Prima di tutto, prova a cambiare il prompt all'interno del blocco nello stesso modo in cui eri abituato. – Dalzhim

+0

Non ha funzionato. :( – Arbitur

+0

Non ho idea di come la mela F abbia codificato questo, ma sembra scritto molto male ... – Arbitur

0

penso di premere ⌘T. quindi l'animazione Slow inizia. Controlla tutto il simulatore che usi.

Debug-> Animazione lento

attribuisco controllare immagine di esso. See Image

+0

Ecco cosa ho fatto nel video a cui mi sono collegato. – Arbitur

4

Penso che questo problema si verifichi quando la visualizzazione si sta scaricando e impostando le sue dimensioni sulla schermata principale. Nella navigazione ios7, l'animazione push viene prima che la dimensione della vista sia impostata, in modo che possiamo vedere quella animazione. Non preoccuparti, funziona bene con ios8.0 e successivi. Per ios 7.0 puoi dare la dimensione della vista in viewDidLoad in modo che possa regolare le dimensioni prima che appaia.