HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 使用移动框架动画CAShapeLayer大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用核心动画层,我一直在尝试实现以下功能.在包含的超级层中,有两个锚层,另一个连接两个层.下图应该清楚说明情况.在左侧,两个橙色锚点标记“A”和“B”,绿线连接它们.使用虚线示出封闭层框架.在右边,层层次结构显示我当前实现它,其中锚点和连接都是封闭超层的子层.

现在,我要做的是让锚点四处移动,并保持连接的连接.我正在使用下面显示代码更新其框架和路径属性,利用连接层的-setFrame:方法

– (void)setFrame:(CGRect)frame {

CGSize size = frame.size;
CGPoint startPoint = CGPointZero;
if (size.height < 0.0) startPoint.y -= size.height;

CGPathRef oldPath = self.path;
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path,NULL,startPoint.x,startPoint.y);
CGPathAddLineToPoint(path,startPoint.x + size.width,startPoint.y + size.height);

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];
animation.duration = [CAtransaction animationDuration];
animation.timingFunction = [CAtransaction animationTimingFunction];
animation.fromValue = (id)oldPath;
animation.toValue = (id)path;
[self addAnimation:animation forKey:@"pathAnimation"];

self.path = path;
CGPathRelease(path);
[super setFrame:frame];

}

现在,这种工作,但问题是框架(或位置边界)动画不与路径动画同步运行,导致一些紧张的影响,连接的远端瞬间分离(和一些其他小问题,可能是由同一个核心问题引起的).

我一直在努力解决这个问题,但只是为了取得成功.有一次,我将连接的帧设置为等于封闭超层的帧,它确实具有所需的效果(因为现在帧不再需要动画).但是,我担心这个解决方案在具有多个连接的环境中的性能 – 即.多个非不透明,大尺寸重叠层似乎不好?

有人会有更好,更优雅的解决方案吗?谢谢!

解决方法

由于您只是实际拉伸(缩放)并旋转连接层,您是否虑过对其应用转换而不是手动修改框架?

您应该能够使用基于锚定层的位置的一些基本三角函数来计算旋转角度和缩放因子.

大佬总结

以上是大佬教程为你收集整理的ios – 使用移动框架动画CAShapeLayer全部内容,希望文章能够帮你解决ios – 使用移动框架动画CAShapeLayer所遇到的程序开发问题。

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

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