我想用一個很好的緩動動畫(EaseOut)來調整NSWindow(主要的一個)的大小。用easing動畫調整NSWindows
我可以使用[NSWindow animator]
但我沒有帶發現了一種方法來添加寬鬆政策的效果。
你有一個想法或代碼示例,它可以幫助我做到這一點?
我想用一個很好的緩動動畫(EaseOut)來調整NSWindow(主要的一個)的大小。用easing動畫調整NSWindows
我可以使用[NSWindow animator]
但我沒有帶發現了一種方法來添加寬鬆政策的效果。
你有一個想法或代碼示例,它可以幫助我做到這一點?
選項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];
[[NSWindow animator] setAlphaValue:0.0];
不要忘了阿爾法值設置爲1.0,當你想再次顯示窗口。
這會隱藏窗口。另外,當通過'setHidden:YES'完成不透明動畫時,你應該隱藏它(真實的)。但這與窗口大小調整無關? – Jay 2016-02-10 16:48:10
嗨安妮,感謝您的解決方案,但您的解決方案我沒有良好的緩解效果,你有想法嗎? – kaal101 2011-06-03 10:11:28
使用'animate:YES'使它更加美觀和流暢。請說明你需要的_「良好的緩解效應」。 – Anne 2011-06-03 10:14:37
什麼我指的是*動畫起搏*您可以在此[文件]中看到的(http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Animation_Types_Timing/Articles/Timing.html ) – kaal101 2011-06-03 10:21:47