2012-09-10 14 views
8

Za pomocą kakao Touch w Objective-C, szukam optymalnego sposobu narysowania docelowego obrazu (np. Kółek w kółko, wystarczy), a następnie dotyk użytkownika nagrany na obraz, (potencjalnie jako znak x lub +), a co ważniejsze, w pamięci do późniejszego ponownego rysowania.Narysuj docelowy obraz za pomocą kakao Touch

Będę używać lupy, gdy użytkownik przytrzyma palec przez dłuższy czas, aby umożliwić bardziej precyzyjne pozycjonowanie, czego nauczyłem się czytając i eksperymentując z artykułem i źródłem CoffeeShopped.

Odpowiedz

1

utworzyć podklasę UIView i wdrożenie 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); 
} 

wyciągnie

enter image description here

Należy ustawić jesteś widoki backgoundColor do [UIColor clearColor] aby nie czarny na brzegach.

Można również zmienić to w pętlę, ale jest to najprostszy przykładowy kod, który mogę pokazać.

Uwaga: Nie byłem ponownie użyte kolory, dla uproszczenia kodu arc/nonarc

-1

Jeśli chcesz ponownie użyć tego obrazu i przerysować go (na przykład - gdy użytkownik jest dotykowy) należy buforować ten rysunek jako obraz.

1) Narysuj swój cel (jak wspomniano poniżej)
2) Tworzenie obrazu z bieżącego kontekstu

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

3) Zapisz ten obraz i następnym razem używać go

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