UIPageViewController和UIPageControl透明背景颜色 – iOS

我正在做一个教程,当应用程序首次启动,并使用UIPageViewController 。 一切工作正常,但UIPageViewController的背景颜色不透明。 它总是黑色的,如下所示:

在这里输入图像说明 在这里输入图像说明

这是我如何添加UIPageViewController (在一个UIPageViewController控制器)

.h文件:

 @interface CHMainTabViewController : UITabBarController <UIPageViewControllerDataSource> @property (strong, nonatomic) UIPageViewController *pageViewController; @end 

.m文件(在viewDidLoad ):

 // Create page view controller self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"]; self.pageViewController.dataSource = self; self.pageViewController.view.backgroundColor = [UIColor clearColor]; TutorialViewController *startingViewController = [self viewControllerAtIndex:0]; NSArray *viewControllers = @[startingViewController]; [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; [self presentViewController:_pageViewController animated:YES completion:nil]; 

在我的AppDelegate.m中,我还设置了UIPageControl的背景色:

 UIPageControl *pageControl = [UIPageControl appearance]; pageControl.pageIndicatorTintColor = [UIColor lightGrayColor]; pageControl.currentPageIndicatorTintColor = [UIColor blackColor]; pageControl.backgroundColor = [UIColor clearColor]; [pageControl setOpaque:NO]; self.window.backgroundColor = [UIColor clearColor]; 

我知道问题是与UIPageViewController的背景颜色。 是不是可以设置一个控制器的背景是透明的?

请帮忙!

谢谢。

好的,我find了解决办法:

  1. UIPageViewController上设置背景图像。

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]; 
  1. 对于你的PageViewController viewControllers ,select一个带有graphics或任何你想要的PNG图像,但要确保背景是透明的。
  2. 将你的UIPageControl的背景设置为UIPageControl的透明

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

现在运行,你的UIPageViewController看起来像这样(注意背景是静态的,只有文本正在移动,因为我们从右向左滑动): 在这里输入图像说明

在呈现之前将它们设置到页面视图控制器

 pageViewController.providesPresentationContextTransitionStyle = YES; pageViewController.definesPresentationContext = YES; [pageViewController setModalPresentationStyle:UIModalPresentationOverCurrentContext];