titlelabel settitle color buttons iphone cocoa-touch ios badge

iphone - settitle - ¿Cómo puedo agregar una insignia a un UIButton estándar?



swift button action (6)

¿Es posible agregar una insignia de aspecto estándar a un UIButton estándar?

Si no es compatible de forma semi-nativa, ¿cuál sería la forma más sencilla de lograr esto?

Imagen de ejemplo:


Aquí hay una clase MUY BONITA de Sascha Paulus llamada github.com/ckteebe/CustomBadge , que construye y presenta insignias personalizadas usando Core Graphics. Solo son subclases de UIView, por lo que puedes diseñarlas usando su marco como cualquier otra subclase de UIView.

He usado esta biblioteca muchas veces y siempre he estado satisfecho con los resultados. Flexible, fácil de usar. Totalmente lo recomiendo.


La clase que usa Apple es _UIBadgeView ( https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h ), pero por supuesto, esta clase es privada (tenga en cuenta el guión bajo) y no documentado.

Aquí hay otra clase que implementa esta vista con el mismo aspecto que la de Apple y también le permite personalizarla: https://github.com/JaviSoto/JSBadgeView . Lo bueno de esto es que te permite posicionar la insignia relativa a otra vista automáticamente, en una de sus esquinas.


Me gustaría ir de una manera similar a @ Björn Kaiser: use el botón como lo desee y luego agregue una vista personalizada con esa insignia como una subvista: lo hice y funciona bien.

En cuanto a la vista, puedes dibujarla como quieras. Puede dibujarlo manualmente o usar CoreAnimation y dejar que sea la parte principal, es decir, theBadge.layer.cornerRadius = ...; para darle una forma redonda, dibuja el texto / número en drawRect: o drawRect: como una etiqueta, etc.


No sé cómo se hace esto de manera inmediata y honestamente dudo que Apple lo haya incorporado al SDK.

De todos modos, podría crear una vista personalizada con un botón, agregar el fondo de la insignia como UIImageView y colocar una etiqueta en ella para mantener el recuento de la insignia.

Esa es una solución rápida, podría ser mejor crear una subclase personalizada de UIButton y agregar sus elementos de insignia como una subvista



Tenemos una vista de insignia en Nimbus que es súper fácil de usar y está bien documentada:

NimbusBadge