2012-09-10 6 views
8

Con Cocoa Touch en Objective-C, estoy buscando la forma óptima de dibujar una imagen de destino (es decir, círculos dentro de círculos, lo suficientemente simple) y luego grabo el toque del usuario en el imagen, (potencialmente como una marca x o +), y más importante aún, en la memoria para volver a dibujar más tarde.Dibuje la imagen de destino con Cocoa Touch

Voy a utilizar una lupa para cuando el usuario mantenga el dedo hacia abajo durante períodos prolongados para permitir un posicionamiento más preciso, que he aprendido leyendo y experimentando con el artículo y la fuente CoffeeShopped.

Respuesta

1

crear una subclase de UIView e implementar drawRect

- (void)drawRect:(CGRect)rect { 
    CGRect circleRect = self.bounds; 

    CGFloat circleWidth = circleRect.size.width/5.0; 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]); 
    CGContextFillEllipseInRect(context, circleRect); 

    circleRect = CGRectInset(circleRect, circleWidth, circleWidth); 
    CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]); 
    CGContextFillEllipseInRect(context, circleRect);   

    circleRect = CGRectInset(circleRect, circleWidth, circleWidth); 
    CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]); 
    CGContextFillEllipseInRect(context, circleRect); 
} 

dibujará

enter image description here

Se debe ajustar estás backgoundColor vistas a [UIColor clearColor] para que sea no negro alrededor de los bordes.

También podría modificar esto en un bucle, pero ese es el código de ejemplo más simple que puedo mostrar.

Nota: no he reutilizado los colores, por simplicidad de código de arco/nonarc

-1

Si desea volver a utilizar esa imagen y vuelve a dibujar (por ejemplo - cuando el usuario lo toque) se debe almacenar en caché que dibujo como imagen.

1) Dibuje su objetivo (como se menciona más adelante)
2) Crear una imagen del contexto actual

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

3) Guardar la imagen y la próxima vez que vuelva a usar

- (void)drawRect:(CGRect)rect { 
    if(image == nil) { 
     image = [self drawTargetImage]; //use code that mentioned below to create image 
    } 
    [image drawAtPoint:CGPointMake(10, 10)]; 
} 
Cuestiones relacionadas