0

我想使用UIPageViewController与添加到它的视图控制器其子视图控制器,问题是,如果我启动在纵向模式下的应用它完美地出现这样的:UIPageViewController不调整上旋转

enter image description here

但如果我旋转设备为横向模式看起来是这样的:

enter image description here

虽然分页控件已正确调整大小,添加视图CONTRO的看法ller没有正确调整大小。

下面是我所用来在AppDelegate中添加相应视图控制器作为根视图控制器的代码:

pagesContainerViewController = [[RWPagesContainerViewController alloc] initWithNibName:@"RWPagesContainerViewController" bundle:nil]; 
[pagesContainerViewController loadPaginationControlAtIndex:0]; 
self.window.rootViewController = pagesContainerViewController; 

这里是loadPaginationControlAtIndex方法的实现:

- (void)loadPaginationControlAtIndex:(RWPaginationView)viewIndex { 
    _pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; 

    FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 
    SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; 
    ThirdViewController *thirdViewController = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil]; 

    _subviewControllers = @[firstViewController, secondViewController, thirdViewController]; 

    [self.pageController setViewControllers:@[_subviewControllers[viewIndex]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil]; 

    [self addChildViewController:self.pageController]; 
    [[self view] addSubview:[self.pageController view]]; 

    UIView *insertedView = self.pageController.view; 
    insertedView.translatesAutoresizingMaskIntoConstraints = NO; 
    self.view.translatesAutoresizingMaskIntoConstraints = NO; 

    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[insertedView]|" 
                     options:0 
                     metrics:nil 
                     views:NSDictionaryOfVariableBindings(insertedView)]]; 
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[insertedView]|" 
                     options:0 
                     metrics:nil 
                     views:NSDictionaryOfVariableBindings(insertedView)]]; 

    [self.view layoutIfNeeded]; 

    self.pageController.dataSource = self; 
} 

我缺少任何?请建议。

回答

0

当应用程序加载或当您查看负载:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
[[NSNotificationCenter defaultCenter] 
addObserver:self selector:@selector(orientationChanged:) 
name:UIDeviceOrientationDidChangeNotification 
object:[UIDevice currentDevice]]; 

然后添加以下方法:

- (void) orientationChanged:(NSNotification *)note 
{ 
    [self.pageController setViewControllers:@[_subviewControllers[currentIndex]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil]; 
}