"drawRect"메서드에서 Paintcode (위대한 응용 프로그램, btw)로 만든 베 지어 곡선에 애니메이션을 적용하고 사용자 정의 UIView에서 그리기하고 있습니다.베지에 곡선 점 애니메이션하기
그림이 잘 작동하지만 베 지어 곡선에서 단일 점에 애니메이션을 적용하려고합니다.
가 여기 내 비 작동 방법입니다 :
-(void)animateFlame{
NSLog(@"Animating");
// Create the starting path. Your curved line.
//UIBezierPath * startPath;
// Create the end path. Your straight line.
//UIBezierPath * endPath = [self generateFlame];
//[endPath moveToPoint: CGPointMake(167.47, 214)];
int displacementX = (((int)arc4random()%50))-25;
int displacementY = (((int)arc4random()%30))-15;
NSLog(@"%i %i",displacementX,displacementY);
UIBezierPath* theBezierPath = [UIBezierPath bezierPath];
[theBezierPath moveToPoint: CGPointMake(167.47, 214)];
[theBezierPath addCurveToPoint: CGPointMake(181+displacementX, 100+displacementY) controlPoint1: CGPointMake(89.74, 214) controlPoint2: CGPointMake(192.78+displacementX, 76.52+displacementY)];
[theBezierPath addCurveToPoint: CGPointMake(167.47, 214) controlPoint1: CGPointMake(169.22+displacementX, 123.48+displacementY) controlPoint2: CGPointMake(245.2, 214)];
[theBezierPath closePath];
// Create the shape layer to display and animate the line.
CAShapeLayer * myLineShapeLayer = [[CAShapeLayer alloc] init];
CABasicAnimation * pathAnimation = [CABasicAnimation animationWithKeyPath:@"path"];
pathAnimation.fromValue = (__bridge id)[bezierPath CGPath];
pathAnimation.toValue = (__bridge id)[theBezierPath CGPath];
pathAnimation.duration = 0.39f;
[myLineShapeLayer addAnimation:pathAnimation forKey:@"pathAnimation"];
bezierPath = theBezierPath;
}
이 사용, 아무것도 모든 화면에 이동합니다. 생성 된 무작위 변위는 양호하며 bezierPath 변수는 클래스 범위로 선언 된 UIBezierPath입니다.
나는 뭔가를 놓친가요? (목표는 일종의 캔들 같은 애니메이션을하는 것입니다)
고마워요! 나는 그것을 얻을 수 없었고 애니메이션 블록과 CAShapeLayer를 사용하여 당신의 방법을 사용했다. (아무 일도 일어나지 않았고 여러 가지를 시도했다.) 내 마지막 해결책은 타이머를 사용하고 setNeedsDisplay를 호출하는 것이다. 나만의 애니메이션 관리. –
끝내서 다행 이네요. – Fogmeister