2013-11-03 2 views
5

Sto realizzando la seguente struttura del controller di visualizzazione (VC).UIPageViewController su UINavigationController non inoltra il proprio ViewController figlio da quando cambia orientamento

[UINavigationViewController] -> [UIPageViewController] -> [UIViewControllers]

allora, questo VC dovrebbero sostenere orientamento verticale e orizzontale.

Un problema che ho è sollevato a cambiare orientamento su qualsiasi lato.

enter image description here

si può vedere il problema. enter image description here

zona rossa è il colore del bambino VC su UIPageViewController sfondo.
area blu è il colore di sfondo di UIPageViewController.

Suppongo che VC figlio non sia stato rilanciato da UIPageViewController. L'ho capito da molto tempo. Alla fine ho finalmente trovato un lavoro in giro per aggiungere la seguente funzione sostituita a personalizzato UIPageViewController.

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    [self setViewControllers:self.viewControllers 
        direction:UIPageViewControllerNavigationDirectionForward 
        animated:NO 
        completion:NULL]; 
} 

Sebbene lo spostamento vista inconveniente è mostrato appena terminato rotazione. Questo codice risolve grosso modo il problema.

in ogni caso, Voglio davvero conoscere tutte le soluzioni belle e naturali.

UPDATE
mia app funziona bene su iOS6. potrebbe essere un bug iOS7?

+0

hai realizzato 2 xib diversi per orientamento diverso? –

+0

Mi sono imbattuto in problemi di layout quando ho utilizzato un controller di visualizzazione di pagina all'esterno di un controller di visualizzazione padre (come si sta facendo). Questi problemi sono scomparsi quando ho aggiunto il controller di visualizzazione di pagina a un controller di visualizzazione padre. Ho usato il codice standard dal modello Xcode dell'applicazione Page-Based di Apple. – bilobatum

+0

@MirkoCatalano No. UIPageViewController personalizzato viene creato a livello di codice, ma UINavigationController è rootViewController dell'applicazione. Io uso uno storyboard per costruire l'interfaccia utente. La ragione per cui non ho usato uno storyboard per UIPageViewController è di interagire con un pulsante che si trova su un UITableViewCell personalizzato. Non ho usato uno storyboard per creare il pulsante poiché il pulsante è stato creato dinamicamente in runtime. –

risposta

10

Ho risolto questo problema per inserire la seguente riga di codice SINGLE in [viewDidLoaded] di UIPageViewController personalizzato.

self.automaticallyAdjustsScrollViewInsets = NO; 

ho supposto che UIPageViewController ha una vista di scorrimento, e se è incorporato in UINavigationController, si getterà in modo non corretto dal momento che cambia l'orientamento.

Fortunatamente, la mia soluzione si è adattata al problema.

@MirkoCatalano Grazie per i vostri commenti. questi sono molto utili per trovare la giusta soluzione.

+0

Grazie. Mi hai salvato. Sono rimasto bloccato su questo per tre giorni. Vorrei poterti dare più voti. – Greeso

+0

@Greeso Questo è il mio piacere. Avevo anche sofferto di questo problema durante il tempo che hai trascorso. Sono davvero felice come te. –