2012-09-10 16 views
8

Con Cocoa Touch in Objective-C, sto cercando il modo ottimale per disegnare un'immagine di destinazione (cioè cerchi all'interno di cerchi, abbastanza semplice), e quindi avere il tocco dell'utente registrato sul immagine, (potenzialmente come un segno x o +) e, cosa più importante, in memoria per il successivo disegno.Disegna l'immagine di destinazione con Cocoa Touch

Utilizzerò una lente di ingrandimento quando l'utente tiene il dito premuto per periodi prolungati per consentire un posizionamento più preciso, che ho appreso leggendo e sperimentando l'articolo e la fonte CoffeeShopped.

risposta

1

creare una sottoclasse di UIView e attuare 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); 
} 

trarrà

enter image description here

si dovrebbe impostare sei viste backgoundColor a [UIColor clearColor] per renderlo non nero intorno ai bordi.

Si potrebbe anche modificare questo in un ciclo, ma questo è il codice di esempio più semplice che posso mostrare.

Nota: non ho riutilizzato i colori, per semplicità di codice dell'arco/nonarc

-1

Se si desidera riutilizzare l'immagine e ridisegnare esso (ad esempio - quando l'utente toccare) si dovrebbe memorizzare nella cache che disegno come Immagine.

1) Disegna la tua destinazione (come indicato di seguito)
2) Creare un'immagine dal contesto attuale

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

3) Salvare l'immagine e la prossima volta riutilizzarlo

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