HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – CAShapeLayer动画路径毛刺/闪烁(从椭圆到矩形和背面)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我创建一个显式动画来将CAShapeLayer的路径值从椭圆更改为矩形时,我遇到了一个问题.

在我的画布控制器中,我设置了一个基本的CAShapeLayer并将其添加到根视图的图层:

CAShapeLayer *aLayer;
aLayer = [CAShapeLayer layer];
aLayer.frame = CGRectMake(100,100,100);
aLayer.path = CGPathCreateWitHellipseInRect(aLayer.frame,nil);
aLayer.lineWidth = 10.0f;
aLayer.strokeColor = [UIColor blackColor].CGColor;
aLayer.fillColor = [UIColor clearColor].CGColor;
[self.view.layer addSublayer:aLayer];@H_301_5@ 
 

然后,当我为路径设置动画时,在动画的最后几帧中,当形状变为矩形时会出现奇怪的毛刺/闪烁,而在前几帧中,当动画远离矩形时,会出现奇怪的毛刺/闪烁.动画设置如下:

CGPathRef newPath = CGPathCreateWithRect(aLayer.frame,nil);
[CAtransaction lock];
[CAtransaction begin];
[CAtransaction setAnimationDuration:5.0f];
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"path"];
ba.autoreverses = YES;
ba.fillmode = kCAFillmodeForWARDs;
ba.repeatCount = HUGE_VALF;
ba.fromValue = (id)aLayer.path;
ba.toValue = (__bridge id)newPath;
[aLayer addAnimation:ba forKey:@"animatePath"];
[CAtransaction commit];
[CAtransaction unlock];@H_301_5@ 
 

我尝试了很多不同的东西,比如锁定/解锁CAtransaction,玩各种填充模式等等……

这是故障的图像:
http://www.postfl.com/outgoing/renderingglitch.png

可以在此处找到我正在体验的视频:
http://vimeo.com/37720876

解决方法

不幸的是,这是CAShapeLayers的其他令人敬畏的动画路径属性的限制.

基本上它试图在两条路径之间进行插值.当目标路径和起始路径具有不同数量的控制点时,它会遇到麻烦 – 曲线和直边会出现此问题.

您可以尝试通过将椭圆绘制为4条曲线而不是单个椭圆来最小化效果,但它仍然不太正确.我还没有找到一种从曲线到多边形顺利进行的方法.

你可能能够在那里获得大部分,然后转移到最后一部分的淡入淡出动画 – 但这看起来并不好看.

大佬总结

以上是大佬教程为你收集整理的ios – CAShapeLayer动画路径毛刺/闪烁(从椭圆到矩形和背面)全部内容,希望文章能够帮你解决ios – CAShapeLayer动画路径毛刺/闪烁(从椭圆到矩形和背面)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。