从 UIPageViewController 中移除页面指示器
Posted
技术标签:
【中文标题】从 UIPageViewController 中移除页面指示器【英文标题】:Remove the page indicator from UIPageViewController 【发布时间】:2014-08-27 18:26:13 【问题描述】:我在 ios 应用程序中使用页面视图控制器。 如何从这个控制器中删除点?
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view.
self.dontShowChecked = NO;
self.imagesArray = @[ ..];
self.textsArray = @[ ........
];
// Create page view controller
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"WTPageController"];
self.pageViewController.dataSource = self;
WTDetailViewController *startingViewController = [self viewControllerAtIndex:0];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
// Change the size of page view controller
CGFloat delta = [[PSDeviceInfo sharedInstance] is_iPhone] ? 50. : 50;
self.pageViewController.view.frame = CGRectMake(0, 40., self.view.frame.size.width, self.view.frame.size.height - delta);
[self.view addSubview:_pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
这些点似乎会自动添加并干扰该区域中的其他 UI 元素。如何完全删除它们?
【问题讨论】:
Hide dots from UIPageViewController的可能重复 【参考方案1】:一旦您的 UIPageViewController
数据源实现以下方法,就会添加点:
presentationCountForPageViewController:
presentationIndexForPageViewController:
避免实现这些以摆脱 UIPageControl 点。
【讨论】:
【参考方案2】:当页面可以动态增加或减少。
所以我使用了下面的方法来手动隐藏组件本身。
func togglePageControl(pageCount: Int, threshold: Int = 1)
var hidden = true
if pageCount > threshold
hidden = false
for subView in self.view.subviews
if subView is UIScrollView
subView.frame = self.view.bounds
else if subView is UIPageControl
subView.isHidden = hidden
这应该是从
public func presentationCount(for pageViewController: UIPageViewController) -> Int
togglePageControl(pageCount: pages.count)
// or togglePageControl(pageCount: pages.count, threshold: 5)
return pages.count
【讨论】:
【参考方案3】:只有在数据源实现这些方法时才会显示页面控件:
presentationCount:
presentationIndex:
【讨论】:
【参考方案4】:只要你实现了presentationCount和presentationIndex的UIPageViewControllerDataSource函数,它就会自动出现,但在我的例子中,它们来自服务器,所以我不知道会有多少,我只想隐藏它们,如果它是一个。
因此,只需在presentationCount 上返回零,您就可以了。
【讨论】:
以上是关于从 UIPageViewController 中移除页面指示器的主要内容,如果未能解决你的问题,请参考以下文章
将删除滑动手势从 UIPageViewController 传递给 UITableView
IOS 如何从其子级访问 uipageviewcontroller?
如何将数据从 UIPageViewController 传递到它的“子视图”之一?
从 UIPageViewController 中删除之前添加的 viewController
从 Swift 3 中的 UIPageViewController 中删除黑边
从 UIPageViewController 模态显示 UINavigationController 会锁定 iOS 9