Frage

Wie kann ich eine NSSlider-Animation erstellen, wenn ich den Float-Wert davon ändere.Ich habe versucht:

[[mySlider animator] setFloatValue:-5];

aber das hat nicht funktioniert..ändern Sie einfach den Wert ohne Animation.Vielleicht weiß jemand, wie das geht?

Danke im Voraus.

War es hilfreich?

Lösung

ok - das ist also nicht so schnell und hübsch, wie ich gehofft habe, aber es funktioniert. Sie können Animatoren und Kernanimationen auf dem Schieberegler nicht eigentlich verwenden, da die Kernanimation nur auf Ebenen funktioniert, und es gibt keinen Zugriff auf die Knobarwerte in der Schieberschicht.

Also müssen wir stattdessen zurückgreifen, um den Slider-Wert manuell animieren. Da wir dies auf einem Mac tun - können Sie NSANIMATION (die auf iOS nicht verfügbar ist).

Welche Nsanimation ist einfach - es bietet einen Timing- / Interpolationsmechanismus, damit Sie animieren können (im Gegensatz zu der Kernanimation, die auch mit den Ansichten verbindet und die Änderungen an sie behandelt).

zur Verwendung von NSAnimation - Sie würden es am häufigsten unterklassifizieren und den generationspflichtigen Bereich überschreiben und lege deine Logik dort hinein.

Hier habe ich das implementiert - ich habe eine neue Nsanimations-Unterklasse erstellt, die genannt genannt genannt wird, genannt generakodicetagcode

nsanimationformersleiter.h: generasacodicetagpre.

nsanimationformersleiter.m: generasacodicetagpre.

Um es verwenden zu können

Beispiel: generasacodicetagpre.

Andere Tipps

Ihre Methode funktioniert, aber es gibt etwas viel Einfacheres.

Sie können verwenden Sie den Animator-Proxy, Sie müssen ihm nur sagen, wie er animiert werden soll.Um dies zu tun, müssen Sie das implementieren defaultAnimationForKey: methode aus dem NSAnimatablePropertyContainer Protokoll.


Hier ist eine einfache Unterklasse von NSSlider das macht das:

#import "NSAnimatableSlider.h"
#import <QuartzCore/QuartzCore.h>

@implementation NSAnimatableSlider

+ (id)defaultAnimationForKey:(NSString *)key
{
    if ([key isEqualToString:@"doubleValue"]) {
        return [CABasicAnimation animation];
    } else {
        return [super defaultAnimationForKey:key];
    }
}

@end

Jetzt können Sie einfach den Animator-Proxy verwenden:

[self.slider.animator setDoubleValue:100.0];

Stellen Sie sicher, dass Sie das verknüpfen QuartzCore Rahmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top