2013-07-31 14 views
5

Questa non è strettamente una domanda di programmazione ma più "come realizzare questa" domanda.Parallax view scrolling (simile a Yahoo)

Sono curioso (e sto lavorando su un'app che probabilmente richiederà questo) come è implementato lo scorrimento della parallasse sinistra-destra. Per sapere esattamente cosa intendo, controlla l'app Yahoo Weather (è gratis, non preoccuparti).

Usano solo un controller di visualizzazione o un controller separato per ciascuna vista mostrata lì?
Qual è il modo più semplice per implementarlo? Ho trovato this topic here che un po 'spiega un po' ma quando ricevono le informazioni dai loro server? È quando le viste sono cambiate o all'avvio dell'app?

Qualsiasi informazione su come implementare tale scorrimento sarebbe molto apprezzata.

risposta

5

E 'davvero semplice realtà:

  • sottoclasse UIScrollView
  • Aggiungi un UIView * parallaxView; come @property
  • Aggiungi un CGFloat parallaxFactor come @property
  • layoutSubviews Override
  • chiamata super, e quindi utilizzare self.scrollOffset * parallaxFactor per posizionare il parallaxView

Questo è tutto!

Ho creato una sottoclasse UIScrollView multifunzionale anch'essa molto semplice da usare, perfetta per questo caso! Get it on GitHub: https://github.com/LeonardPauli/LPParallaxScrollView

Buona fortuna!

+0

Sì, bene questo gestisce davvero la parte visibile. Ma per quanto riguarda la funzionalità? Ad esempio, se l'utente vuole aggiornare il tempo, sposta la vista verso il basso e si aggiorna con le ultime informazioni meteo. Dubito che usano 'if's per determinare quale vista è presentata. Qualche idea? – Majster

+0

Semplice matematica! Presto .. –

+0

Ho aperto qualcosa che ho fatto un po 'di tempo fa! https://github.com/LeonardPauli/MYParallaxScrollView Basta usare parallaxView.currentPageIndex :) Ma ancora meglio, usa una scrollview verticale diversa (parallasse per il blocco semplice) per ogni pagina, con la ricarica lì. (Non dimenticare di fare in modo che i riconoscitori dei gesti si blocchino a vicenda): D –