CALayer蒙版减慢iPhone 4的视图过渡

时间:2013-04-20 07:08:50

标签: iphone ios objective-c uikit core-animation

我使用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似乎没有帮助。

我不确定如何优化它,因此segue过渡是平滑的。测试设备是iPhone 4。

更新 在iPhone 3GS上测试:更顺畅但不完美,绝对优于4! 在iPhone 5上测试:平滑过程,这款手机非常快。

iPhone 4似乎在面具操作方面存在问题如果有人知道解决方法会喜欢听到它。

0 个答案:

没有答案