UIPageViewController 中缺少页面指示
Posted
技术标签:
【中文标题】UIPageViewController 中缺少页面指示【英文标题】:Page indication is missing in UIPageViewController 【发布时间】:2014-01-23 00:16:45 【问题描述】:我想利用UIPageViewController
对我的数据源进行分页。
基本上它可以工作,但是我看不到这些点来指示我在哪个页面上。
以前有人问过这个问题,我完全按照the answer 的建议做了。但是我的屏幕底部仍然没有任何点。
基本上我使用的是UIPageViewControllerTransitionStyleScroll
,导航方向是UIPageViewControllerNavigationOrientationHorizontal
。
我在 GitHub 上创建了一个sample project 来演示这个问题。
如果有人能如此友善并提供帮助。
【问题讨论】:
【参考方案1】:解决此问题的另一种方法是customize the page control's tint colors:
UIPageControl *pageControlAppearance = [UIPageControl appearanceWhenContainedIn:[UIPageViewController class], nil];
pageControlAppearance.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControlAppearance.currentPageIndicatorTintColor = [UIColor darkGrayColor];
【讨论】:
【参考方案2】:更新: 请参阅下面@Senseful 的答案。它比这个更受欢迎。
原答案:
我检查了您的项目,您看不到UIPageController
(点)的原因是它的默认颜色是白色,而UIPageViewController
的视图的超级视图是白色的。要解决此问题,您可以更改背景颜色或更改 UIPageController
的颜色。
要将背景颜色更改为非白色,请在-viewDidLoad:
中的FTAdviceViewController.m
中设置包含UIPageViewController
视图的视图的背景颜色。
-(void)viewDidLoad
[super viewDidLoad];
self.view.backgroundColor = [UIColor redColor];
...
要更改点的颜色,请在创建 UIPageViewController
后获取 UIPageViewController
的 UIPageControl
子视图。然后,您可以更改其 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];
【讨论】:
谢谢约瑟夫。我没想到它是白色的。考虑到 ios 7 默认是白色和蓝色调,他们为UIPageControl
选择白色真是太疯狂了。
我的荣幸 :) 当我第一次遇到它时,我也感到困惑。
谢谢,对我也有帮助。
天哪,我感觉有多笨?谢谢你,它为我节省了很多时间。【参考方案3】:
我用我在自己的 Swift 4 项目中使用的这个块回答了之前的 SO 问题。
override func viewDidLayoutSubviews()
super.viewDidLayoutSubviews()
for view in self.view.subviews
if view is UIPageControl
(view as! UIPageControl).currentPageIndicatorTintColor = .yellow
您在此块中有 UIPageControl,因此您可以随意自定义它。
【讨论】:
以上是关于UIPageViewController 中缺少页面指示的主要内容,如果未能解决你的问题,请参考以下文章
swift+UIPageViewController 纯代码实现引导页
如何设置 UIPageViewController(分页类型)手势委托
UIPageViewController:如何添加非分页工具栏或其他“覆盖”元素?