目前我有以下代码来更新NSLevelindicator:
[self.headerIndicator selfFloatValue:heightValue]
有没有办法在更新值时为值之间的级别指示器设置动画?
答案 0 :(得分:1)
阅读动画滑块动画的答案。我没有尝试过水平指标,但从API文档来看,这似乎是一个可行的选择。那里的源代码很容易适应:NSSlider animation
答案 1 :(得分:0)
如果[[[self.headerIndicator] animator] setFloatValue:heightValue];
不起作用,您必须自己添加该功能。请参阅NSAnimatablePropertyContainer。
答案 2 :(得分: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];
}
}