gpt4 book ai didi

objective-c - objective-c : CGAffineTransformMakeRotation

转载 作者:行者123 更新时间:2023-12-03 21:39:37 27 4
gpt4 key购买 nike

我有一个图像,我想围绕一个固定点来回悬挂(一次)。所以我有以下代码:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
myDial.transform = CGAffineTransformMakeRotation(degreesToRadians(45)); //lineA
[UIView commitAnimations];

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
myDial.transform = CGAffineTransformMakeRotation(degreesToRadians(0 )); //lineB
[UIView commitAnimations];

当我运行上面的代码时,lineA 会立即执行(而不是在 1.5 秒内)。紧接着 lineB 在 1.5 秒内执行。我希望两个动画各花费 1.5 秒。我该怎么做

最佳答案

与其尝试将两个 UIView 动画放在一起来创建一个视觉动画,不如使用 Core Animation 并在一个动画中完成所有操作。使用 Core Animation,您可以告诉动画自动反转(在 1.5 秒内转到 45 度,然后在相同的持续时间内再次返回)并且您不必关心两个动画的时间。你可以这样做:

CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
[rotate setFromValue:[NSNumber numberWithFloat:0.0]];
[rotate setToValue:[NSNumber numberWithFloat:degreesToRadians(45)]];
[rotate setDuration:1.5];
[rotate setAutoreverses:YES]; // go back the same way
[rotate setTimingFunction:[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut]];

[[myDial layer] addAnimation:rotate forKey:@"dangleMyDial"];

如果您还没有将 QuartzCore.framework 导入到您的项目中并导入了 ,您需要导入 Core Animation 才能工作。

关于objective-c - objective-c : CGAffineTransformMakeRotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10810746/

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