現在、NSLevelindicator を更新する次のコードがあります。
[self.headerIndicator selfFloatValue:heightValue]
更新時に値間のレベル インジケータをアニメーション化する方法はありますか?
現在、NSLevelindicator を更新する次のコードがあります。
[self.headerIndicator selfFloatValue:heightValue]
更新時に値間のレベル インジケータをアニメーション化する方法はありますか?
スライダーのアニメーション化に対するこの回答を読んでください。レベルインジケーターで試したことはありませんが、API ドキュメントからは実行可能なオプションのようです。そこにあるソースコードは簡単に適応できます: NSSlider アニメーション
レベルを変更するために、このような独自のメソッドを作成できます。そこにある計算では、古い値から新しい値への遷移の大きさ (これらの値で約 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を参照してください。