2011-01-18 11 views
65

¿Es posible agregar un distintivo estándar a un estándar UIButton?¿Cómo puedo agregar una insignia 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 Ejemplo:

An iPhone UI button

+0

Para el registro ... Noviembre de 2013, el paquete más reciente soportado más nuevo parece ser: https://github.com/jessesquires/JSCustomBadge funciona perfectamente sin problemas. – Fattie

+0

Acabo de publicar ese comentario, me di cuenta de que JSCustomBadge parece funcionar en Xcode5, no en Xcode4. "CustomBadge" funciona perfectamente en Xcode4 https://github.com/ckteebe/CustomBadge TBC ambos parecen funcionar perfectamente en Xcode5. Espero que ayude a alguien. – Fattie

+1

Acabo de lanzar un CocoaPod escrito para Swift para iOS 8 que ofrece esta funcionalidad prácticamente de fábrica. Todavía es bastante temprano en el desarrollo, pero me encantaría escuchar algunos comentarios. Compruébelo en [https://github.com/johncosch/TIPBadgeManager](https://github.com/johncosch/TIPBadgeManager) –

Respuesta

77

es una clase muy agradable por aquí Sascha Paulus llamó al CustomBadge, que construye y presenta distintivos personalizados utilizando 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.

+7

También hay una cápsula de cacao para Custom Badge - http://cocoadocs.org/docsets/CustomBadge/2.0/Classes/CustomBadge.html –

1

No sé cómo se hace fuera de la caja y honestamente dudo que Apple construyó eso en el SDK.

De todos modos, podría crear una vista personalizada con un botón, agregar el fondo de la insignia como una 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 añadir tus cosas insignia como subvista

+4

No * UIButton de subclase de clase - no funciona bien, es decirusted solo tiene un método de clase de conveniencia para la construcción. Además, no es necesaria la vista de "contenedor" para el botón. – Eiko

1

me gustaría ir una manera similar a @ Björn Kaiser: Utilice el botón a su gusto y luego agregue una vista personalizada con esa insignia como una subvista: lo he hecho y funciona bien.

En cuanto a la vista, puede dibujarla como desee. Puede dibujar manualmente o utilizar CoreAnimation y dejar que se haga la parte principal, es decir theBadge.layer.cornerRadius = ...; para darle una forma redonda, dibujar el texto/número en drawRect: o añadirlo como una etiqueta, etc.

3

La clase que utiliza 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 está documentada.

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.

Cuestiones relacionadas