目前我有以下代码来更新 NSLevelindicator:
[self.headerIndicator selfFloatValue:heightValue]
有什么方法可以在值更新时为值之间的级别指示器设置动画?
目前我有以下代码来更新 NSLevelindicator:
[self.headerIndicator selfFloatValue:heightValue]
有什么方法可以在值更新时为值之间的级别指示器设置动画?
阅读动画滑块的这个答案。我没有尝试过使用级别指示器,但从 API 文档来看,这似乎是一个可行的选择。那里的源代码很容易适应:NSSlider 动画
我已经尝试过这段代码,它工作正常:
斯威夫特:self.CpuLevel.maxValue = Double(value)
如果[[[self.headerIndicator] animator] setFloatValue:heightValue];
不起作用,您必须自己添加该功能。请参阅NSAnimatablePropertyContainer。
您可以编写自己的方法,例如更改级别。那里的数学试图保持总“动画”时间相等,无论从旧值到新值的转换有多大(这些值大约需要 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];
}
}