NSWindow setAlpha 不生效

发布于 2024-11-08 23:37:04 字数 744 浏览 3 评论 0原文

我的应用程序有一个窗口,当它激活时,它的 alpha 从 0 到 1 进行动画处理,并在停用时将其 alpha 设置为 0,但我发现,如果我的应用程序仅激活很长时间,则停用时 alpha 不会设置为 0时间短(<1秒)。

因此,效果是窗口在消失之前快速闪烁到视图中,然后淡入。

这几乎就像它在停用时无法将其 alpha 设置为 0 一样,因为窗口在激活时从未完成将其动画设置为 1 的操作。

如何强制 alpha 为 0? - 在 applicationWillBecomeActive 开头将其设置为 0 不起作用......

代码如下:

- (void)applicationWillBecomeActive:(NSNotification *)aNotification {
    [NSAnimationContext beginGrouping];
    [[NSAnimationContext currentContext] setDuration:0.10]; 
    [[mainPanel animator] setAlphaValue:1.0f];
    [NSAnimationContext endGrouping];       
}

- (void)applicationWillResignActive:(NSNotification *)aNotification {
    [mainPanel setAlphaValue:0.0];
    [mainPanel orderOut:nil];   
}

my app has a window animating it's alpha from 0 to 1 when it becomes active and setting it's alpha to 0 on deactivate, but I'm finding that the alpha isn't set to 0 on deactivate if my app is only activated for a very short time (< 1 second).

So the effect is that the window just quickly blinks into view before disappearing and then fading in.

It's almost as if it doesn't get to set it's alpha to 0 on deactivate because the window never finished animating it to 1 when it was activated.

How can I force the alpha to 0? - Setting it to 0 at the beginning of applicationWillBecomeActive doesn't work....

Here's the code:

- (void)applicationWillBecomeActive:(NSNotification *)aNotification {
    [NSAnimationContext beginGrouping];
    [[NSAnimationContext currentContext] setDuration:0.10]; 
    [[mainPanel animator] setAlphaValue:1.0f];
    [NSAnimationContext endGrouping];       
}

- (void)applicationWillResignActive:(NSNotification *)aNotification {
    [mainPanel setAlphaValue:0.0];
    [mainPanel orderOut:nil];   
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文