在我的应用程序中,我有一个包含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个标签。图像视图占据整个屏幕,标签覆盖该图像视图。
我的假设是在页面视图控制器中,图像视图也会占用容器视图的所有空间,而页面指示器将覆盖图像视图。
实际上,页面指示符位于图像视图之下。这样,图像视图不占用整个容器的空间,而是缩小以在其下放置页面指示符。
有没有办法按我想要的方式去做?即图像视图将所有容器的空间和页面指示器覆盖在上面。
答案 0 :(得分:0)
我猜你需要覆盖- (void) viewDidLayoutSubviews {}
来设置/更新图像视图或页面容器内其他视图的约束。这种问题的原因是从开始它的自由形式(任何 - 任何或其他),最后在- (void) viewDidLayoutSubviews
之前调整到实际的设备屏幕大小。
答案 1 :(得分:0)
解决方案是 - 第三方库。 我使用了MAPageViewController。 https://github.com/mamaral/MAPageViewController