2013-07-10 20 views
7

Mi chiedevo come lo snapchat anima quella cosa fantasma quando si abbassa per aggiornare? Volevo implementarlo nella mia app e mi chiedevo come fosse fatto.Caricatore animato come Snapchat

+0

ho cercato dappertutto un modo per utilizzare Core Animation con UIRefreshControl, o informazioni su come fare un pull-to-refresh da zero in modo da poter aggiungere le animazioni. Ho appena visto l'aggiornamento animato di Snapchat, quindi è assolutamente possibile. Sto mettendo una taglia su questo. – user

+3

Sono abbastanza sicuro che è solo un normale pull per aggiornare, allungare il fantasma, quindi fare un'animazione personalizzata. Questa è la cosa più vicina che potessi trovare. https://www.cocoacontrols.com/controls/spiralpulltorefresh –

+3

Chi ha downgoted, spiega quali regole o protocolli vengono violati. – user

risposta

7

Penso che sia necessario scrivere la propria soluzione. Ma non è davvero così difficile.

È necessario creare una vista di intestazione di tabella personalizzata contenente un'immagine estensibile e implementare una gestione nel proprio UITableViewDelegate. Di seguito sono riportate un'implementazione abbastanza generica di una gestione personalizzata del controllo di aggiornamento.

1) creare un UIView personalizzato per servire come la vostra discesa vista indicatore: il file

Intestazione:

#import <UIKit/UIKit.h> 

typedef enum UpdateListViewState 
{ 
    UpdateListViewStatePull, 
    UpdateListViewStateRelease, 
    UpdateListViewStateUpdate 

}UpdateListViewState; 


@interface UpdateListView : UIView 
@property (nonatomic,readwrite) UpdateListViewState state; 
@property (nonatomic,strong) UIImageView imageView; 
@end 

2) assegnare il headerView come intestazione tableView:

self.header = [[UpdateListView alloc] init]; 
self.table.tableHeaderView = self.header; 

3) Nel telefono UITableViewDelegate , Implementare tabella di gestione di scorrimento:

const int UPDATE_DRAG_HEIGHT = -70; 

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset 
{ 
    if (self.header.state == UpdateListViewStateRelease) { 
     //Perform update stuff here & perhaps refresh animation 
     self.header.state = UpdateListViewStateInitial; 

    } 
} 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    //adjust size of self.header.imageView here according to scrollView.ContentOffset 
    if (scrollView.contentOffset.y < UPDATE_DRAG_HEIGHT && self.header.state != UpdateListViewStateUpdate) { 
      self.header.state = UpdateListViewStateRelease; 
    } 
}