3
진행 막대의 기본 선 그리기 애니메이션을 구현했습니다. 선의 끝이 둥근 모서리가 있습니다. 선의 시작 부분에 선을 그릴 때 둥근 모 그것의 정사각형. 아래 코드는 내가 사용하고있는 코드는 무엇입니까?CAShapeLayer LineCap이 CABasic 애니메이션 끝 부분에 적합하지 않습니다.
CAShape 계층 코드 :
CAShapeLayer *lineLayer = [[CAShapeLayer alloc] init];
[lineLayer setFrame: CGRectMake(0,
0,
wifisyncView.popUpView.frame.size.width,
wifisyncView.popUpView.frame.size.height)];
[lineLayer setPath: [linePath CGPath]];
lineLayer.lineWidth = 9.0f;
lineLayer.strokeEnd = 9.0f;
lineLayer.fillColor = [[UIColor orangeColor] CGColor];
lineLayer.lineCap = kCALineCapRound;
[lineLayer setStrokeColor:[[UIColor orangeColor] CGColor]];
[lineLayer setMasksToBounds:YES];
lineLayer.cornerRadius = 30.0f;
CABASIC 애니메이션 코드 : 첨부
CABasicAnimation *drawAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
drawAnimation.duration = 5.0; // "animate over 5 seconds "
drawAnimation.repeatCount = 1.0; // Animate only once..
drawAnimation.removedOnCompletion = NO;// Remain stroked after the animation..
drawAnimation.fillMode = kCAFillModeForwards;
// Animate from no part of the stroke being drawn to the entire stroke being drawn
drawAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
drawAnimation.toValue = [NSNumber numberWithFloat:1.0f];
// Experiment with timing to get the appearence to look the way you want
drawAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
drawAnimation.delegate = self;
// Add the animation to the circle
[lineLayer addAnimation:drawAnimation forKey:@"drawLineAnimation"];
이미지 : 나는 당신의 코드에서 어떤 실수를 찾을 해달라고
내 위의 코드는 잘 작동에
을 변경하려고한다고 생각합니다. 그냥 내가 CAShapeLayer 생성하기 전에 UIBezierPath에 대한 Path 문을 닫았다는 것을 알아 냈습니다. [linePath closePath]가 삭제되었으며 모두 정상적으로 작동합니다. –
@ Karthik_S 업데이트 주셔서 감사합니다. – iCoder
전화하세요. 나는 경로가 "닫히는"것이 실제로 의미하는 것을 잊어 버렸기 때문에 단순한 라인 경로를 닫은 것과 같은 문제가있었습니다. 제 경우에는 처음으로 라인을 똑바로 그려서 애니메이션이 엉망이되었습니다. – LucasTizma