0

我使用 CAShapeLayer 蒙版为圆形进度条的绘制设置动画:

CGMutablePathRef path = CGPathCreateMutable();
CGPathAddArc(path, Nil, 99.65, 99.25, 84, radians(startAngle), radians(endAngle), 0);

CAShapeLayer *layer = [CAShapeLayer layer];
layer.path = path;
layer.strokeColor = [UIColor redColor].CGColor;
layer.lineWidth = 21;
layer.lineCap = kCALineCapRound;
layer.lineJoin = kCALineJoinRound;
layer.fillColor = [UIColor clearColor].CGColor;

_progressBar.layer.mask = layer;

// Configure animation
CABasicAnimation *drawAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
drawAnimation.duration            = ANIMATION_DURATION;
drawAnimation.repeatCount         = 1.0;
drawAnimation.removedOnCompletion = YES;
drawAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
drawAnimation.toValue   = [NSNumber numberWithFloat:1];
[layer addAnimation:drawAnimation forKey:@"drawCircleAnimation"];

动画效果很好,圆形进度条从空到满平滑。问题是当我在进度动画完成后从这个视图转换时。当下一个视图滑入时,或者此视图滑入以查看 segue 过渡动画时断断续续。

我已将问题缩小到掩码'_progressBar.layer.mask = layer;'。当我删除它时,过渡再次平滑。

在蒙版或图像层上设置 layer.shouldRasterize = YES 似乎没有帮助。

我不确定如何优化这一点,所以转场过渡很顺利。测试设备为 iPhone 4。

更新 在 iPhone 3GS 上测试:更流畅但不完美,绝对优于 4!在 iPhone 5 上测试:当然流畅,这款手机非常快。

iPhone 4 似乎有掩码操作问题如果有人知道解决方法很想听听。

4

0 回答 0