0

目前我有以下代码来更新 NSLevelindicator:

[self.headerIndicator selfFloatValue:heightValue]

有什么方法可以在值更新时为值之间的级别指示器设置动画?

4

4 回答 4

1

阅读动画滑块的这个答案。我没有尝试过使用级别指示器,但从 API 文档来看,这似乎是一个可行的选择。那里的源代码很容易适应:NSSlider 动画

于 2012-09-14T23:22:39.893 回答
1

我已经尝试过这段代码,它工作正常:

斯威夫特:self.CpuLevel.maxValue = Double(value)

于 2021-11-13T17:05:27.643 回答
0

如果[[[self.headerIndicator] animator] setFloatValue:heightValue];不起作用,您必须自己添加该功能。请参阅NSAnimatablePropertyContainer

于 2012-09-14T13:36:29.437 回答
0

您可以编写自己的方法,例如更改级别。那里的数学试图保持总“动画”时间相等,无论从旧值到新值的转换有多大(这些值大约需要 1 秒)。

-(void)updateLevel:(NSNumber *) newLevelNum {
    float currentLevel = self.level.floatValue;
    float newLevel =  newLevelNum.floatValue;
    if (self.delay == 0.0) // self.delay is a float property set to 0.0 elsewhere
        self.delay = .2 /(newLevel - currentLevel);
    [self.level setFloatValue:currentLevel + .2];
    if (self.level.floatValue - newLevel < .01){
        [self performSelector:@selector(updateLevel:) withObject:newLevelNum afterDelay:self.delay];
    }
}
于 2012-09-14T16:56:29.267 回答