UIPageViewController:每页更改页面指示器/页面控件的颜色

Posted

技术标签:

【中文标题】UIPageViewController:每页更改页面指示器/页面控件的颜色【英文标题】:UIPageViewController: Change color of page indicator/pagecontrol per page 【发布时间】:2014-04-18 18:06:52 【问题描述】:

我能够成功地更改 UIPageViewController 上的 PageControl/页面指示器的颜色,仅用于第一页。我的用例要求每个页面都是不同的颜色,需要 PageControl/页面指示器与页面匹配颜色。我尝试根据页面索引更改颜色,但它不起作用。

有人知道如何解决这个问题吗?

- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index



    if ([tutorialItems count] == 0) 
        return nil;
      

      // Create a new view controller and pass suitable data.
      PageContentViewController *pageContentViewController
      = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"];

      TutorialItem *tutorialItem = [tutorialItems objectAtIndex:index];
      pageContentViewController.imageFile = tutorialItem.tutorialImageFileName;
      pageContentViewController.titleText = tutorialItem.tutorialTitle;
      pageContentViewController.tutorialText = tutorialItem.tutorialText;

      int red = tutorialItem.tutorialRedKey;
      int green = tutorialItem.tutorialGreenKey;
      int blue = tutorialItem.tutorialBlueKey;

      pageContentViewController.pageIndex = index;

      tutorialBackgroundColor = [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:1.0f];

      pageContentViewController.tutorialBackgroundColor = tutorialBackgroundColor;

      UIPageControl *pageControl = [UIPageControl appearance];
      pageControl.pageIndicatorTintColor = [UIColor blackColor];
      pageControl.currentPageIndicatorTintColor = [UIColor whiteColor];
      pageControl.backgroundColor = [UIColor clearColor];
      pageContentViewController.pageControllerColor = tutorialBackgroundColor;

      return pageContentViewController;
    

【问题讨论】:

【参考方案1】:

appearance 代理属性仅在组件首次添加到窗口时设置。更改 appearance 属性不会更改已经可见的组件。如果要更改屏幕上已经存在的组件的颜色,则需要引用它并直接更改其颜色,或者将其从视图层次结构中删除并重新添加。

You can read the documentation here

相关引述:

当视图进入窗口时,ios 会应用外观更改,但它不会 更改已经在窗口中的视图的外观。改变 当前在窗口中的视图的外观,删除该视图 从视图层次结构中,然后将其放回。

【讨论】:

以上是关于UIPageViewController:每页更改页面指示器/页面控件的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 UIPageViewController 中的按钮名称

UIPageViewController 和屏幕外方向更改

页面更改时iOS UIPageViewController索引不增加

Swift - 单击按钮更改 UIPageViewController 视图

如何在 UIPageViewController 中更改页面指示器的背景颜色

如何检测 UIPageViewController 视图何时更改