2011-09-08 20 views
14

ho il seguente problema.Ottieni la posizione corrente di scrollview animata

i sottoclasse un UIScrollView che contentOffset è animato da questo codice:

[UIView animateWithDuration:1.0 
         delay:1.0 
        options:options 
       animations:^{ 
        self.contentOffset = CGPointMake(label.frame.size.width, 0); 

       } 
       completion:^(BOOL completed) { 
        //some other stuff 
       }]; 

Ora, quando l'utente "willBeginDragging" lo ScrollView, voglio interrompere l'animazione corrente e impostare lo scrollview.contentoffset alla corrente posizione che ha nell'emanazione.

ad esempio, l'utente entra nello schermo, dopo 1 secondo la visualizzazione a scorrimento inizia a scorrere, se l'utente tocca lo scroll dopo 2 secondi e lo trascina, scrollview.contentoffset dovrebbe avere la posizione esatta della posizione di animazione corrente .

se ottengo il valore di offset del contenuto nel metodo willbegindrag, è già l'ultimo valore dell'animazione, poiché uianimazione imposta i valori allo stato finale e quindi l'animazione.

Come ottengo la posizione corrente dello spostamento del contenuto dall'animazione in esecuzione?

NSLog(@"pos of content x %f, y %f", [[self.layer presentationLayer] frame].origin.x, [[self.layer presentationLayer] frame].origin.y); 

`ve leggere sul livello di presentazione, ma la vista in sé non è animato, ho bisogno del scrollview.contentoffset.

mhh, qualche idea? thx

già risolto:

Il self.layer presentationLayer è assolutamente corretto.

ma ho dovuto usare i limiti e non la cornice ....

Siamo spiacenti, ora e so che: P

Quindi il codice corretto è:

CGPoint pos = [[self.layer presentationLayer] bounds].origin; 

per ottenere la posizione corrente di una vista a scorrimento animata durante l'animazione.

risposta

8

è possibile ottenere il contenuto di offset mentre lo ScrollView scorre utilizzando il seguente codice ...

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 

NSLog(@"%f", scrollView.contentOffset.x); 

} 
+0

grazie mille – SampathKumar

+0

tutti i ritorni 0.000, –

+1

Questa risposta è off-topic. La domanda riguarda il recupero di contentOffset a metà animazione. Questa soluzione ottiene contentOffset ogni chiamata di scorrimento. – rizzes

Problemi correlati