我正在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元素。如何完全移除它们?
一旦UIPageViewController
数据源实现以下方法,就会添加点:
presentationCountForPageViewController:
presentationIndexForPageViewController:
避免实现那些去掉UIPageControl点的方法。
当页面可以动态增加或减少时。
所以我使用了下面的方法,它将手动隐藏组件本身。
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
}
只有当数据源实现以下方法时,才会显示页面控件:
presentationCount:
presentationIndex:
只要实现presentationCount和presentationIndex的UIPageViewControllerDataSource函数,它就会自动显示,但在我的情况下,它们来自服务器,所以我不知道会有多少,我只想隐藏它们(如果是一个)。
所以只要在presentationCount上返回零,你就是黄金。