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

时间:2014-04-18 18:06:53

标签: objective-c uipageviewcontroller uipagecontrol

我能够在第一页上成功更改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 个答案:

答案 0 :(得分:0)

仅在首次将组件添加到窗口时才设置

appearance代理属性。更改appearance属性不会更改已显示的组件。如果要更改屏幕上已有组件的颜色,则需要引用它并直接更改其颜色,或将其从视图层次结构中删除并重新添加。

You can read the documentation here

相关引用:

  

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