2011-01-18 11 views
65

È possibile aggiungere un badge dall'aspetto standard a uno standard UIButton?Come posso aggiungere un badge a un UIButton standard?

Se non è supportato semi-nativamente, quale sarebbe il modo più semplice per raggiungere questo obiettivo?

immagine Esempio:

An iPhone UI button

+0

Per la cronaca .. Novembre 2013, il pacchetto più recente recentemente supportato sembra essere: https://github.com/jessesquires/JSCustomBadge funziona perfettamente senza problemi. – Fattie

+0

Avendo appena postato quel commento, mi sono reso conto che JSCustomBadge sembra funzionare in Xcode5, non in Xcode4. "CustomBadge" funziona perfettamente in Xcode4 https://github.com/ckteebe/CustomBadge TBC entrambi sembrano funzionare perfettamente in Xcode5. Spero che aiuti qualcuno. – Fattie

+1

Ho appena rilasciato un CocoaPod scritto in swift per iOS 8 che fornisce questa funzionalità praticamente fuori dalla scatola. È ancora in fase di sviluppo, ma mi piacerebbe sentire un feedback. Dai un'occhiata a [https://github.com/johncosch/TIPBadgeManager](https://github.com/johncosch/TIPBadgeManager) –

risposta

77

Ecco una classe MOLTO BELLA di Sascha Paulus ha chiamato CustomBadge, che costruisce e rende badge personalizzati utilizzando Core Graphics. Sono solo sottoclassi di UIView, quindi li disponi usando la loro cornice come qualsiasi altra sottoclasse di UIView.

Ho usato questa libreria molte volte e sono sempre stato soddisfatto dei risultati. Flessibile, facile da usare. Lo consiglio assolutamente

+7

C'è anche un pod di cacao per Badge personalizzato - http://cocoadocs.org/docsets/CustomBadge/2.0/Classes/CustomBadge.html –

1

non so come si fa fuori dalla scatola e sinceramente dubito che Apple costruito che nell'SDK.

In ogni caso, è possibile creare una vista personalizzata con un pulsante su di essa, aggiungere lo sfondo del badge come UIImageView e posizionare un'etichetta su di esso per contenere il numero di badge.

Questa è una soluzione rapida, potrebbe essere meglio per creare una sottoclasse personalizzata di UIButton e aggiungere la tua roba distintivo come una visualizzazione secondaria

+4

Do * not * sottoclasse UIButton - non funziona bene, ad es.hai solo un metodo di classe di convenienza per la costruzione. Inoltre, non è necessario per la visualizzazione "contenitore" per il pulsante. – Eiko

1

mi piacerebbe andare un modo simile a @ Björn Kaiser: Utilizzare il pulsante come ti piace esso, e quindi aggiungere una vista personalizzata con quel badge come sottosegnala ad esso - l'ho fatto e funziona bene.

Come per la vista, è possibile disegnarlo come volete. Puoi disegnarlo manualmente o usare CoreAnimation e lasciare che sia la parte principale, ad esempio theBadge.layer.cornerRadius = ...; per dargli una forma rotonda, disegnare il testo/numero in drawRect: o aggiungerlo come etichetta ecc.

2

abbiamo una visione distintivo di Nimbus che è super facile da usare e ben documentato:

NimbusBadge

3

La classe che Apple utilizza è _UIBadgeView (https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h), ma ovviamente questa classe è privata (notare il carattere di sottolineatura) e non documentata.

Ecco un'altra classe che implementa questa visualizzazione con lo stesso aspetto di Apple e che consente anche di personalizzarla: https://github.com/JaviSoto/JSBadgeView. La cosa grandiosa di questo è che ti permette di posizionare automaticamente il badge rispetto ad un'altra vista, in uno dei suoi angoli.

Problemi correlati