Pregunta

¿Es posible añadir una insignia mirando estándar a un UIButton estándar?

Si no está soportada semi-nativa, lo que sería la forma más sencilla de lograr esto?

Ejemplo imagen:

botón Un iPhone interfaz de usuario

¿Fue útil?

Solución

Esta es una clase muy agradable de Sascha Paulus llamada CustomBadge , que construye y hace insignias personalizadas utilizando núcleo de gráficos . Son sólo las subclases UIView, por lo que las ponen a cabo utilizando su marco al igual que cualquier otra subclase UIView.

He usado esta biblioteca muchas veces y siempre ha satisfecho con los resultados. Flexible, fácil de usar. Lo recomiendo totalmente.

Otros consejos

Se puede comprobar si hay varias opciones aquí: CocoaControls Pin

La clase que Apple utiliza es _UIBadgeView ( https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h ), pero por supuesto, esta clase es privado (el subrayado) y no documentada.

Aquí hay otra clase que implementa este punto de vista con el mismo aspecto y la sensación que las de Apple y al mismo tiempo que le permite personalizar él: https : //github.com/JaviSoto/JSBadgeView . La gran cosa acerca de esto es que le permite colocar la placa con relación a otra vista de forma automática, en una de sus esquinas.

Tenemos una visión insignia en Nimbus que es muy fácil de usar y bien documentado:

NimbusBadge

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

De todos modos, se podría crear una vista personalizada con un botón en él, añadir el fondo de la placa como UIImageView y colocar una etiqueta en él para mantener el recuento de placa.

Esto es una solución rápida, podría ser mejor crear una subclase personalizada de UIButton y añadir su insignia cosas como subvista

me gustaría ir una manera similar a @ Björn Kaiser: Utilice el botón como te gusta, y luego añadir una vista personalizada con esa placa como subvista a ella - lo he hecho y funciona bien

En cuanto a la vista, se puede dibujar como te gusta. 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top