用动画顺时针旋转NSButton

时间:2012-06-28 00:49:22

标签: objective-c macos cocoa nsbutton

我正在尝试顺时针旋转NSButton直到用户手动中断它。这是我用来完成这个的代码。我知道它曾经在某个时候起作用。知道怎么解决吗?提前谢谢!

 
    CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    a.fromValue = [NSNumber numberWithFloat:0];
    a.toValue = [NSNumber numberWithFloat:-M_PI*2];
    [self.reloadButton.layer setAnchorPoint:CGPointMake(0.5, 0.5)];
    a.duration = 2.0; // seconds
    a.repeatCount = HUGE_VAL;
    [self.reloadButton.layer addAnimation:a forKey:nil];
 

3 个答案:

答案 0 :(得分:0)

只要我设置reloadButton.wantsLayer = YES;

,您的代码就可以正常使用

来自Enabling Core Animation Support in Your App

在iOS应用中,Core Animation始终处于启用状态,每个视图都由一个图层支持。在OS X中,应用程序必须通过执行以下操作明确启用Core Animation支持:

  • 与QuartzCore框架的链接。 (iOS应用必须链接 这个框架只有在他们使用Core Animation接口的情况下 明确地说。)
  • 为一个或多个NSView对象启用图层支持

答案 1 :(得分:0)

试试这个

INSERT INTO price_hist 
( 
    date, 
    product_id, 
    price_min, 
    price_max, 
    price_avg,
    merchants 
) 
SELECT 
    '2015-07-10', 
    100388, 
    min(price),
    max(price),
    avg(price), 
    count(price) 
FROM prices
WHERE product_id = 100388
AND active = 1
HAVING count(price)

您可以方便地更改/设置持续时间,repeatCount和toValue。

答案 2 :(得分:-2)

<强> [EDIT1]

在看到这是针对NS与UI按钮之后,有几个选项:

1)为您的OSX版本使用NSTimer和正确的轮换程序(参见下面的链接)

http://digerati-illuminatus.blogspot.com/2009/09/how-do-you-rotate-nsbutton-nstextfield.html

2)如果您使用的是OSX 10.5或更高版本,则支持CoreAnimation,并且NSButtons实际上应支持以下内容。

Wiki链接

http://en.wikipedia.org/wiki/Core_Animation

<强> [原稿] 请尝试使用此代码:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:5000000];
CGAffineTransform rr=CGAffineTransformMakeRotation(5000000);
reloadButton.transform=CGAffineTransformConcat(reloadButton.transform, rr);
[UIView commitAnimations];

以下是显示两种方法的SO问题的链接

UIView Rotation