2013-05-21 11 views
13

Come posso ottenere questo effetto?Nascondere un elemento della barra degli strumenti quando UITableView scorre (simile all'app di Facebook?)

full top view http://i39.tinypic.com/f0vx4l.pnghalf top view http://i40.tinypic.com/2w7486r.png top view almost hidden http://i42.tinypic.com/k95r9.png

+0

Quale parte degli screenshot mostra l'effetto desiderato? È lo stato, la foto, ecc? –

+0

Oh, dovrai usare i metodi di delega per scrollview per farlo. È solo un UIView che si trova sopra la visualizzazione tabella. – Fogmeister

risposta

18

Questo non è immediatamente evidente dai vostri screenshot, ma io credo che si desidera che la barra degli strumenti che intestazione di scivolare come l'utente scorre, a destra ? (Suggerirei di chiarire su questa parte)

Puoi farlo in alcuni modi, e in ognuno di essi dovrai implementare la tua logica di scorrimento, ovvero quanto la barra degli strumenti dell'intestazione scorre a seconda di dove hai scorrere. Detto questo, ecco come farlo:

. Se stai utilizzando UITableView, presumo che tu abbia impostato il controller di visualizzazione come delegate. Dal momento che UITableView è già una sottoclasse di UIScrollView, è sufficiente aggiungere lo UIScrollViewDelegate al controller di visualizzazione. Questo ci darà gli eventi di scorrimento mentre accadono. Ti consigliamo di fare la tua logica in scrollViewDidScroll:.

2.. Se stai semplicemente utilizzando UIScrollView, imposta semplicemente il controller di visualizzazione come delegato, implementa UIScrollViewDelegate ed esegui la logica in scrollViewDidScroll:.

Detto questo, il codice potrebbe essere simile a questo:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint scrollPos = scrollView.contentOffset; 

    if(scrollPos.y >= 40 /* or CGRectGetHeight(yourToolbar.frame) */){ 
     // Fully hide your toolbar 
    } else { 
     // Slide it up incrementally, etc. 
    } 
} 

In ogni caso, spero che ho aiutato.

5

Se avete impostato correttamente il delegato, il vostro tavolo chiamerà scrollViewDidScroll: quando scorrere.

Così nel controller, è possibile aggiungere qualcosa di simile:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView.contentOffset.y >0) //means that the user began to scroll down the table 
    { 
     [UIView animateWithDuration:0.4 animations:^{ 
      //animations you want to perform 
     }]; 
    } 
} 
0

Questo sarà rispondere alla tua domanda:

iPhone: Hide UITableView search bar by default

stesso concetto, controllo diverso. Puoi mettere un UIView nella riga superiore di tableview o qualsiasi altro controllo pertinente come il pulsante.

Buona fortuna.

1

Qui ho implementato il codice per UIView Nascondi/Mostra quando lo scorrimento della tabella. Quando tableview scorre verso il basso, UIView è nascosto e quando si scorre su UIView mostra. Spero che funzioni per te ...!

Fase 1: - Effettuare una proprietà nel file h

@property (nonatomic) CGFloat previousContentOffset; 

Fase 2: - Annotare il codice nel metodo scrollViewDidScroll.

-(void)scrollViewDidScroll:(UIScrollView *)scrollView { 

CGFloat currentContentOffset = scrollView.contentOffset.y; 

if (currentContentOffset > self.previousContentOffset) { 
    // scrolling towards the bottom 
    [self.subButtonView setHidden:YES]; 
} else if (currentContentOffset < self.previousContentOffset) { 
    // scrolling towards the top 
    [self.subButtonView setHidden:NO]; 
} 
self.previousContentOffset = currentContentOffset; 
} 
Problemi correlati