2012-09-10 23 views
8

Với Cocoa Touch trong Objective-C, tôi đang tìm cách tối ưu để vẽ hình ảnh mục tiêu, (tức là vòng tròn trong vòng tròn, đủ đơn giản), và sau đó có liên lạc của người dùng được ghi trên hình ảnh, (có khả năng là dấu x hoặc +), và quan trọng hơn, trong bộ nhớ để vẽ lại sau.Vẽ mục tiêu hình ảnh với Cocoa Touch

Tôi sẽ sử dụng kính lúp khi người dùng giữ ngón tay của họ trong thời gian dài để cho phép định vị chính xác hơn, mà tôi đã học được bằng cách đọc và thử nghiệm với bài viết và nguồn CoffeeShopped.

Trả lời

1

Tạo một lớp con của UIView và thực hiện 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); 
} 

sẽ vẽ

enter image description here

Bạn nên đặt bạn xem backgoundColor để [UIColor clearColor] để làm cho nó không đen xung quanh các cạnh.

Bạn cũng có thể tinh chỉnh điều này thành một vòng lặp nhưng đó là mã ví dụ đơn giản nhất mà tôi có thể hiển thị.

Lưu ý: Tôi đã không tái sử dụng màu sắc, vì đơn giản mã arc/nonarc

-1

Nếu bạn muốn sử dụng lại hình ảnh đó và vẽ lại nó (ví dụ - khi người dùng chạm vào nó), bạn nên nhớ cache mà vẽ như hình ảnh.

1) Vẽ mục tiêu của bạn (như đã đề cập bên dưới)
2) Tạo hình ảnh từ bối cảnh hiện nay

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

3) Lưu hình ảnh đó và lần sau tái sử dụng nó

- (void)drawRect:(CGRect)rect { 
    if(image == nil) { 
     image = [self drawTargetImage]; //use code that mentioned below to create image 
    } 
    [image drawAtPoint:CGPointMake(10, 10)]; 
} 
Các vấn đề liên quan