【问题标题】:Animating the NSLevelIndicator when the values change当值改变时动画 NSLevelIndicator
【发布时间】:2012-09-07 14:51:51
【问题描述】:

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

[self.headerIndicator selfFloatValue:heightValue]

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

【问题讨论】:

    标签: objective-c xcode cocoa uiviewanimation nslevelindicator


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您可以编写自己的方法,例如更改级别。无论从旧值到新值的转换有多大(这些值大约需要 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];
            }
        }
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 动画师不工作。你有任何我可以使用 NSAnimatablePropertyContainer 的示例代码吗?
          • 您阅读过文档吗?谷歌搜索示例?试过什么?
          • 嗯,NSAnimatablePropertyContainer 的文档(我是如何阅读的)适用于用图形动画它,而不是用值或动画从一个点到另一个点的值。我确实找到了LERP,它会给你一个介于两个值中间的值。我现在正试图找出一种循环通过一条小曲线并更改该曲线内 NSLevelIndicator 的值的方法。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-13
          • 2014-04-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多