2009-06-24 31 views

risposta

6

è necessario scaricare:

  1. Uno ScrollView con paginazione abilitato, largo tre schermi.
  2. Per avere tre sottoview nella vista a scorrimento - L (contenuto a sinistra, a 0,0), C (contenuto centrale, a 320,0), R (contenuto a destra, a 640,0). C è il contenuto che desideri mostrare inizialmente. L è il contenuto da mostrare se l'utente scorre a sinistra.
  3. Impostare il contentoffset della scrollview su 320 (per la modalità verticale), perché si desidera visualizzare inizialmente C, non L.
  4. Ogni volta che una pergamena termina, il contentoffset sarà un multiplo intero di schermate. Se stai ancora visualizzando C (contentoffset è 320), allora stai bene. Se contentoffset è ora 0 o 640, hai un po 'di lavoro da fare.

Se l'utente scorre a sinistra - si ha la stessa gerarchia vista, ma ora lo ScrollView sta mostrando L piuttosto che C, in quanto il contentOffset è 0, con una scrolloffset 0. Ora si dovrebbe ripristinare tutto il contenuto in modo hai XLC e un scrolloffset di 320 - nel caso in cui l'utente desideri scorrere nuovamente a sinistra. In altre parole, C diventa la nuova R, L diventa la nuova C e X è il nuovo contenuto da visualizzare se l'utente scorre nuovamente a sinistra.

Il metodo di ignorare per fare questo è:

(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView 
+0

Grazie per la rapida risposta! :) –

0

vorrei farlo usando un CATransition, con il tipo kCATransitionPush.

CATransition *animation = [CATransition animation]; 
[animation setType:kCATransitionPush]; 
[animation setSubtype:kCATransitionFromRight]; //or ...FromLeft, as the case may be 

ho ottenuto prestazioni migliori con CATransitions rispetto ad altre tecniche finora, ma che potrebbe dipendere da diversi fattori.

Dai un'occhiata alla classe TransitionView nel codice di esempio di Apple per un esempio di come costruire una vista che faccia le transizioni. Con quella classe puoi fare:

- (void)replaceSubview:(UIView *)oldView withSubview:(UIView *)newView transition:(NSString *)transition direction:(NSString *)direction duration:(NSTimeInterval)duration; 
+0

Grazie! Darò entrambi una prova e vedrò cosa mi piace. –

Problemi correlati