Qué subclase En lugar de UIView
Es probable que desee a la subclase UIControl
. Esta clase tiene funcionalidad para la creación del patrón Objetivo/Acción en la que puede usar para responder a las acciones generadas por su control personalizado. La mayoría de los elementos en UIKit como botones y controles deslizantes heredan de UIControl
por este motivo específico.
Visualizar su subclase Dibujar realmente depende de lo que quiere lograr y qué partes desea animar. Puedes usar imágenes, dibujar usando cuarzo u OpenGL dependiendo de lo que necesites o lo que prefieras. Simplemente use la técnica para lograr el efecto deseado de la manera más simple. Se pueden usar múltiples imágenes para manejar diferentes estados (presionadas, etc.) o para una animación de sprites. Los CALayers son agradables para girar o moverse fácilmente.
Independientemente de la tecnología que utilice, probablemente utilice los eventos táctiles entrantes para controlar la animación. En el caso de un control de marcación, controlaría la cantidad de rotación en función del movimiento de la coordenada y, por ejemplo.
Para ilustrar: Yo, por ejemplo, he usado imágenes si mi control solo necesitaba cambiar cuando se lo presiona, por ejemplo: simplemente cambie las imágenes. También me gusta usar CALayer
, lo que te da formas sencillas de generar bordes, máscaras, degradados y un radio de esquina, todo animado también.
Uso en el generador de interfaz Con Cocoa en el escritorio, fue posible crear paletas IB personalizadas para controles personalizados. iOS nunca tuvo esta funcionalidad y no creo que los complementos de IB estén disponibles para Xcode 4.
Así que la única forma de manejar las subclases personalizadas actualmente es usando un UIView
en IB y configurando el campo 'Clase personalizada' en Identity Inspector al nombre de su clase personalizada. De esta manera tienes una vista que puedes diseñar y tamaño.En Interface Builder es solo un rectángulo, cuando ejecuta su aplicación, el XIB realmente deserializará esa vista a su clase personalizada.
Al usar un UIControl
obtienes los mecanismos de objetivo/acción de forma gratuita. Así que puede conectar sus eventos táctiles a cualquier objeto en IB al igual que con cualquier otro control UIKit estándar.
Una cosa a tener en cuenta: si tiene selectores personalizados - initWith....:
, no se llamarán. Su clase está deserializada del XIB, por lo que debe usar - initWithCoder:(NSCoder *)aDecoder;
como inicialización.
Y este es un buen tutorial http://www.thinkandbuild.it/how-to-build-a-custom-control-in-ios/ – MatterGoal
https://www.cocoacontrols.com/controls/dwtaglist Funciona para mi. –