【问题标题】:Resize NSWindows with easing animation使用缓动动画调整 NSWindows 的大小
【发布时间】:2011-06-03 09:40:20
【问题描述】:

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

我可以使用[NSWindow animator],但我还没有找到添加缓动效果的方法。

您有什么想法或代码示例可以帮助我做到这一点吗?

【问题讨论】:

    标签: cocoa core-animation nswindow


    【解决方案1】:

    选项 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]; 
    

    【讨论】:

    • 嗨,安妮,感谢您的 sn-p,但使用您的解决方案,我没有很好的缓动效果,您有什么想法吗?
    • 使用animate:YES 使它变得漂亮和流畅。请说明您需要的“良好的缓动效果”
    • 我指的是 Animation Pacing,您可以在 documentation 中看到
    • 添加了使用 NSAnimationNSAnimationEaseIn 的工作 sn-p。
    • 这正是我想要的!我只是错过了[animation setAnimationCurve: NSAnimationEaseIn]; 部分。感谢您的帮助;)
    【解决方案2】:
    [[NSWindow animator] setAlphaValue:0.0];
    

    当您想再次显示窗口时,不要忘记将 alpha 值设置为 1.0。

    【讨论】:

    • 这将隐藏窗口。另外,当通过setHidden:YES 完成不透明动画时,您应该隐藏它(真实地)。但这与窗口大小调整完全无关??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2011-08-31
    • 1970-01-01
    相关资源
    最近更新 更多