我在我的项目中使用 NSStatusItem 并且我希望它在我的程序运行时进行动画处理。未选择项目时它工作正常。但是当我点击它时,图像冻结了。我试图通过计时器设置替代图像但没有结果。最新的想法是在我的 NSStatusItem 上绘制 NSView 但也没有结果。
- (void)startAnimating
{
currentFrame = 1;
animTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/15.0 target:self selector:@selector(updateImage:) userInfo:nil repeats:YES];
}
- (void)stopAnimating
{
[animTimer invalidate];
}
- (void)updateImage:(NSTimer*)timer
{
if (currentFrame == 13)
{
currentFrame = 1;
}
NSImage* image;
if ([window backingScaleFactor] == 1.0)
{
image = [NSImage imageNamed:[NSString stringWithFormat:@"App_18_gr_%d",currentFrame]];
NSRect rect = [[StatusItem view] frame];
[image drawInRect:[[StatusItem view] frame] fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
[image setTemplate:YES];
}
else
{
image = [NSImage imageNamed:[NSString stringWithFormat:@"App_36_gr_%d",currentFrame]];
[image drawInRect:[[StatusItem view] frame] fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
[image setTemplate:YES];
}
[StatusItem setImage:image];
currentFrame++;
}