2015-07-03 3 views
12

Sto provando a strutturare una pagina simile alla pagina del profilo di Twitter. Sembra che stiano usando uno UITableView di base. Il profilo principale è solo tableHeaderView. Le schede sono un UISegmentedControl all'interno di SectionRowHeader in modo che rimanga in cima quando si scorre. E i tweet sono solo le celle all'interno di quella sezione. E se si cambiano le schede, sembra che stiano semplicemente cambiando i dati sottostanti e ricaricando la tabella.Configurazione pagina profilo iOS Twitter

Tuttavia se si gioca con la pagina, noterete che cambiare le schede mantiene la posizione di scorrimento precedente. E se si scorre di nuovo in alto in una scheda, ovviamente l'altra scheda deve essere spostata verso l'alto, altrimenti scorrerà sotto l'intestazione. Inoltre, se osservi da vicino la parte inferiore (i tweet) ha la sua barra di scorrimento una volta che inizi a scorrere. Quindi sembra che sia proprio la sua tableview. Quindi sarebbe una nuova vista tabella all'interno della cella della pagina principale? E se è quello che stanno facendo, allora lo scorrimento è senza soluzione di continuità tra loro. Puoi scorrere la parte inferiore verso l'alto e solo una volta che le schede sono bloccate verso l'alto fai scorrere i tweet sotto di esso.

Sto provando a creare una pagina strutturata simile ma continuo a incorrere in problemi. Idealmente vorrei anche avere la logica di queste sotto-schede suddivise in controller di vista separati per il riutilizzo, ma a questo punto vorrei solo farlo funzionare.

Qualcuno ha un'idea della struttura che sta utilizzando per impostare una pagina come questa?

+0

Scorrere la visualizzazione all'interno di una vista di scorrimento? Prova a leggere questo http://oleb.net/blog/2014/05/scrollviews-inside-scrollviews/ – rounak

+0

Ma una scrollview non può avere un'intestazione di sezione che rimanga in cima. Quindi, a meno che non stiano costruendo manualmente quella logica, si tratta di una tabella con una vetrina panoramica. Ma sottolineo il problema di cui sopra (non scorre perfettamente, ecc.) – Oren

+0

@Oren sei riuscito a capirlo? – kidsid49

risposta

0

che sto al 99% alcuni sono semplicemente regolando l'indicatore di scorrimento inserti mentre si scorre visualizzare la tabella:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGFloat const visibleHeaderHeight = 0.0; // your logic here 
    UIEdgeInsets const insets = UIEdgeInsetsMake(visibleHeaderHeight, 0.0, 0.0, 0.0); 

    self.scrollView. scrollIndicatorInsets = insets; 
} 

Anche io sono abbastanza sicuro che stanno utilizzando una vista tavolo in stile raggruppati a causa del sezionamento , quindi dovresti creare l'intestazione adesiva da solo. Puoi anche farlo in -scrollViewDidScroll:.


Se si vuole rompere le linguette nei controller di vista separati, consiglio la seguente configurazione:

  • hanno un controller della vista contenitore di gestire la visualizzazione di intestazione che contiene le schede
  • uso UIViewController contenimento per collegare il controllore di vista attivo
  • abbonarsi alla vista a scorrimento del controller di visualizzazione attivo contentOffset e regolare di conseguenza l'indicatore di scorrimento e la posizione dell'intestazione appiccicosa y di conseguenza
+0

Se stanno semplicemente impostando gli inserimenti, come passano lo scroll e la velocity da una scrollview alla successiva? Prova a scorrere velocemente la parte superiore dell'intestazione. Noterai che le pergamene e poi non appena le schede si bloccano, la parte inferiore continua a scorrere. Funziona come se fosse una singola scrollview. – Oren

+0

Hanno solo una vista di scorrimento e riposizionano l'intestazione sull'evento di scorrimento per renderlo appiccicoso. –

+0

Ho provato anche questo setup e il problema di avere una sola scrollview e di spingere i tweet verso il basso con il content inset è che l'intestazione sarà dietro la scrollview (e quindi non cliccabile) o sopra (e quindi interferirebbe con lo scrolling gesti). Se si tratta di una singola vista tabella, non penso che la posizione di scorrimento di ogni singola scheda verrebbe mantenuta, quindi continuerebbero a conservare tali informazioni manualmente? Questo approccio renderebbe questa pagina estremamente complessa e difficile da mantenere, penso. – Oren