나는 원형 라인을 표시 EFCircularSlider를 사용하고 사용자는 다음과 같이 핸들러를 이동합니다 : 내가 애니메이션 동작에 빨간 선 표시를 제외한 모든 사용자의 요구 사항을 완료 한CGContext가 루프에서 그리지 않는 이유는 무엇입니까?
. 나는 내 코드를 많이 바꿀 수 없다. 나는이 원호 선을 점차적으로 그리려하고있다. 애니메이션을 사용하는 대신 CGContext를 사용하고 루프에 원을 표시하는 데 사용하고 있습니다. 그러나 루프의 끝에서 이미지를 그립니다. 나는 그것을 아래로 추적 가지고 만든 확인 루프는 다음과 같이 제대로 불리는지고 :
내가 메소드를 호출하고 있습니다 :
int tmp = self.angleFromNorth;
while (tmp<360) {
NSLog(@"tmp == %d",tmp);
tmp+=10;
[NSThread sleepForTimeInterval: 0.1];
[EFCircularTrig drawUnfilledArcInContext:ctx
center:self.centerPoint
radius:self.radius
lineWidth:self.lineWidth
fromAngleFromNorth:self.angleFromNorth
toAngleFromNorth:tmp];
[self setNeedsDisplay];
}
을 그리고 그것은 루프가 종료 된 후에 만 제대로 라인을 인쇄 만합니다. 모든 값을 인쇄하면 선이 표시됩니다. 하지만 애니메이션과 비슷하게 만들고 싶습니다.
+(void) drawUnfilledArcInContext:(CGContextRef)ctx
center:(CGPoint)center
radius:(CGFloat)radius
lineWidth:(CGFloat)lineWidth
fromAngleFromNorth:(CGFloat)fromAngleFromNorth
toAngleFromNorth:(CGFloat)toAngleFromNorth
{
float cartesianFromAngle = CompassToCartesian(ToRad(fromAngleFromNorth));
float cartesianToAngle = CompassToCartesian(ToRad(toAngleFromNorth));
CGContextAddArc(ctx,
center.x, // arc start point x
center.y, // arc start point y
radius, // arc radius from center
cartesianFromAngle, cartesianToAngle,
0); // iOS flips the y coordinate so anti-clockwise (specified here by 0) becomes clockwise (desired)!
CGContextSetLineWidth(ctx, lineWidth);
CGContextSetLineCap(ctx, kCGLineCapButt);
CGContextSetShadowWithColor(ctx, CGSizeMake(0,0), 1, [UIColor colorWithRed:(0/255.0) green:(173/255.0) blue:(238/255.0) alpha:1.0].CGColor);
CGContextDrawPath(ctx, kCGPathStroke);
NSLog(@"HERE");
}
출력 :
2016-09-06 22:52:48.950 EFCircularSlider[38301:288182] tmp == 22
2016-09-06 22:52:49.056 EFCircularSlider[38301:288182] HERE
2016-09-06 22:52:49.056 EFCircularSlider[38301:288182] tmp == 32
2016-09-06 22:52:49.161 EFCircularSlider[38301:288182] HERE
2016-09-06 22:52:49.162 EFCircularSlider[38301:288182] tmp == 42
2016-09-06 22:52:49.265 EFCircularSlider[38301:288182] HERE
2016-09-06 22:52:49.266 EFCircularSlider[38301:288182] tmp == 52
2016-09-06 22:52:49.371 EFCircularSlider[38301:288182] HERE
2016-09-06 22:52:49.372 EFCircularSlider[38301:288182] tmp == 62
2016-09-06 22:52:49.475 EFCircularSlider[38301:288182] HERE
2016-09-06 22:52:49.475 EFCircularSlider[38301:288182] tmp == 72
2016-09-06 22:52:49.580 EFCircularSlider[38301:288182] HERE
그러나 루프가 완료되면 도면이 표시됩니다. 나는 그것을 서서히 나타나게하고 싶다. 누구든지 여기에 exprience를 추가 할 수 있다면 고맙겠습니다.
은 또한 추가 :