我在目标c中有一个可可mac应用程序。
当我按下NSButton时,我想用动画顺时针旋转它几秒钟。
我尝试了以下代码,但没有工作。
CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
ani.fromValue = [NSNumber numberWithFloat:0];
ani.toValue = [NSNumber numberWithFloat:-M_PI*2];
[btnScan.layer setAnchorPoint:CGPointMake(0.5, 0.5)];
ani.duration = 2.0; // seconds
ani.repeatCount = HUGE_VAL;
[btnScan.layer addAnimation:ani forKey:nil];
我找了很多,但找不到合适的解决方案。
有人能帮我吗?
在制作动画之前添加[btnScan setWantsLayer:YES];
。NSView与UIView不同,默认情况下没有备份层。
来自Apple Docs:
在iOS应用程序中,始终启用核心动画,并支持每个视图通过一层。在OS X中,应用程序必须显式启用核心动画通过以下操作提供支持:
链接到QuartzCore框架。(只有当iOS应用程序明确使用核心动画接口时,它们才能链接到此框架。)
通过执行以下操作之一,为一个或多个NSView对象启用层支持:
在您的nib文件中,使用视图效果检查器为视图启用图层支持。检查器显示所选视图及其子视图。建议您启用尽可能在窗口的内容视图中提供层支持。
对于以编程方式创建的视图,调用视图的setWantsLayer:方法并传递一个值YES,以指示视图应该使用图层。