새로운 프로그래머가 단계별로 조치를 취하려고 여기에 있습니다. 현재 기기에서 터치 된 위치를 중심으로 원을 그리는 방법을 찾으려고합니다. 화면에 두 손가락, 각 손가락 아래 한 원.장치의 각 터치 위치 주변에 원을 그리려면 어떻게합니까?
현재 원터치 위치에 원을 그리는 작업 코드가 있지만 화면에 다른 손가락을 놓으면 원이 두 번째 터치 위치로 이동하여 첫 번째 터치 위치는 비워 둡니다. 3 등분을 추가하면 거기로 이동합니다.
이상적으로는 각 손가락마다 하나씩 최대 5 개의 활성 원을 가질 수 있기를 바랍니다.
다음은 현재 코드입니다.
@interface TapView()
@property (nonatomic) BOOL touched;
@property (nonatomic) CGPoint firstTouch;
@property (nonatomic) CGPoint secondTouch;
@property (nonatomic) int tapCount;
@end
@implementation TapView
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
NSArray *twoTouch = [touches allObjects];
if(touches.count == 1)
{
self.tapCount = 1;
UITouch *tOne = [twoTouch objectAtIndex:0];
self.firstTouch = [tOne locationInView:[tOne view]];
self.touched = YES;
[self setNeedsDisplay];
}
if(touches.count > 1 && touches.count < 3)
{
self.tapCount = 2;
UITouch *tTwo = [twoTouch objectAtIndex:1];
self.secondTouch = [tTwo locationInView:[tTwo view]];
[self setNeedsDisplay];
}
}
-(void)drawRect:(CGRect)rect
{
if(self.touched && self.tapCount == 1)
{
[self drawTouchCircle:self.firstTouch :self.secondTouch];
}
}
-(void)drawTouchCircle:(CGPoint)firstTouch :(CGPoint)secondTouch
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(ctx,0.1,0.1,0.1,1.0);
CGContextSetLineWidth(ctx,10);
CGContextAddArc(ctx,self.firstTouch.x,self.firstTouch.y,30,0.0,M_PI*2,YES);
CGContextStrokePath(ctx);
}
나는 setMultipleTouchEnabled:YES
이 appDelegate.m 내 didFinishLaunchingWithOptions
방법에 선언해야합니까.
나는 self.tapCount
에 따라 self.secondTouch.x
에 self.firstTouch.x
을 변경하지만 그 어떤 터치 위치에서 어떤 원으로 나를 떠나 전체를 깰 것 같다 drawTouchCircle
방법에 if 문을 사용하려고했습니다.
내 문제를 찾기 위해 엄청난 어려움을 겪고 있습니다. 아주 간단 할 수도 있습니다.
에
[circle stroke]
전화를 통해 나는'-drawRect'에서'circle '을 반복 할 때까지 여러분이 말한 것을 잘 처리 할 수있었습니다. 배열의 각 객체를 단계별로 실행 하시겠습니까? 그 일에 대해 어떻게 생각해? – BendE내'-drawRect'는 루프를 가지고 있습니다 : for (UIBezierPath * circle in _circles) {[circle stroke]; }'. 경계를 그리는 대신 원을 채우고 싶다면'[circle fill];을 할 수 있습니다. 위와 마찬가지로 Circle 데이터를 CGRect에 저장하고 Core Graphics 함수를 사용하여 그릴 수 있지만이 방법이 더 쉽다고 생각합니다. CGRect를 NSMutableArray에 넣을 수 없기 때문입니다. 이것은 Objective-C 객체가 아니라'typedef '이다. –