Tea*_*App 9 macos cocoa core-animation objective-c quartz-2d
我已经设法完成了这个旋转动画,并且可以在问题上找到描述代码.NSView中的NSImage旋转无效
在你继续之前,请投票给Duncan C的答案.因为我设法从他的回答中实现这一轮换.
我有这样的图像,

我想继续旋转此同步图标,在另一个线程上.现在我尝试使用Quartz编辑器并将动画添加到QCView,但它具有非常疯狂的效果,也非常慢.
如何以极低的处理费用连续旋转此图像?
我阅读了CoreAnimation,Quartz2D文档,但我找不到让它工作的方法.到目前为止我唯一知道的是,我必须使用
现在,我不期待代码,但使用伪代码的理解将是伟大的!
Dun*_*n C 15
让物体旋转超过180度实际上有点棘手.问题是您为结束旋转指定了变换矩阵,系统决定向另一个方向旋转.
我所做的是创建一个小于180度的CABasicAnimation,设置为加法,并重复计数.动画中的每个步骤都会为对象设置更多动画.
以下代码取自iOS应用程序,但该技术在Mac OS中是相同的.
CABasicAnimation* rotate = [CABasicAnimation animationWithKeyPath: @"transform.rotation.z"];
rotate.removedOnCompletion = FALSE;
rotate.fillMode = kCAFillModeForwards;
//Do a series of 5 quarter turns for a total of a 1.25 turns
//(2PI is a full turn, so pi/2 is a quarter turn)
[rotate setToValue: [NSNumber numberWithFloat: -M_PI / 2]];
rotate.repeatCount = 11;
rotate.duration = duration/2;
rotate.beginTime = start;
rotate.cumulative = TRUE;
rotate.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
Run Code Online (Sandbox Code Playgroud)
CAAnimation对象在图层上运行,因此对于Mac OS,您需要在界面构建器中设置"想要图层"属性,然后将动画添加到视图的图层.
要使视图永远旋转,您需要将重复次数设置为一些非常大的数字,例如1e100.
创建动画后,您可以使用以下代码将其添加到视图的图层:
[myView.layer addAnimation: rotate forKey: @"rotateAnimation"];
Run Code Online (Sandbox Code Playgroud)
这就是它的全部内容.
| 归档时间: |
|
| 查看次数: |
4656 次 |
| 最近记录: |