Frage

Ich gründe einen einfachen UISlider bis es Fortschritte animieren:

[UIView animateWithDuration:songLength
         delay:0.0
       options:UIViewAnimationOptionRepeat|
         UIViewAnimationOptionAllowUserInteraction|
         UIViewAnimationOptionBeginFromCurrentState
       animations:^{
        [UIView setAnimationDuration:10.0];
        [myUISlider setValue:10.0];
       } completion:nil
   ];

  [UIView commitAnimations];

, wenn der Benutzer drückt einen Knopf Ich möchte Platz der es um die Animation zu stoppen.

Ich verstehe, ich brauche die Präsentationsschicht, um herauszufinden, den Wert abfragen, jedoch ist die Präsentationsschicht vom Typ CALayer und nicht UISlider. daher hat es Schichteigenschaften, wie es die x / y-Position auf dem Bildschirm, aber nicht der Wert des Schiebers selbst.

macht es Sinn, dass durch Design der Präsentationsschicht können alle aktuellen Animationsdaten einer Schicht zugreifen können, aber ich bin nicht sicher, wie das in Code zu erarbeiten.

irgendwelche Ideen?

War es hilfreich?

Lösung

Ich finde heraus, einen Weg, um diese Angelegenheit zu lösen, falls Sie mit dem gleichen Problem handeln. von Design gibt es keine offensichtliche Art und Weise ein animiertes Bild eines UISlider abzufragen. Animation anfragende funktioniert gut für eine Schicht, so ist eine Möglichkeit, Ihren eigenen Hintergrund zu erstellen und animierte eine Schicht, die der Daumen ist.

die Art, wie ich um das funktionierte, ist die Verwendung von NSTimer Klasse. sobald ich die Fortschrittsbalken animieren beginnen soll richte ich ein NSTimer für 0,1 s Intervall und eine Funktion aufrufen, den Daumen Lage zu aktualisieren. die Animation vor / nach dem Daumen (wie es der linke Teil fortschreitet ist blau und was übrig blieb, ist immer noch weiß) ist gesorgt automatisch für Sie.

Hier ist der Code:

updateTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(updateCurrentTime) userInfo:p repeats:YES];

so jeder .01 eines zweiten diese Methode aufgerufen wird und es zeichnet den Daumen, so dass die Animation zu schaffen. keine Notwendigkeit für einen Animationsblock.

Das funktioniert gut, und ich bin zufrieden mit den Ergebnissen. Ich bin mit der Leistung besorgt und messen, wie ressourcenintensiv diese Implementierung. es vielleicht eine gute Idee, mit der ersten Option zu gehen, die ich oben erwähnt habe.

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