NSButton在cocoa mac应用程序中顺时针旋转动画

时间:2015-06-24 13:06:33

标签: objective-c macos cocoa animation nsbutton

我在目标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];

我搜索了很多,但无法为此找到合适的解决方案。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

在制作动画之前添加[btnScan setWantsLayer:YES];。 NSView与UIView不同,默认情况下没有后备层。

来自Apple Docs

  

在iOS应用中,始终启用Core Animation并支持每个视图   一层。在OS X中,应用必须明确启用Core Animation   通过执行以下操作获得支持:

     
      
  • 与QuartzCore框架的链接。 (iOS应用必须仅在明确使用Core Animation接口时才链接此框架。)

  •   
  • 通过执行以下操作之一,为一个或多个NSView对象启用图层支持:

         
        
    • 在您的nib文件中,使用View Effects检查器为您的视图启用图层支持。检查员显示的复选框   选定的视图及其子视图。建议您启用   尽可能在窗口的内容视图中支持图层。

    •   
    • 对于以编程方式创建的视图,调用视图的setWantsLayer:方法并传递值YES以指示   视图应该使用图层。

    •   
  •