在我的应用程序中,我有一个包含UIPageViewController的屏幕。它占用了屏幕的一部分,所以我把它放到了容器应用程序中。
为了显示页面控制器,我执行以下操作
[self addChildViewController:self.pageController];
[self.pageContainerView addSubview:self.pageController.view];为了使页面控制器适合容器视图的大小,我添加了约束(使用纯布局库)
- (void)updateViewConstraints {
[super updateViewConstraints];
if (!self.didUpdateConstraints) {
[self.pageContainerView addConstraints:[self.pageController.view autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero]];
self.didUpdateConstraints = YES;
}
}这里一切都很好,除了一件事。
在内容控制器(显示在页面控制器内部)上,我有一个图像视图和两个标签。图像视图占据整个屏幕,标签覆盖图像视图。
我的假设是,在页面视图控制器中,图像视图也将占据容器视图的所有空间,并且页面指示器将覆盖图像视图。
实际上,页面指示器在图像视图下。这样,图像视图不会占用整个容器的空间,而是缩小到将页面指示器放在它下面。
有没有办法按我想要的方式做?也就是说,图像视图占据了容器的所有空间和覆盖它的页面指示器。
发布于 2015-08-13 21:06:23
我猜你需要重写- (void) viewDidLayoutSubviews {}来设置/更新页面容器内的图像视图或其他视图的约束。这个问题的原因是因为它从一开始就是一个自由的形式(any-any或其他),最后就在- (void) viewDidLayoutSubviews之前,它被调整到实际的设备屏幕大小。
发布于 2015-08-14 14:12:33
解决方案是-第三方库。我使用了MAPageViewController。https://github.com/mamaral/MAPageViewController
https://stackoverflow.com/questions/31988774
复制相似问题