gpt4 book ai didi

cocoa - 在 NSStatusItem 中显示 NSProgressIndicatorSpinningStyle 然后隐藏它

转载 作者:行者123 更新时间:2023-12-03 16:44:30 26 4
gpt4 key购买 nike

我正在研究 NSStatusItem。我已经设法使用 setImage 和 setAlternateImage 来工作。当用户选择某项时,它需要一段时间才能完成正在做的事情。当它正在做某事时,我尝试将通常的图像更改为旋转器。我现在的做法是创建一个 View ,为其设置 NSProgressIndicator,然后使用

[statusItem setView: viewWithSpinner];

它似乎一直有效,直到我尝试将其删除并显示原始图像。我隐藏它的唯一方法就是这样做

[statusItem setView: nil];

但这破坏了一切,原始图像不会回来。我想是因为没有更多的风景了。在设置 viewWithSpinner 之前我似乎无法保存原始 View 。

有人可以告诉我实现这一目标的方法吗?

所以...

NSStatusItem *myStatusItem;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[myStatusItem setImage:statusImage];
[myStatusItem setHighlightMode:YES];
[myStatusItem setAlternateImage:statusImageSel];
[myStatusItem setMenu:myStatusMenu];
etc...
[self createSpinner];
}

-(void)createSpinner
{
//to overcome the white border problem

NSView *progressIndicatorHolder = [[NSView alloc] init];

NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] init];

[progressIndicator setBezeled: NO];
[progressIndicator setStyle: NSProgressIndicatorSpinningStyle];
[progressIndicator setControlSize: NSSmallControlSize];
[progressIndicator sizeToFit];
[progressIndicator setUsesThreadedAnimation:YES];

[progressIndicatorHolder addSubview:progressIndicator];

[progressIndicator startAnimation:self];

//for testing purposes
[[myStatusItem view] addSubview:progressIndicatorHolder];

spinnerView = progressIndicatorHolder;
}

最佳答案

我建议在设置为任何其他 View 之前使用 [statusItem view] 保存旧 View 。在返回正常菜单之前,使用 setView 方法将旧的保存 View 设置为 statusItem。

关于cocoa - 在 NSStatusItem 中显示 NSProgressIndicatorSpinningStyle 然后隐藏它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5063564/

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