cocoa - 使用缓动动画调整 NSWindows 大小

标签 cocoa core-animation nswindow

我正在尝试使用漂亮的缓动动画 (EaseOut) 来调整 NSWindow(主要窗口)的大小。

我可以使用[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: [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]; 

关于cocoa - 使用缓动动画调整 NSWindows 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6225398/

相关文章:

multithreading - 如何唤醒Mac中休眠的线程

cocoa - 绑定(bind)自定义NSView : Does it demand creating an IBPlugin?

iphone - iOS - 如何执行 Clear 应用程序等视觉效果?

macos - 设置 NSWindow 的初始大小

objective-c - NSWindow 之外的 NSView

objective-c - CoreData自定义映射模型

objective-c - 将 NSPredicateEditor 添加到 NSScrollView 时出现 UI 故障

iphone - 核心动画警告 : "uncommitted CATransaction"

iphone - 如何在 iOS 中有效地使用图像制作动画

macos - MAC Cocoa - 以编程方式设置窗口大小