2011-02-02 28 views
16

Me gustaría saber cómo crear un control de iPhone personalizado desde cero, o utilizar una biblioteca o marco existente.Control personalizado iPhone/iOS

He visto la biblioteca three20, así como Tapku y las costumbres táctiles que son agradables para controles iOS especializados, como la vista de tabla, etc., pero estoy hablando de hacer controles totalmente personalizados e interactivos aquí.

Digamos que quería hacer un control de marcado similar al de esta aplicación: http://store.apple.com/us/product/H2654LL/A.

¿Dónde podría empezar?

  • ¿Debería la subclase UIView y personalizarla?
  • ¿Usaría cuarzo 2d?
  • ¿Usaría OpenGL ES para dibujar algo como esto en la pantalla?
  • ¿Puedo seguir utilizando IB para diseñar/diseñar mi vista personalizada?

Estoy un poco confundido qué camino tomar aquí.

Sí, esta pregunta se ha realizado y contestado algunas veces, pero aún no he encontrado una respuesta satisfactoria que aborde los puntos anteriores.

Respuesta

23

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.

1

También hay muy pocos controles personalizados en http://www.cocoacontrols.com/platforms/ios/controls. Son de código abierto, por lo tanto, puedes descargar la fuente y jugar con ellos.

+0

Y este es un buen tutorial http://www.thinkandbuild.it/how-to-build-a-custom-control-in-ios/ – MatterGoal

+0

https://www.cocoacontrols.com/controls/dwtaglist Funciona para mi. –

Cuestiones relacionadas