¿Cómo puedo agregar una insignia a un UIButton estándar? [cerrado]
-
12-10-2019 - |
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:
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:
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 ??p>
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.