objectivec-NSButton在可可mac应用程序中顺时针旋转动画



我在目标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,以指示视图应该使用图层。

最新更新