在UIPageViewController中显示为页面时,导航栏下方的UICollectionView

时间:2014-02-21 02:28:31

标签: ios7 uicollectionview uipageviewcontroller

我有一个iOS 7应用程序,它有一个UIPageViewController。它显示的每个页面都有一个UICollectionView,它占用整个页面,导航栏除外。 iOS 7通常会调整集合视图边缘插图,使其位于导航栏下方,并在向上滚动时位于其下方。

但是当我的集合视图显示在UIPageViewController中时,它的边缘插入没有被调整,因为导航栏由页面视图控制器拥有,而不是集合视图所在的页面。我试图在集合视图上设置边缘插入,但随后它将集合视图的底部推离屏幕。

有谁知道如何在iOS 7中的页面视图控制器中设置集合视图?

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,出于挫败感,我最终做到了这一点:

在UIPageViewController中,我添加了:

[self setEdgesForExtendedLayout:UIRectEdgeAll];

并在收藏视图中viewDidLoad

if ([self respondsToSelector:@selector(topLayoutGuide)]) {
    UIEdgeInsets currentInsets = self.collectionView.contentInset;
    self.collectionView.contentInset = (UIEdgeInsets){
        .top =64,
        .bottom = currentInsets.bottom,
        .left = currentInsets.left,
        .right = currentInsets.right
    };
}

在故事板中,我禁用了两个视图的所有“扩展边缘”和“调整滚动视图插入”。 不完全是一个优雅的解决方案,但它确实有效。