从UIPageViewController中删除页面指示器

7

我正在使用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的重复问题。 - ricardopereira
4个回答

43

当您的 UIPageViewController 数据源实现以下方法时,这些点将被添加:

presentationCountForPageViewController:
presentationIndexForPageViewController:
避免实现这些内容以摆脱UIPageControl的点。

3
当页面可以动态地增加或减少时,我使用了以下方法手动隐藏组件本身。
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
 }

2

只有当数据源实现以下方法时,页面控件才会显示:

presentationCount:
presentationIndex:

0
只要您实现了UIPageViewControllerDataSource的presentationCount和presentationIndex函数,它就会自动出现。但在我的情况下,它们来自服务器,所以我不知道会有多少个,我只想在只有一个时隐藏它们。
因此,只需在presentationCount中返回零即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接