2013-03-04 1 views
0

사용자가 손가락으로 그림을 그리며 화면에 선을 그리는 여러 가지 방법을 모색 한 기념일 로고 앱을 만들고자합니다.iOS 화면 그리기 모범 사례

- (void)drawRect:(CGRect)rect // (5) 
{ 
    [[UIColor blackColor] setStroke]; 
    [path stroke]; 
} 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint p = [touch locationInView:self]; 
    [path moveToPoint:p]; 
} 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint p = [touch locationInView:self]; 
    [path addLineToPoint:p]; // (4) 
    [self setNeedsDisplay]; 
} 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self touchesMoved:touches withEvent:event]; 
} 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self touchesEnded:touches withEvent:event]; 
} 

에 : 나는 어디서나 코드를 본 적이

mouseSwiped = YES; UITouch * touch = [touches anyObject]; CGPoint currentPoint = [touch locationInView : self.view]; 지난 구현에

- (void) viewDidLoad{ 
UIPanGestureRecognizer* pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(drawImage:)]; 
[self.view addGestureRecognizer:pan]; 
pan.delegate = self; 
paths = [[NSMutableArray alloc]init]; 
} 
- (void) drawImage:(UIPanGestureRecognizer*)pan{ 
CGPoint point = [pan translationInView:self.view]; 

[paths addObject:[NSValue valueWithCGPoint:point]]; 
} 

UIGraphicsBeginImageContext(self.view.frame.size); 
[self.tempDrawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y); 
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), brush); 
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), red, green, blue, 1.0); 
CGContextSetBlendMode(UIGraphicsGetCurrentContext(),kCGBlendModeNormal); 

CGContextStrokePath(UIGraphicsGetCurrentContext()); 
self.tempDrawImage.image = UIGraphicsGetImageFromCurrentImageContext(); 
[self.tempDrawImage setAlpha:opacity]; 
UIGraphicsEndImageContext(); 

lastPoint = currentPoint; 

마지막 방법 (즉, 적어도 나에게 가장 적합한 하나의 내가 와서), I 사용자가 함께 드래그하는 포인트를 저장하는 것이며, 그리는대로 선을 그리십시오. 사용자가 앱과 상호 작용할 때 많은 추첨이 이루어지기 때문에 많은 오버 헤드가있는 집중적 인 일이라고 생각합니다.

내 질문은, 거기에 모범 사례/그리기를 가장 좋은 방법은 무엇입니까? Apple은 다른 방법보다 특별한 방법을 선호합니까? 그리고 각 방법마다 장점과 단점이 있습니까?

답변