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

Posted

技术标签:

【中文标题】UIPageViewController 带有最后一个视图,没有页面指示器【英文标题】:UIPageViewController with a last view without page indicator 【发布时间】:2015-06-12 14:48:19 【问题描述】:

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

特别的是最后一个视图根本不应该有页面指示器。我想用最后一个视图之前的视图将它扫掉。 UIPageViewController 可以做到吗?

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

【问题讨论】:

您想要 a) 每页四个点,还是 b) 前四页五个点,最后一页没有点? 抱歉截图不正确 - 我想要 b) - 最后一页不应该被计算 【参考方案1】:

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

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

【讨论】:

任何想法我可以使用什么?我已经为此使用了自定义交互式过渡,但我发现滚动视图 (UIPageViewController) 滑动非常闷【参考方案2】:

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

如果您可以让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];

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

【讨论】:

以上是关于UIPageViewController 带有最后一个视图,没有页面指示器的主要内容,如果未能解决你的问题,请参考以下文章

带有 PageControl 的 UIPageViewController

带有渐变叠加的 UIPageViewController?

带有 UINavigationBar 的 UIPageViewController 内的 UIWebView

带有 UIPageViewController 的 Swift 容器视图

带有小页面的 UIPageViewController

Swift - 带有 4 个 UIViewController 的 UIPageViewController