UIPageViewController中缺少页面指示

Hou*_*man 8 ios uipageviewcontroller ios7

我想利用UIPageViewController我的数据源进行分页.基本上它是有效的,但我不会看到点作为我在哪个页面上的指示.

之前有人问过这个问题,我完全按照答案提出了建议.但是我的屏幕底部仍然没有任何点.

基本上我使用UIPageViewControllerTransitionStyleScroll和导航方向是UIPageViewControllerNavigationOrientationHorizontal.

我在GitHub上创建了一个示例项目来演示这个问题.

如果有人会这么善良并帮助你.

Sen*_*ful 39

解决此问题的另一种方法是自定义页面控件的色调颜色:

UIPageControl *pageControlAppearance = [UIPageControl appearanceWhenContainedIn:[UIPageViewController class], nil];
pageControlAppearance.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControlAppearance.currentPageIndicatorTintColor = [UIColor darkGrayColor];
Run Code Online (Sandbox Code Playgroud)

  • 似乎是比接受的答案更好的解决方案,thx (3认同)

Jos*_*hen 19

更新: 请在下面查看@Senseful的答案.它比这个更受欢迎.

原始答案: 我检查了你的项目,你看不到UIPageController(点)的原因是因为它的默认颜色是白色,而且UIPageViewController视图的超视图是白色的.要解决此问题,您可以更改背景的颜色或更改颜色UIPageController.

改变背景颜色到非白色,在-viewDidLoad:FTAdviceViewController.m该组包含该视图的背景颜色UIPageViewController的图.

-(void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor redColor];
    ...
}
Run Code Online (Sandbox Code Playgroud)

要改变点的颜色,得到UIPageViewControllerUIPageControl子视图您已经创建了之后UIPageViewController.然后pageIndicatorTintColor,您可以更改其currentPageIndicatorTintColor,,和backgroundColor属性.

- (void)viewDidLoad
{
    ...
    // after creating the UIPageViewController
    for (UIView *subview in self.pageController.view.subviews) {
        if ([subview isKindOfClass:[UIPageControl class]]) {
            UIPageControl *pageControl = (UIPageControl *)subview;
            pageControl.pageIndicatorTintColor = [UIColor yellowColor];
            pageControl.currentPageIndicatorTintColor = [UIColor greenColor];
            pageControl.backgroundColor = [UIColor blueColor];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)