2

我在我的项目中使用 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++;
}
4

0 回答 0