2012-10-15 99 views
2

我有一個NSButton叫做_indicatorButton帶有一個PNG圖像(基本上是一個綠色LED指示燈,與帶有setImage的PNG設置:)沒有邊框和文本。我試圖讓它與下面的代碼「閃光」:用核心動畫眨眼NSButton

- (void)animateButton 
{ 
    NSLog(@"Animating…"); 
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
    [animation setFromValue:[NSNumber numberWithFloat:1.0]]; 
    [animation setToValue:[NSNumber numberWithFloat:0.0]]; 
    [animation setDuration:0.3f]; 
    [animation setTimingFunction:[CAMediaTimingFunction 
            functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [animation setAutoreverses:YES]; 
    [animation setRepeatCount:20000]; 

    [_indicatorButton.layer addAnimation:animation forKey:@"opacity"]; 
} 

......但沒有任何反應。該方法被調用並且XIB中的鏈接正常,因爲以編程方式更改按鈕上的圖像可以正常工作。

任何暗示爲什麼它不閃爍?

+0

什麼版本的OS X?你是否查看圖層支持? –

+0

@DavidRönnqvist山獅。 「支持」是什麼意思? – tamasgal

+0

您應該閱讀['wantsLayer'文檔](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/ occ/instm/NSView/setWantsLayer :) –

回答

3

爲了向後兼容,默認情況下,OS X上的視圖不使用Core Animation圖層作爲其後備存儲。沒有任何事情發生的原因可能是你的按鈕層是零。

你可以告訴你的觀點,它應該使用myView.wantsLayer = YES;分層支持。請閱讀the documentation for wantsLayer