J'ai implémenté les méthodes de source de données de UIPageViewController et je ne reçois toujours pas de points au bas de mon application iOS. Quelqu'un a-t-il une solution pour faire apparaître des points sur mon application?
Lorsque vous utilisez UIPageViewController
, les points doivent être visibles par défaut. Je suppose que vous avez un fond blanc et que les points sont également blancs, vous ne les voyez donc pas.
Essayez de changer la couleur des points:
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
Swift 4.0 :
var appearance = UIPageControl.appearance(whenContainedInInstancesOf: [UIPageViewController.self])
appearance.pageIndicatorTintColor = UIColor.red
appearance.currentPageIndicatorTintColor = UIColor.red
Si cela ne vous aide pas, assurez-vous d'utiliser le style de transition UIPageViewControllerTransitionStyleScroll
.
Veillez également à implémenter le délégué à partir des UIPageViewControllerDataSource
: presentationCount(for:)
et presentationIndex(for:)
.
Pour Swift 3.0, vous avez besoin de:
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
}
Si quelqu'un cherche encore ce genre de question, j'ai trouvé un bon tutoriel sur l'ajout des points de page à votre UIPageViewController
. Cela a fonctionné pour moi, au moins.
http://www.seemuapps.com/page-view-controller-tutorial-with-page-dots
Voici la partie pertinente de cette question:
Assurez-vous d'avoir le délégué et la source de données appropriés
import UIKit
class PageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource
Pour ajouter les indications de points de page, ajoutez un contrôle de page comme suit:
créer une instance de UIPageControl
.
var pageControl = UIPageControl()
Ajoutez maintenant la fonction suivante. Cela positionnera le contrôle de page au bas de l'écran. L'indication de la page en cours sera noire et le reste des indicateurs sera blanc. Vous pouvez les modifier pour les adapter à la conception de votre application.
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)
}
Maintenant, dans viewDidLoad()
, ajoutez ces deux lignes:
self.delegate = self
configurePageControl()
Et ajoutez la fonction suivante pour vous assurer que l'indicateur de contrôle de page passe à la page correcte lorsque vous faites défiler.
// 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)!
}
utilisez les méthodes de source de données presentationCountForPageViewController
et presentationIndexForPageViewController
puis affichez les points UIPageViewController,
Code rapide:
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
}
code objectif-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;
}
ça marche pour moi, j'espère que c'est utile
Swift 4 et Swift 4.1
private func changeIndicatorColor() {
let appearance = UIPageControl.appearance(whenContainedInInstancesOf: [YourUIPageViewController.self])
appearance.pageIndicatorTintColor = .lightGray
appearance.currentPageIndicatorTintColor = .black
}
Lors de l'utilisation du modèle d'application basée sur la page dans Xcode 7, le code suivant fonctionne lorsqu'il est inséré dans la classe 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()
}
Dans la classe UiViewPageViewController , vous pouvez lire:
// A page indicator will be visible if both methods are implemented, transition style is 'UIPageViewControllerTransitionStyleScroll', and navigation orientation is 'UIPageViewControllerNavigationOrientationHorizontal'.
// Both methods are called in response to a 'setViewControllers:...' call, but the presentation index is updated automatically in the case of gesture-driven navigation.
@available(iOS 6.0, *)
optional public func presentationCount(for pageViewController: UIPageViewController) -> Int // The number of items reflected in the page indicator.
@available(iOS 6.0, *)
optional public func presentationIndex(for pageViewController: UIPageViewController) -> Int // The selected item reflected in the page indicator.