Come posso aggiungere un badge ad un UIButton norma? [chiuso]
-
12-10-2019 - |
Domanda
E 'possibile aggiungere un badge standard alla ricerca di un UIButton
norma?
Se non è supportato semi-nativamente, quale sarebbe il modo più semplice per raggiungere questo obiettivo?
immagine Esempio:
Soluzione
Ecco una classe VERY NICE da Sascha Paulus chiamato CustomBadge , che costruisce e rende badge personalizzati utilizzando core grafico . Sono solo sottoclassi UIView, in modo da poterli lay out usando la loro struttura come qualsiasi altro sottoclasse UIView.
Ho usato questo biblioteca molte volte ed è stato sempre soddisfatti dei risultati. Flessibile, facile da usare. Totalmente consiglio.
Altri suggerimenti
È possibile verificare la presenza di diverse opzioni qui: CocoaControls Badges
La classe che Apple usa è _UIBadgeView
( https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h ), ma naturalmente, questa classe è privato (la sottolineatura) e non documentate.
Ecco un'altra classe che implementa questa vista con lo stesso look and feel come Apple permettendo anche di personalizzare esso: https : //github.com/JaviSoto/JSBadgeView . La cosa grandiosa di questo è che consente di posizionare il distintivo rispetto ad un'altra vista automaticamente, in uno dei suoi angoli.
Abbiamo una visione distintivo di Nimbus che è super facile da usare e ben documentato:
Non so come si fa fuori dalla scatola e sinceramente dubbio che Apple costruito che nell'SDK.
In ogni caso, si potrebbe creare una vista personalizzata con un pulsante su di esso, aggiungere lo sfondo del badge come UIImageView e mettere un'etichetta su di esso per tenere il conteggio distintivo.
Questa è una soluzione rapida, potrebbe essere meglio per creare una sottoclasse personalizzata di UIButton
e aggiungere la tua roba distintivo come una visualizzazione secondaria
mi piacerebbe andare un modo simile a @ Björn Kaiser: Utilizzare il pulsante Come vi piace, e quindi aggiungere una visualizzazione personalizzata con quel distintivo come una visualizzazione secondaria ad essa - ho fatto e funziona bene
Per quanto riguarda la vista, è possibile disegnare come ti piace. È possibile disegnare manualmente o utilizzare Core Animation e lasciarlo fare la parte principale, vale a dire theBadge.layer.cornerRadius = ...;
per dargli una forma circolare, il testo / numero in drawRect:
o aggiungerlo come un'etichetta etc.