gpt4 book ai didi

quartz-graphics - 设置 CGAffineTransform 的起点

转载 作者:行者123 更新时间:2023-12-03 17:59:29 25 4
gpt4 key购买 nike

我正在使用跟随 CGPathAddEllipseInRect 的 CAKeyframeAnimation 沿圆为 UIView 设置动画。但是,无论最初定位在哪个框架中, View 似乎总是从同一个位置开始。有什么方法可以调整路径上 View 的起始位置?

谢谢!

CAKeyframeAnimation *myAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
myAnimation.fillMode = kCAFillModeForwards;
myAnimation.repeatCount = 5;
myAnimation.calculationMode = kCAAnimationPaced;
myAnimation.duration = 10.0;

CGMutablePathRef animationPath = CGPathCreateMutable();

CGPathAddEllipseInRect(animationPath, NULL, rect);

myAnimation.path = animationPath;
CGPathRelease(animationPath);

[view.layer addAnimation:myAnimation forKey:@"changeViewLocation"];

最佳答案

我认为不可能为 CGPathAddEllipseInRect 设置起点。 (至少我没有成功)

而不是使用: CGPathAddEllipseInRect ,
您应该使用: CGPathAddArc! 例如:

CAKeyframeAnimation *myAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
myAnimation.fillMode = kCAFillModeForwards;
myAnimation.repeatCount = 5;
myAnimation.calculationMode = kCAAnimationPaced;
myAnimation.duration = 10.0;

CGMutablePathRef animationPath = CGPathCreateMutable();

NSInteger startVal = M_PI / 2;

//seventh value (end point) must be always 2*M_PI bigger for a full circle rotation
CCGPathAddArc(animationPath, NULL, 100, 100, 100, startVal, startVal + 2*M_PI, NO);

myAnimation.path = animationPath;
CGPathRelease(animationPath);

[view.layer addAnimation:myAnimation forKey:@"changeViewLocation"];

将从底部开始旋转整圈 - 顺时针。更改 startVal 值以更改旋转开始位置。 (完整旋转为 2*M_PI)。

关于quartz-graphics - 设置 CGAffineTransform 的起点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4771676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com