隐藏/显示 PageViewController 中特定视图控制器的状态栏 [关闭]

Posted

技术标签:

【中文标题】隐藏/显示 PageViewController 中特定视图控制器的状态栏 [关闭]【英文标题】:Hide/show status bar for specific view controllers in PageViewController [closed] 【发布时间】:2014-10-28 23:38:52 【问题描述】:

我有一个包含 3 个视图控制器的 UIPageViewController。我想隐藏前 2 个视图控制器的状态栏并显示最后一个视图控制器的状态栏。最好的方法是什么?

【问题讨论】:

【参考方案1】:

在你的 PageViewController 的委托中,添加这个。

- (BOOL)prefersStatusBarHidden

    PageContentViewController *controller = self.pageViewController.viewControllers[0];
    if (controller.pageIndex == 2) 
        return NO;
     else 
        return YES;
    


- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed

    if (completed) 
        PageContentViewController *controller = self.pageViewController.viewControllers[0];
        NSUInteger pageIndex = controller.pageIndex;

        // only update status bar when transition is between page 2 and page 3
        if (pageIndex == 1 || pageIndex == 2) 
            [self setNeedsStatusBarAppearanceUpdate];
        
    

【讨论】:

由于某种原因,当我尝试在 prefersStatusBarHidden 中访问 self.pageViewController.viewControllers 时,它返回 nil。知道为什么吗? 首先你可以对self.pageViewController做nil检查,如果是nil,那么你必须找到你的pageViewController在哪里,然后把方法放在创建你pageViewController的控制器中。

以上是关于隐藏/显示 PageViewController 中特定视图控制器的状态栏 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

IphoneX 安全区在使用 PageViewController 时导致隐藏内容

PageViewController 显示黑屏

IOS:通过PageViewController显示WebView

PageViewController 显示页面索引不正确?

如何让 PageViewController 显示不同的 ViewController

嵌入在 containerView 中的 PageViewController 显示前一个视图的小边距