2010-02-14 22 views
1

在過去,我已經成功地使用以下代碼淡入NSWindow;NSWindow的動畫setContent

if (![statusWindow isVisible]) 
    { 
statusWindow.alphaValue = 0.0; 
[statusWindow.animator setAlphaValue:1.0]; 
    } 

CAAnimation *anim = [CABasicAnimation animation]; 
[anim setDelegate:self]; 
[statusWindow setAnimations:[NSDictionary dictionaryWithObject:anim forKey:@"alphaValue"]]; 
[statusWindow makeKeyAndOrderFront:self]; 

對於我目前的項目,我試圖做一個類似於Photo Booth的Flash。我創建了一個白色的NSPanel,並計劃將我的NSWindow的內容設置到面板上,並快速設置它。

是否可以使用良好的淡入淡出效果設置NSWindow的contentView?

P.S - 如果有更簡單的方法可以知道如何實現閃光,請告訴我!

在此先感謝, 瑞奇。

回答

1

爲什麼要使用另一個窗口?它看起來像你正在嘗試使用CoreAnimation,那麼爲什麼不只是添加一個白色的CALayer到你現有的視圖,併爲它的不透明度設置動畫呢?

+0

我想過,但我找不到添加圖層到NSWindow的方法? – Ricky 2010-02-14 09:02:38

+0

假設您的整個窗口正在使用CA,那麼您可以使用[myWindow contentView]獲取Windows內容視圖,然後將狀態圖層添加到該視圖。如果您正確設置了autoresizingMask,則可以使其自動保持與窗口相同的大小。 – 2010-02-14 14:57:41

+0

「但我找不到添加圖層到NSWindow的方法」 您在考慮錯誤。 把NSWindow看作是你的內容視圖和其他窗口的容器,把NSView作爲其他視圖和圖層的容器。 你永遠不會直接向窗口添加圖層,只能添加到該窗口的子視圖(無論是-contentView還是您自己的某個視圖),並且很少會實際交換NSWindow的-contentView。房子在基礎之上。有時你必須修復一兩個裂縫,但在房屋建成後你不能更換它。 – 2010-02-14 15:37:22