Comment puis-je changer la couleur de la pagination des points de UIPageControl?
Je développe une application dans laquelle je veux changer la couleur ou l'image de UIPageControl
la pagination des points. Comment puis-je le changer? Est-il possible de personnaliser UIpageControl
sur le scénario ci-dessus?
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR:
Cette réponse est de 6 ans et très désuet, mais c'est encore à attirer des votes et des commentaires. Depuis iOS 6.0, vous devriez être en utilisant la
pageIndicatorTintColor
etcurrentPageIndicatorTintColor
propriétés surUIPageControl
.RÉPONSE ORIGINALE À CETTE QUESTION:
J'ai rencontré ce problème aujourd'hui et a décidé d'écrire mon propre simple remplacement de la classe.
C'est un sublassed UIView qui utilise des Graphiques de Base pour rendre les points dans les couleurs que vous spécifiez.
Vous utilisez les propriétés exposées à personnaliser et contrôler.
Si vous le désirez, vous pouvez enregistrer un délégué de l'objet pour obtenir des notifications lorsque l'utilisateur appuie sur celui du petit page les points. Si aucun délégué est enregistré puis la vue ne va pas réagir à la touche entrée.
C'est complètement frais du four, mais semble fonctionner. Laissez-moi savoir si vous rencontrez le moindre problème avec elle.
Améliorations futures:
limites, si il y a trop d'.
Exemple d'utilisation:
Fichier d'en-tête:
Mise en œuvre de fichier:
Dans iOS 6, vous pouvez régler la teinte de la couleur de
UIPageControl
:Il y a 2 nouvelles propriétés:
pageIndicatorTintColor
currentPageIndicatorTintColor
Vous pouvez également utiliser l'apparence de l'API pour modifier la teinte de la couleur de tous les indicateurs de page.
Si vous utilisez iOS 5 assurez-vous qu'il ne tombe pas en panne:
fonctionne pour iOS6
Au cas où quelqu'un veut un ARC /version moderne de celui-ci (pas besoin de redéfinir les propriétés comme ivar, pas de dealloc, et fonctionne avec Interface Builder) :
Contrôle pagecontrol.m :
La réponse fournie par Heiberg fonctionne vraiment bien, cependant la page de contrôle ne se comporte pas exactement comme celui d'apple.
Si vous souhaitez que la page de contrôle de se comporter comme celui d'apple n'a (toujours incrément de la page en cours par un si vous touchez la seconde moitié, au contraire le diminuer par un), essayez cette touchesBegan-méthode:
Ajoutez le code suivant à DidFinishLauch dans AppDelegate,
Espère que cela aidera.
l'utiliser pour le codage
ou du storyboard, vous pouvez changer de page en cours teinte
Ajoutant les réponses existantes, il peut être fait comme,
Dans Swift, ce code à l'intérieur de la UIPageViewController est d'obtenir une référence à l'indicateur de page et définissant ses propriétés
UIPageControl
n'est pas le même queUIPageViewController
C'est facile avec Swift 1.2:
UIPageControl.appearanceWhenContainedInInstancesOfClasses([MyClassName.self])
au lieu deUIPageControl.appearance()
. Nécessite iOS 9.Vous pouvez le fixer avec la facilité en ajoutant le code suivant à votre appdelegate.m fichier dans votre
didFinishLaunchingWithOptions
méthode:C'est travaillé pour moi dans iOS 7.
Il n'est pas possible en utilisant le SDK de l'iPhone à partir d'un point de vue officiel. Vous pourriez être en mesure de le faire à l'aide de méthodes privées, mais qui sera un obstacle pour arriver sur l'app store.
La seule autre solution est de créer votre propre page de contrôle qui shpuldnt être trop difficile, étant donné que le contrôle de page affiche simplement ce que la page est affichée dans un rouleau de vue.
@Jasarien je pense que vous pouvez sous-classe UIPageControll, ligne choisi d'apple doc uniquement "sous-classes qui permettent de personnaliser l'apparence de la page de contrôle peut utiliser cette méthode pour redimensionner la page de contrôle lorsque le nombre de pages change" pour la méthode sizeForNumberOfPages:
Vous pouvez également utiliser Three20 Bibliothèque qui contient un styleable contrôle pagecontrol et des dizaines d'autres Contrôles de l'INTERFACE utilisateur et des Abstractions.
Dans tubé de
Swift 2.0
et jusqu', le code ci-dessous fonctionne:Ici est une Swift 3.0 solution ... vous savez si vous êtes OK avec l'acceptation du risque énoncé: "Modification de la sous-vues d'un contrôle existant est fragile".
Vous devrez appeler updateDots() dans votre viewDidAppear() et votre valueChanged gestionnaire pour le contrôle de page.