0 Вопрос: Swift - PageControl перемещает представления UIPageViewController

вопрос создан в Wed, May 8, 2019 12:00 AM

В настоящее время я пытаюсь добавить индикатор страницы (PageControl) к своему UIPageViewController. Просматривая веб-страницы, я обнаружил, что, добавив presentationCount и presentationIndex, индикатор автоматически появится.

Чтобы изменить цвет, я попытался это сделать:

let color = UIColor(red: 24/255, green: 90/255, blue: 189/255, alpha: 1)

let appearance = UIPageControl.appearance(whenContainedInInstancesOf: [UIPageViewController.self])
appearance.pageIndicatorTintColor = UIColor.groupTableViewBackground
appearance.currentPageIndicatorTintColor = color

Все работает нормально, но каким-то образом вид перемещается выше индикаторов, и появляется черный фон за точками (возможно, потому что вид перемещается).


Полный код:

import UIKit

class LeasingTutorialViewController: UIPageViewController, UIPageViewControllerDataSource  {

    var pageControl = UIPageControl()
    var scrollView = UIScrollView()

    lazy var viewControllerList:[UIViewController] = {

        let sb = UIStoryboard(name: "Main", bundle: nil)

        let vc1 = sb.instantiateViewController(withIdentifier: "leasingPageOne")
        let vc2 = sb.instantiateViewController(withIdentifier: "leasingPageTwo")

        return [vc1, vc2]
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.dataSource = self
        changeIndicators()
        if let firstViewController = viewControllerList.first as? LeasingPageOneViewController {
            self.setViewControllers([firstViewController], direction: .forward, animated: true, completion: nil)
        }
    }

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

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

    func changeIndicators() {
        let color = UIColor(red: 24/255, green: 90/255, blue: 189/255, alpha: 1)

        let appearance = UIPageControl.appearance(whenContainedInInstancesOf: [UIPageViewController.self])
        appearance.pageIndicatorTintColor = UIColor.groupTableViewBackground
        appearance.currentPageIndicatorTintColor = color
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {

        guard let vcIndex = viewControllerList.firstIndex(of: viewController) else { return nil }

        let previousIndex = vcIndex - 1
        guard previousIndex >= 0 else { return nil }

        guard viewControllerList.count > previousIndex else { return nil }

        return viewControllerList[previousIndex]
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {

        guard let vcIndex = viewControllerList.firstIndex(of: viewController) else { return nil }

        let nextIndex = vcIndex + 1

        guard viewControllerList.count != nextIndex else { return nil }

        guard viewControllerList.count > nextIndex else { return nil }

        return viewControllerList[nextIndex]
    }
}
    
0
  1. По умолчанию pageControl ("точки") находится в нижней части pageView, растянутой на всю ширину, с черным фоном. Если вы хотите, чтобы он выглядел и /или располагался по-другому, вам нужно использовать отдельный pageControl. Вот один пример: spin.atomicobject.com/2016/02/11 /Move-uipageviewcontroller-точка
    2019-05-08 17: 44: 45Z
0 ответов                              0                         
источник размещен Вот