iOS Un moyen simple de créer des contrôleurs de vue de page horizontaux (pages infinies)


Exemple

  1. Créons un nouveau projet, je choisis l'application Single View pour une meilleure démonstration

entrer la description de l'image ici

  1. Faites glisser un contrôleur de vue de page sur le storyboard, il y a 2 choses à changer après cela:
    1. Définir le contrôleur de vue de page en tant que contrôleur de vue initial
    2. Changer le style de transition pour faire défiler

entrer la description de l'image ici

  1. Et vous devez créer une classe UIPageViewController, puis la définir comme classe personnalisée du contrôleur de vue de page sur le storyboard

  2. Collez ce code dans votre classe UIPageViewController, vous devriez obtenir une application paginée infinie colorée :)

    class PageViewController: UIPageViewController, UIPageViewControllerDataSource {
    
        override func viewDidLoad() {
            self.dataSource = self
            let controller = createViewController()
            self.setViewControllers([controller], direction: .forward, animated: false, completion: nil)
        }
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
            let controller = createViewController()
            return controller
        }
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
            let controller = createViewController()
            return controller
        }
    
        func createViewController() -> UIViewController {
            var randomColor: UIColor {
                return UIColor(hue: CGFloat(arc4random_uniform(360))/360, saturation: 0.5, brightness: 0.8, alpha: 1)
            }
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let controller = storyboard.instantiateViewController(withIdentifier: "View Controller")
            controller.view.backgroundColor = randomColor
            return controller
        }
    }
    

Voici à quoi ressemble le projet final: vous obtenez un contrôleur de vue de couleur différente avec chaque rouleau:

entrer la description de l'image ici