Добавление точек в нижней части экрана UIPageViewController

я реализовал методы источника данных UIPageViewController и все еще не получаю точки внизу моего приложения iOS. У кого-нибудь есть решение, чтобы точки появились в моем приложении?

6 ответов


при использовании UIPageViewController точки должны быть видны по умолчанию. Я думаю, у вас есть белый фон, и точки тоже белые, поэтому вы их просто не видите.

попробуйте изменить цвет точек:

Swift 2.2:

var appearance = UIPageControl.appearanceWhenContainedIn(UIPageViewController.self, nil)
appearance.pageIndicatorTintColor = UIColor.redColor()
appearance.currentPageIndicatorTintColor = UIColor.redColor()

Swift 3.0:

var appearance = UIPageControl.appearanceWhenContainedIn(UIPageViewController.self, nil)
appearance.pageIndicatorTintColor = UIColor.red
appearance.currentPageIndicatorTintColor = UIColor.red

если это не поможет, пожалуйста, убедитесь, что вы используете UIPageViewControllerTransitionStyleScroll стиль перехода.


для Swift 3.0, вам нужно:

private func setupPageControl() {
    let appearance = UIPageControl.appearance()
    appearance.pageIndicatorTintColor = UIColor.gray
    appearance.currentPageIndicatorTintColor = UIColor.white
    appearance.backgroundColor = UIColor.darkGray
}

func presentationCount(for pageViewController: UIPageViewController) -> Int {
    setupPageControl()
    return self.images.count
}

func presentationIndex(for pageViewController: UIPageViewController) -> Int {
    return 0
}

если кто-то все еще ищет этот вопрос, я нашел хороший учебник о добавлении точек страницы в ваш UIPageViewController. По крайней мере, у меня получилось.

http://www.seemuapps.com/page-view-controller-tutorial-with-page-dots

это соответствующая часть для этого вопроса:

убедитесь, что у вас есть соответствующий делегат и dataSource

import UIKit

class PageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource

чтобы добавить точечные указания страницы, добавьте pageControl как следует:

создать экземпляр UIPageControl.

var pageControl = UIPageControl()

теперь добавьте следующую функцию. Это позволит расположить элемент управления page в нижней части экрана. Текущая индикация страницы будет черной, а остальные индикаторы-белыми. Вы можете изменить их в соответствии с дизайном вашего приложения.

func configurePageControl() {
    pageControl = UIPageControl(frame: CGRect(x: 0,y: UIScreen.main.bounds.maxY - 50,width: UIScreen.main.bounds.width,height: 50))
    self.pageControl.numberOfPages = orderedViewControllers.count
    self.pageControl.currentPage = 0
    self.pageControl.alpha = 0.5
    self.pageControl.tintColor = UIColor.black
    self.pageControl.pageIndicatorTintColor = UIColor.white
    self.pageControl.currentPageIndicatorTintColor = UIColor.black
    self.view.addSubview(pageControl)
}

сейчас viewDidLoad() добавить эти две строчки:

self.delegate = self
configurePageControl()

и добавьте следующую функцию, это убеждается индикатор управлением страницы изменения на нужной странице по мере прокрутки.

// MARK: Delegate functions
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
    let pageContentViewController = pageViewController.viewControllers![0]
    self.pageControl.currentPage = orderedViewControllers.index(of: pageContentViewController)!
}

Swift 4 и Swift 4.1

private func changeIndicatorColor() {
    let appearance = UIPageControl.appearance(whenContainedInInstancesOf: [YourUIPageViewController.self])
    appearance.pageIndicatorTintColor = .lightGray
    appearance.currentPageIndicatorTintColor = .black
}

при использовании шаблона приложения на основе страницы в Xcode 7 при вставке в класс ModelController работает следующий код:

func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
    setupPageControl()
    return self.pageData.count
}

func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
    return 0
}

private func setupPageControl() {
    let appearance = UIPageControl.appearance()
    appearance.pageIndicatorTintColor = UIColor.grayColor()
    appearance.currentPageIndicatorTintColor = UIColor.whiteColor()
    appearance.backgroundColor = UIColor.darkGrayColor()
}

использовать presentationCountForPageViewController и presentationIndexForPageViewController методы источника данных затем показывают точки UIPageViewController,

swift код:

private func setupPageControl() {
        let appearance = UIPageControl.appearance()
        appearance.pageIndicatorTintColor = UIColor.grayColor()
        appearance.currentPageIndicatorTintColor = UIColor.whiteColor()
        appearance.backgroundColor = UIColor.darkGrayColor()
    }

func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int
  {
    setupPageControl()
    return self.arrimg.count
  }

  func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int
  {
    return 0
  }

код objective-C:

- (void) setupPageControl
{
    [[UIPageControl appearance] setPageIndicatorTintColor: [UIColor lightGrayColor]];
    [[UIPageControl appearance] setCurrentPageIndicatorTintColor: [UIColor blackColor]];
    [[UIPageControl appearance] setTintColor: [UIColor blackColor]];

}

- (NSInteger) presentationCountForPageViewController: (UIPageViewController *) pageViewController
{
    [self setupPageControl];
    return [arrimg count];
}

- (NSInteger) presentationIndexForPageViewController: (UIPageViewController *) pageViewController
{
    return 0;
}

его работа для меня, надеюсь, его полезно