2011-06-03 25 views
13

我想用一個很好的緩動動畫(EaseOut)來調整NSWindow(主要的一個)的大小。用easing動畫調整NSWindows

我可以使用[NSWindow animator]但我沒有帶發現了一種方法來添加寬鬆政策的效果。

你有一個想法或代碼示例,它可以幫助我做到這一點?

回答

30

選項1

float Y = 100; 
float X = 200; 

NSRect frame = [window frame]; 

frame.origin.y -= Y; 
frame.size.height += Y; 
frame.size.width += X; 

[window setFrame:frame display:YES animate:YES]; 

選項2

float Y = 100; 
float X = 200; 

NSRect frame = [window frame]; 

frame.origin.y -= Y; 
frame.size.height += Y; 
frame.size.width += X; 

NSDictionary *windowResize = @{ 
    NSViewAnimationTargetKey: window, 
    NSViewAnimationEndFrameKey: [NSValue valueWithRect:frame] 
}; 
NSDictionary *oldFadeOut = @{ 
    NSViewAnimationTargetKey: nil, 
    NSViewAnimationEffectKey: NSViewAnimationFadeOutEffect 
}; 
NSDictionary *newFadeIn = @{ 
    NSViewAnimationTargetKey: nil, 
    NSViewAnimationEffectKey: NSViewAnimationFadeInEffect 
}; 

NSArray *animations = @[arrayWithObjects:windowResize, newFadeIn, oldFadeOut]; 
NSViewAnimation *animation = [[NSViewAnimation alloc] initWithViewAnimations: animations]; 

[animation setAnimationBlockingMode: NSAnimationBlocking]; 
[animation setAnimationCurve: NSAnimationEaseIn]; 
[animation setDuration: 2];  
[animation startAnimation]; 
+0

嗨安妮,感謝您的解決方案,但您的解決方案我沒有良好的緩解效果,你有想法嗎? – kaal101 2011-06-03 10:11:28

+0

使用'animate:YES'使它更加美觀和流暢。請說明你需要的_「良好的緩解效應」。 – Anne 2011-06-03 10:14:37

+0

什麼我指的是*動畫起搏*您可以在此[文件]中看到的(http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Animation_Types_Timing/Articles/Timing.html ) – kaal101 2011-06-03 10:21:47

-4
[[NSWindow animator] setAlphaValue:0.0]; 

不要忘了阿爾法值設置爲1.0,當你想再次顯示窗口。

+2

這會隱藏窗口。另外,當通過'setHidden:YES'完成不透明動畫時,你應該隱藏它(真實的)。但這與窗口大小調整無關? – Jay 2016-02-10 16:48:10