gpt4 book ai didi

cocoa - 如何在确定的 NSProgressIndicator 上停止动画?

转载 作者:行者123 更新时间:2023-12-03 18:02:28 26 4
gpt4 key购买 nike

NSProgressIndicator 允许在 isInminated == YES 时使用 stopAnimation:,但是如何停止确定进度条的动画呢?

对于上下文,我尝试执行此操作的进度条是 NSView 的子级,它本身是 NSMenuItem 的 view 属性。向 setAnimationDelay: 发送高得离谱的数字可以满足我的要求,但只是暂时的——当父菜单关闭并重新打开时,进度条会再次呈现动画。

(可能是不必要的免责声明:我发誓这是一个合法的用例;我必须能够直观地(即:不使用文本)显示长时间运行的任务的进度,这可能会导致根据后端需要暂停并重新启动。归结为“UI 设计:你做得不好”的答案将不会被接受,除非附有出色的替代建议。;) )

最佳答案

子类 NSProgressIndicator 像这样,它也适用于 Lion:

@interface UnanimatedProgressIndicator : NSProgressIndicator {
@private
BOOL isAnimating;
}
@end

@interface NSProgressIndicator (HeartBeat)
- (void) heartBeat:(id)sender; // Apple internal method for the animation
@end

@implementation UnanimatedProgressIndicator

- (void) startAnimation:(id)sender
{
isAnimating = YES;
[super startAnimation:sender];
}

- (void) stopAnimation:(id)sender
{
isAnimating = NO;
[super stopAnimation:sender];
}

- (void) heartBeat:(id)sender
{
if (isAnimating)
[super heartBeat:sender];
}

@end

关于cocoa - 如何在确定的 NSProgressIndicator 上停止动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4947243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com