在我的画布控制器中,我设置了一个基本的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];
然后,当我为路径设置动画时,在动画的最后几帧中,当形状变为矩形时会出现奇怪的毛刺/闪烁,而在前几帧中,当动画远离矩形时,会出现奇怪的毛刺/闪烁.动画设置如下:
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];
我尝试了很多不同的东西,比如锁定/解锁CATransaction,玩各种填充模式等等……
这是故障的图像:
http://www.postfl.com/outgoing/renderingglitch.png
可以在此处找到我正在体验的视频:
http://vimeo.com/37720876
基本上它试图在两条路径之间进行插值.当目标路径和起始路径具有不同数量的控制点时,它会遇到麻烦 – 曲线和直边会出现此问题.
您可以尝试通过将椭圆绘制为4条曲线而不是单个椭圆来最小化效果,但它仍然不太正确.我还没有找到一种从曲线到多边形顺利进行的方法.
你可能能够在那里获得大部分,然后转移到最后一部分的淡入淡出动画 – 但这看起来并不好看.
总结以上是内存溢出为你收集整理的ios – CAShapeLayer动画路径毛刺/闪烁(从椭圆到矩形和背面)全部内容,希望文章能够帮你解决ios – CAShapeLayer动画路径毛刺/闪烁(从椭圆到矩形和背面)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)