2013-11-03 5 views
5

Ich mache die folgende View-Controller (VC) Struktur.UIPageViewController auf UINavigationController relayout seine Kind Viewcontroller seit der Änderung der Orientierung

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

dann, diese VC sollte Hoch- und Querformat unterstützen.

Ein Problem, das ich habe, wird bei der Änderung der Ausrichtung zu jeder Seite ausgelöst.

enter image description here

können Sie das Problem sehen. enter image description here

roten Bereich ist Hintergrundfarbe des Kindes VC auf UIPageViewController.
blauer Bereich ist Hintergrundfarbe von UIPageViewController.

Ich denke, Kind VC wurde nicht von UIPageViewController relayouted. Ich habe es lange herausgefunden. Ich fand schließlich eine Arbeit um die folgende überschriebene Funktion zu benutzerdefinierten UIPageViewController hinzuzufügen.

Obwohl das Verschieben einer Ansicht nach unten angezeigt wird, sobald die Drehung abgeschlossen ist. Dieser Code löst das Problem grob.

sowieso, Ich möchte wirklich jede nette und natürliche Lösungen kennen.

UPDATE
Meine App auch auf iOS6 funktioniert. Es könnte iOS7 Bug sein?

+0

Sie haben 2 verschiedene xib für unterschiedliche Orientierung gemacht? –

+0

Ich stieß auf Layoutprobleme, wenn ich einen Seitenaufruf-Controller außerhalb eines übergeordneten Ansichtscontrollers verwendete (wie Sie es gerade tun). Diese Probleme sind verschwunden, als ich den Page View-Controller einem übergeordneten View-Controller hinzugefügt habe. Ich habe den Standardcode aus Apples seitenbasierter Xcode-Anwendungsvorlage verwendet. – bilobatum

+0

@MirkoCatalano Nein. Benutzerdefinierte UIPageViewController wird programmgesteuert erstellt, aber UINavigationController ist rootViewController der App. Ich verwende ein Storyboard zum Erstellen von UI. Der Grund, warum ich kein Storyboard für UIPageViewController verwendet habe, ist die Interaktion mit einer Schaltfläche, die sich in einer benutzerdefinierten UITableViewCell befindet. Ich habe kein Storyboard verwendet, um die Schaltfläche zu erstellen, da die Schaltfläche zur Laufzeit dynamisch erstellt wird. –

Antwort

10

Ich habe dieses Problem gelöst, um die folgende SINGLE-Codezeile in [viewDidLoaded] von benutzerdefiniertem UIPageViewController zu platzieren.

self.automaticallyAdjustsScrollViewInsets = NO; 

ich angenommen, dass UIPageViewController eine Scroll-Ansicht hat, und wenn es in UINavigationController eingebettet ist, wird es falsch Orientierung da Ändern auslegen.

Glücklicherweise passte meine Lösung in das Problem.

@MirkoCatalano Vielen Dank für Ihre Kommentare. Diese sind sehr hilfreich, um die richtige Lösung zu finden.

+0

Danke. Du hast mich gerettet. Ich blieb drei Tage lang dran. Ich wünschte, ich könnte dir mehr Upvotes geben. – Greeso

+0

@Greeso Das ist mir eine Freude. Ich hatte auch während der Zeit, die du verbracht hast, unter diesem Problem gelitten. Ich bin wirklich glücklich wie du bist. –