UIPageViewController 最后一个视图没有页面指示器

UIPageViewController with a last view without page indicator

我想要 4 个视图,用户可以向左或向右滑动。 为此,我打算使用 UIPageViewController。

特别的是最后一个视图根本不应该有页面指示符。我想用最后一个之前的视图将它刷掉。这可以用 UIPageViewController 实现吗?

这是滑动到最后一个视图的图片:

我认为UIPageViewController不可能实现你所说的。因为你现在无法获取当前视图移动了多远的值。

要获得该值,您可以自定义 UIScrollView 并在委托方法中自行设置页面指示器的动画 - scrollViewDidScroll:

没有内置支持有条件地显示页面控件,具体取决于您所在的页面。

  • 如果你可以让 UIPageViewController 查询它的 UIPageViewControllerDataSource,你可以尝试在过渡到最后一个视图控制器时从 presentationCountForPageViewController: 返回 0,但这永远不会是一个好的解决方案,因为您正试图规避控制器在内部为您管理的内容。
  • 您可以使用UIAppearance来改变UIPageControl的颜色。

    这可以用来只为特定的视图控制器应用样式,如下所示:

    UIPageControl *pageControl = [UIPageControl appearanceWhenContainedIn:[LastViewController class], nil];
    pageControl.pageIndicatorTintColor = [UIColor clearColor];
    pageControl.currentPageIndicatorTintColor = [UIColor clearColor];
    pageControl.backgroundColor = [UIColor clearColor];
    

    但是,这不会将其从视图中删除,页面控件的手势仍将处于活动状态。