2016-01-05 8 views
7

Voglio implementare l'effetto UICollectionView con tabbar e modificare vari contenuti come fa un sacco di app social.Come impaginare UICollectionView con tabbar su SupplementaryView e cambiare contenuto diverso?

enter image description here

È possibile fare clic per visualizzare Home timeline e clicca Album per visualizzare le foto sul contenuto. La parte superiore del contenuto come avatar e username non cambiano, e lo spostamento del contenuto manterrà lo stesso quando si passa al completamento.

Provo con un UICollectionView contenente SupplementaryView per la visualizzazione di avatar e la gestione di eventi click tabbar. Assegnare diversi delegati, dataSource e oggetto di layout mentre si cambia contenuto diverso. Ma ho avuto un sacco di problemi e crash.

Qual è il modo corretto per implementare questo tipo di layout e come gestire l'evento di commutazione?

+0

Hai guardato il video ["Interfaccia utente avanzata con viste di raccolta" del WWDC 2014] (https://developer.apple.com/videos/play/wwdc2014-232/), e guardato il [associato "AdvancedCollectionView "Codice di esempio] (https://developer.apple.com/sample-code/wwdc/2015/?q=advancedcollectionview)? Dovresti trovarlo molto utile. –

+0

Perché dovresti usare una barra delle schede? Avrei usato una semplice vista di controllo segmentata o forse avrei usato qualcosa come https: // github.com/HeshamMegid/HMSegmentedControl –

risposta

1

Se ho capito bene, la parte superiore della vista non cambia e rimane come logo con un avatar. Se questo è il caso, non mi preoccuperei delle viste supplementari. Le viste supplementari sono più per intestazioni/separatori di sezioni in modo simile all'utilizzo delle intestazioni di sezione per UITableViews. Avere invece una vista del contenitore nella parte inferiore che reggerebbe la collectionView con UISegmentedControl sopra la quale si attivano le modifiche nella vista del contenitore. Se il contenitore deve visualizzare gli stessi dati con layout diversi (ad esempio le foto che scorrono verticalmente o orizzontalmente), il controllo segmentato potrebbe attivare una modifica alla collectionViewFlowLayout, ma se i dati cambiano (cioè la Timeline all'album), suggerirei di passare a diversi i controller della vista figlio nella vista Contenitore attivati ​​dalle azioni di controllo segmentate. Probabilmente vorrai salvare l'offset di scorrimento corrente nei controller della vista contenitore in modo che possa essere ripristinato al momento del ritorno. Inoltre, l'uso di classi di controller di visualizzazione figlio separate consente di evitare che il controller di visualizzazione contenitore diventi troppo grande e di mantenere ogni controller di visualizzazione di raccolta figlio semplice e mirato.

+0

E che ne diresti di gestire lo scroll touch sulla parte superiore dell'area? Quando si tocca l'area dell'intestazione e si scorre verso il basso, l'insieme della collectionView dovrebbe anche scorrere verso il basso insieme. scorrendo verso l'alto anche. – Angolao

1

Basta decomporre la logica, non è necessario tenere tutto in uno UICollectionView e cambiare le origini dati e delegati.

0

Con CollectionView
https://github.com/jamztang/CSStickyHeaderFlowLayout

Senza CollectionView (progetto di test creato a scopo dimostrativo)
https://github.com/rishi420/issue-12-interactive-animations-uidynamics

Per il controllo del segmento
https://github.com/dzenbot/DZNSegmentedControl

Con CollectionView, prima sezione cellForItemAtIndexPath è il profilo area dell'immagine La seconda sezione di cellForItemAtIndexPath è un'altra vista che contiene un controllo di segmento con tutte le 3 viste scorrevoli (Home, Album, Profilo).

È anche possibile creare una vista estraibile che rimane fissa nella parte inferiore dello schermo o occupa più spazio mentre l'utente scorre verso l'alto.

Problemi correlati