Ich habe einen UIViewController, der andere ViewControllers enthält. Anfängliche Viewcontroller wird in viewDidLoad gesetzt:Rotation von UIPageViewController in Container View Controller
FirstViewController *first = [FirstViewController alloc] init];
first.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
first.view.frame = m_content.frame;
[self addChildViewController:first];
[m_content.view addSubview:first.view];
[first didMoveToParentViewController:self];
m_activeViewController = first;
Dieser Container-Controller implementiert hat automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers zurückzukehren YES. Es hat sich auch
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
for(UIViewController *vc in m_viewControllers)
{
if(vc != [m_activeViewController]
[vc willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
for(UIViewController *vc in m_viewControllers)
{
if(vc != [m_activeViewController]
[vc didRotateFromInterfaceOrientation:fromInterfaceOrientation];
}
}
Wenn Menütaste i den Übergang zwischen Viewcontrollers machen abgegriffen manuell die Vorwärtsdrehung Änderungen nicht aktiv Viewcontrollers implementiert.
- (void)onMenuItemTapped:(id)sender
{
UIViewController *vc = [m_viewControllers objectAtIndex:sender.tag];
vc.view.frame = m_content.frame;
[self addChildViewController:vc];
[self transitionFromViewController:m_activeViewController toViewController:vc duration:0 options:UIViewAnimationOptionTransitionNone animations:nil completion:^(BOOL finished) {
[vc didMoveToParentViewController:self];
[m_activeViewController removeFromParentViewController];
m_activeViewController = vc;
}];
}
Dieser Übergang arbeitet für meinen „normalen“ Viewcontrollers in Ordnung, und sie sind richtig nach der Orientierung Änderungen angezeigt, auch wenn sie nicht aktiv sind. Einer dieser Unteransicht-Controller, SecondCV genannt, hat jedoch UIPageViewController als Unteransicht-Controller. Ich habe UIPageViewControllerDelegate und UIPageViewControllerDataSource Satz dieser SecondCV und in pageViewController: spineLocationForInterfaceOrientation: Ich kehre UIPageViewControllerSpineLocationMin für Portrait und UIPageViewControllerSpineLocationMid für Landschaft. Die Drehung für dieses SecondVC funktioniert ordnungsgemäß, wenn es aktiv ist - es sind zwei Seiten in der Landschaft und eine im Portrait-Modus korrekt angezeigt. Aber wenn dieser SecondVC nicht aktiv ist, ist die Rotation falsch. Auch wenn pageViewController: spineLocationForInterfaceOrientation: aufgerufen wird, gibt es im Hoch- und Querformat immer noch eine Seite. Ich versuche, das für einige Zeit zu beheben, aber ich sehe keine anderen Optionen. Hast du irgendwelche Ideen, wie das zu beheben ist?
Vielen Dank.
Ich verwende zu Seite View-Controller, und ich habe zu einer Reihe von VC hinzugefügt, aber nicht wissen, die richtigen Art und Weise verschiedene VCs des Übergangs, wie kann ich zum nächsten VCs mit Seitenrotation Übergang zu bewegen. Können Sie das, oder einige Beispiel-Code von Post-It führen Sie mich bitte. –
[link] (https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html) Ich denke, Sie können alles hier finden, wenn nicht, kontaktieren Sie mich – DaNY
Ich habe keine Lösung noch, bitte einen Blick auf meine Frage, wenn du mich führen kann. "Http://stackoverflow.com/questions/13776894/uipageviewcontroller-change-from-two-page-mode-to-one-page-mode-without-changi#comment18942540_13776894" –