¿Identifica diferentes forms dibujadas usando UIBezierPath?

Soy capaz de dibujar forms usando el object UIBezierPath. Ahora quiero identificar diferentes forms dibujadas usando este, por ejemplo. Rectángulo, Cuadrado, Triángulo, Círculo, etc. Luego, lo siguiente que quiero hacer es que el usuario pueda seleccionar una forma particular y debería poder mover toda la forma a una location diferente en la pantalla. El requisito real es aún más complejo, pero si pudiera hacer esto, entonces podré calcular el rest.

Cualquier sugerencia o enlaces o puntos sobre cómo comenzar con esto es bienvenido. Estoy pensando en escribir una vista separada para manejar cada forma, pero no obtengo cómo hago eso …

Gracias a todos de antemano !!

Recomiendo la progtwigción de David Gelphman con cuarzo .

En su capítulo "Drawing with Paths" tiene una sección sobre "Path Construction Primitives" que ofrece una encrucijada:

Si usa CGContextAddLineToPoint su usuario podría hacer líneas rectas definidas por puntos cartesianos conocidos. Usaría las matemáticas básicas para deducir las forms geométricas definidas por esos puntos.

Si usa CGContextAddCurveToPoint su usuario podría definir líneas curvas definidas por puntos conocidos, y estoy bastante seguro de que esas líneas recorrerían los puntos, por lo que aún podría usar las matemáticas básicas para determinar al less una aproximación de los types de forms formadas.

Pero si usa CGContextAddQuadCurveToPoint , los puntos definen un marco fuera de la curva dibujada. Necesitarás matemáticas más avanzadas para determinar las forms formadas por las curvas a lo largo de las tangentes.

Gelphman también discute "Funciones de la Utilidad de ruta", como get un cuadro delimitador y verificar si un punto determinado está dentro de la ruta.

En cuanto a mover las routes completadas, creo que utilizarías CGContextTranslateCTM .