Я пытаюсь создать простой круговой прогресс, прогресс работает, но с неправильным значением, круг завершается на 0,8 вместо 1, полукруг завершается на 0,4, я не нахожу ошибку:
NSLog(_pathLayer) печатает 0.1,0.2,...1.0, так что все в порядке.
- (void)drawRect:(CGRect)rect {
/* Cerchio rosso centrale */
UIBezierPath *circlePath = [UIBezierPath bezierPath];
[circlePath addArcWithCenter:CGPointMake(self.frame.size.width/2,self.frame.size.height/2)
radius:60
startAngle:degreesToRadians(-90)
endAngle:degreesToRadians(360)
clockwise:YES];
[self.layer addSublayer:[self disegnaLinea:circlePath
andWidth:_strokeWidth
andColor:_color
toEnd:0]];
}
- (void)setProgress:(double)progress {
if (progress != _progress)
{
_progress = progress;
[self updateAnimations];
NSLog(@"_pathLayer: %f",_pathLayer.strokeEnd);
}
}
- (CAShapeLayer *) disegnaLinea:(UIBezierPath *)path andWidth:(float)width andColor:(UIColor *)color toEnd:(int)end {
_pathLayer = [CAShapeLayer layer];
_pathLayer.frame = self.bounds;
_pathLayer.path = path.CGPath;
_pathLayer.strokeColor = [color CGColor];
_pathLayer.fillColor = nil;
_pathLayer.lineWidth = width;
[_pathLayer setStrokeStart:0];
[_pathLayer setStrokeEnd:end];
return _pathLayer;
}
- (void) updateAnimations {
[_pathLayer setStrokeEnd:_progress];
[_pathLayer didChangeValueForKey:@"endValue"];
[_progressLabel setText:[NSString stringWithFormat:@"%f",_progress]];
}