2011-01-18 3 views
65

Est-il possible d'ajouter un badge d'aspect standard à une norme UIButton?Comment puis-je ajouter un badge à un UIButton standard?

Si ce n'est pas pris en charge en mode semi-natif, quel serait le moyen le plus simple d'y parvenir?

Exemple d'image:

An iPhone UI button

+0

Pour l'enregistrement .. Novembre 2013, le dernier paquet le plus récent pris en charge semble être: https://github.com/jessesquires/JSCustomBadge cela fonctionne parfaitement sans problèmes. – Fattie

+0

Après avoir posté ce commentaire, j'ai réalisé que JSCustomBadge semble fonctionner dans Xcode5, pas Xcode4. "CustomBadge" fonctionne parfaitement dans Xcode4 https://github.com/ckteebe/CustomBadge TBC semblent tous deux fonctionner parfaitement dans Xcode5. J'espère que ça aide quelqu'un. – Fattie

+1

Je viens de sortir un CocoaPod écrit en swift pour iOS 8 qui fournit cette fonctionnalité à peine sorti de la boîte. Il est encore assez tôt dans le développement, mais j'aimerais entendre des commentaires. Vérifiez-le sur [https://github.com/johncosch/TIPBadgeManager](https://github.com/johncosch/TIPBadgeManager) –

Répondre

77

est ici une classe TRES AGREABLE par Sascha Paulus a appelé CustomBadge, qui construit et rend les badges personnalisés en utilisant Core Graphics. Ce ne sont que des sous-classes UIView, donc vous les disposez en utilisant leur cadre comme n'importe quelle autre sous-classe UIView.

J'ai utilisé cette bibliothèque plusieurs fois et j'ai toujours été satisfaite des résultats. Flexible, facile à utiliser. Je le recommande vivement.

+7

Il y a aussi une cosse de cacao pour Badge Personnalisé - http://cocoadocs.org/docsets/CustomBadge/2.0/Classes/CustomBadge.html –

1

Je ne sais pas comment cela se fait hors de la boîte et je doute sincèrement que Apple construit que dans le SDK.

De toute façon, vous pouvez créer une vue personnalisée avec un bouton, ajouter l'arrière-plan du badge comme UIImageView et y placer une étiquette pour contenir le nombre de badges.

C'est une solution rapide, il pourrait être préférable de créer une sous-classe personnalisée de UIButton et ajoutez vos trucs badge comme un sous-vue

+4

Ne pas * sous-classe * UIButton - cela ne fonctionne pas bien, c'est-à-direvous avez seulement une méthode de classe de commodité pour la construction. En outre, pas besoin de la vue "conteneur" pour le bouton. – Eiko

1

J'irais la même manière que @ Björn Kaiser: Utilisez le bouton que vous le souhaitez , puis ajoutez une vue personnalisée avec ce badge en tant que sous-vue - je l'ai fait et cela fonctionne bien. Comme pour la vue, vous pouvez dessiner comme vous le souhaitez. Vous pouvez dessiner manuellement ou utiliser CoreAnimation et laissez faire la partie principale, à savoir theBadge.layer.cornerRadius = ...; pour lui donner une forme ronde, dessiner le texte/numéro dans drawRect: ou l'ajouter comme une étiquette, etc.

3

La classe que Apple utilise est _UIBadgeView (https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h), mais bien sûr, cette classe est privée (notez le trait de soulignement) et non documentée.

Voici une autre classe qui implémente cette vue avec la même apparence que celle d'Apple tout en vous permettant de la personnaliser: https://github.com/JaviSoto/JSBadgeView. La grande chose à propos de celui-ci est qu'il vous permet de positionner le badge par rapport à une autre vue automatiquement, dans l'un de ses coins.

Questions connexes