【发布时间】:2011-06-03 09:40:20
【问题描述】:
我正在尝试使用漂亮的缓动动画 (EaseOut) 调整 NSWindow(主窗口)的大小。
我可以使用[NSWindow animator],但我还没有找到添加缓动效果的方法。
您有什么想法或代码示例可以帮助我做到这一点吗?
【问题讨论】:
标签: cocoa core-animation nswindow
我正在尝试使用漂亮的缓动动画 (EaseOut) 调整 NSWindow(主窗口)的大小。
我可以使用[NSWindow animator],但我还没有找到添加缓动效果的方法。
您有什么想法或代码示例可以帮助我做到这一点吗?
【问题讨论】:
标签: cocoa core-animation nswindow
选项 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: [NSNull null],
NSViewAnimationEffectKey: NSViewAnimationFadeOutEffect
};
NSDictionary *newFadeIn = @{
NSViewAnimationTargetKey: [NSNull null],
NSViewAnimationEffectKey: NSViewAnimationFadeInEffect
};
NSArray *animations = @[windowResize, newFadeIn, oldFadeOut];
NSViewAnimation *animation = [[NSViewAnimation alloc] initWithViewAnimations: animations];
[animation setAnimationBlockingMode: NSAnimationBlocking];
[animation setAnimationCurve: NSAnimationEaseIn];
[animation setDuration: 2];
[animation startAnimation];
【讨论】:
animate:YES 使它变得漂亮和流畅。请说明您需要的“良好的缓动效果”。
NSAnimation 和 NSAnimationEaseIn 的工作 sn-p。
[animation setAnimationCurve: NSAnimationEaseIn]; 部分。感谢您的帮助;)
[[NSWindow animator] setAlphaValue:0.0];
当您想再次显示窗口时,不要忘记将 alpha 值设置为 1.0。
【讨论】:
setHidden:YES 完成不透明动画时,您应该隐藏它(真实地)。但这与窗口大小调整完全无关??