Domanda

Sto installando un semplice UISlider ad animarlo di progresso:

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

  [UIView commitAnimations];

quando l'utente preme un pulsante voglio interrompere l'animazione al suo posto.

ho capito ho bisogno di interrogare il livello di presentazione per capire il valore, tuttavia, il livello di presentazione è di tipo CALayer e non UISlider. quindi, ha proprietà di livello, come esso è x / y posizione sullo schermo, ma non il valore del cursore stesso.

ha senso che in base alla progettazione del livello di presentazione può accedere a tutti i dati attuali animati di un livello, ma non sono sicuro di come funziona in questo in codice.

tutte le idee?

È stato utile?

Soluzione

ho capito un modo per risolvere la questione, nel caso in cui avete a che fare con lo stesso problema. da disegno non c'è modo evidente per interrogare un pollice animata di un UISlider. animazione interrogazione funziona bene per un livello, quindi un modo è quello di creare il proprio sfondo animato e uno strato che è il pollice.

il modo in cui ho lavorato intorno a questo è l'uso di classe di NSTimer. una volta voglio barra di avanzamento per iniziare l'animazione a impostare una NSTimer per 0,1 secondi intervallo e chiamare una funzione per aggiornare la posizione del pollice. l'animazione prima / dopo il pollice (come progredisce la parte sinistra è blu e quello che è rimasto è ancora bianca) è curato in modo automatico.

ecco il codice:

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

così ogni .01 di secondo questo metodo viene chiamato e ridisegna il pollice, creando così l'animazione. Non c'è bisogno di un blocco di animazione.

questo funziona bene e sono felice con i risultati. Sono preoccupato con le prestazioni e misurerà come risorsa intensiva questa implementazione è. forse una buona idea di andare con la prima opzione che ho citato sopra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top