UIPaveViewController,页面指示符覆盖内容

时间:2015-08-13 12:50:41

标签: ios objective-c iphone layout uipageviewcontroller

在我的应用程序中,我有一个包含UIPageViewController的屏幕。它占据了屏幕的一部分,所以我把它放在容器应用程序中。

要显示页面控制器,请执行以下操作

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

为了使页面控制器适合容器视图的大小,我添加了约束(使用Pure Layout库)

- (void)updateViewConstraints {
    [super updateViewConstraints];

    if (!self.didUpdateConstraints) {

        [self.pageContainerView addConstraints:[self.pageController.view autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero]];

        self.didUpdateConstraints = YES;
    }
}

这里的一切都很好,除了一件事。

在内容控制器(显示在页面控制器内)我有一个图像视图和2个标签。图像视图占据整个屏幕,标签覆盖该图像视图。

我的假设是在页面视图控制器中,图像视图也会占用容器视图的所有空间,而页面指示器将覆盖图像视图。

实际上,页面指示符位于图像视图之下。这样,图像视图不占用整个容器的空间,而是缩小以在其下放置页面指示符。

有没有办法按我想要的方式去做?即图像视图将所有容器的空间和页面指示器覆盖在上面。

2 个答案:

答案 0 :(得分:0)

我猜你需要覆盖- (void) viewDidLayoutSubviews {}来设置/更新图像视图或页面容器内其他视图的约束。这种问题的原因是从开始它的自由形式(任何 - 任何或其他),最后在- (void) viewDidLayoutSubviews之前调整到实际的设备屏幕大小。

答案 1 :(得分:0)

解决方案是 - 第三方库。 我使用了MAPageViewController。 https://github.com/mamaral/MAPageViewController