【发布时间】:2012-09-07 14:51:51
【问题描述】:
目前我有以下代码来更新 NSLevelindicator:
[self.headerIndicator selfFloatValue:heightValue]
有什么方法可以在值更新时为它们之间的级别指示器设置动画?
【问题讨论】:
标签: objective-c xcode cocoa uiviewanimation nslevelindicator
目前我有以下代码来更新 NSLevelindicator:
[self.headerIndicator selfFloatValue:heightValue]
有什么方法可以在值更新时为它们之间的级别指示器设置动画?
【问题讨论】:
标签: objective-c xcode cocoa uiviewanimation nslevelindicator
我已经尝试过这段代码,它工作正常:
斯威夫特: self.CpuLevel.maxValue = Double(value)
【讨论】:
阅读此答案以动画滑块。我还没有尝试过使用级别指示器,但从 API 文档来看,这似乎是一个可行的选择。那里的源代码很容易适应:NSSlider animation
【讨论】:
您可以编写自己的方法,例如更改级别。无论从旧值到新值的转换有多大(这些值大约需要 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];
}
}
【讨论】:
如果[[[self.headerIndicator] animator] setFloatValue:heightValue]; 不起作用,您必须自己添加该功能。见NSAnimatablePropertyContainer。
【讨论】: