iOS 带背景的 UIPageViewController

iOS UIPageViewController with background

我有一个容器 UIViewController (IntroViewController),我在其中加载了一个 UIPageViewController (PageViewController)。在 UIPageViewController 中,我有 IntroPageContentViewControllers 和一个 LastIntroPageContentViewController.

我想在 UIPageViewController 中有一个背景图片。如果我把它放在 IntroViewController 中,它是不可见的。我无法将其放入 UIPageViewController,当我将其放入 ContentViewControllers 之一时,它会随着每一页滚动进出。我希望它在一个地方并且只滚动内容。

我应该把 UIImageView 放在哪里,我应该把 bringSubviewToFront 放在哪里?

UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
UIImageView *imageView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"login_backgroung"]];
imageView1.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[view addSubview:imageView1];

// Create page view controller
self.pageViewController = [self.storyboard 
instantiateViewControllerWithIdentifier:@"PageViewController"];
self.pageViewController.dataSource = self;
self.pageViewController.view.backgroundColor = [UIColor clearColor];                  
[self.pageViewController.view insertSubview:view atIndex:0];



UIPageControl *pageControl = [UIPageControl appearance];
 pageControl.pageIndicatorTintColor = [UIColor whisperWhite];
 pageControl.currentPageIndicatorTintColor = [UIColor whisperDarkGray];
 pageControl.backgroundColor = [UIColor clearColor];

只需将 UIImageView 放入容器 UIViewController 并将两个内容视图控制器的 view.backgroundColor 属性 设置为 [UIColor clearColor]

这里有一个工作原理示例: https://github.com/Wojdan/stackAnswers/tree/master/33912671

理想情况下,您应该添加 UIPageViewController 作为其 parentViewController 的子项。在您的情况下,IntroViewController 是父级,PageViewController 将成为它的子级。

现在,您设置 IntroViewController 图像的背景颜色,如下所示:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background"]];

然后,您可以清除您计划添加到 UIPageViewController 中的内容视图控制器的背景颜色。

但是,您可能需要在委托下方评论以从“UIPageViewController”底部删除页面控件

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
}

希望这对您有所帮助。