Ho il seguente layout nel mio controller di visualizzazione. Voglio essere in grado di scorrere verticalmente con l'intestazione che scorre fuori dalla vista e UISegmentedControl che si attacca alla parte superiore della vista, oltre al fatto che lo scroll rimanente deve essere gestito dalla Vista raccolta.iOS 7 - Consigli di layout
Tuttavia, sono un po 'confuso su quale sia l'approccio migliore per implementare questo layout.
ho provato un paio di implementazioni con risultati alterni:
UIScrollView con UICollectionView come subviews: UIScrollView come vista primaria con l'intestazione, segmentato viste controllo e raccolta come controlli figlio . Il problema con questo approccio è che lo scorrimento nidificato non sembra funzionare correttamente. Per poter scorrere l'UIScrollView il rubinetto deve essere al di fuori dell'area CollectionView altrimenti solo i rotoli CollectionView e l'intestazione e il controllo segmentato non si spostano.
Controllo intestazione e segmentato nella cella di intestazione: Ho provato un altro approccio utilizzando un singolo CollectionView. Ho aggiunto l'intestazione e il controllo segmentato come sottoview di una singola cella di intestazione della vista di raccolta. Quando il valore di controllo segmentato è stato modificato, cambio la proprietà dell'origine dati di CollectionView per ottenere le 3 viste richieste per la vista di raccolta. Visivamente tutto funziona perfettamente. L'unico problema qui è la condizione di gara quando si passa rapidamente tra prima, seconda e terza scheda. Carico i dati da un servizio web, se il servizio web richiede tempo e sta ancora caricando i dati e cambio rapidamente le schede quindi corro in bug in cui i dati restituiti sono per una vista collezione diversa da quella attualmente selezionata, molto di problemi di sincronizzazione non funzionante.
Valore costante di aggiornamento per il vincolo di Autolayout: Un altro approccio che ho provato è quello di modificare il valore costante del vincolo di layout automatico applicato alla vista "Intestazione". Poi ho aggiunto un gesto alla vista del controller della vista per tracciare lo scroll, mentre l'utente scorre verticalmente aggiusto la costante del vincolo del layout automatico in modo che la cella "header" non venga visualizzata. Anche in questo caso non sembra funzionare bene, ma suppongo di poterlo modificare, ma sembra una specie di trucco.
Esiste un modo migliore per implementare questo layout?
Si sta utilizzando AutoLayout come requisito? –
sì, è necessario il layout automatico – newbie
La possibile soluzione per il problema riscontrato nel 2o approccio (in realtà, penso che questo problema non dipenda dal layout scelto) può essere trovato nella prima parte di "Creazione di interfacce utente simultanee su iOS "[WWDC 2012] (https://developer.apple.com/videos/wwdc/2012/) sessione. – Anastasia