2013-07-10 24 views
7

Zastanawiam się, w jaki sposób Snapchat ożywia ducha, gdy odsuwasz go, aby odświeżyć? Chciałem to zaimplementować w mojej aplikacji i zastanawiałem się, jak to się stało.Animowany program ładujący, taki jak Snapchat

+0

Szukałem całego sposobu korzystania z UIRefreshControl Core Animation, lub informacji o tym, jak zrobić pull-do-odświeżania od zera, więc mogłem dodać animacje. Właśnie zobaczyłem animowany odświeżacz Snapchata, więc jest to całkowicie możliwe. Daje mi to nagrodę. – user

+3

Jestem prawie pewien, że to zwykły pociąg do odświeżenia, rozciągnięcia ducha, a następnie wykonania niestandardowej animacji. To jest najbliższa rzecz, jaką mogłem znaleźć. https://www.cocoacontrols.com/controls/spiralpulltorefresh –

+3

Osoba, która potwierdziła wniosek - proszę wyjaśnić, jakie zasady lub protokoły są naruszane. – user

Odpowiedz

7

Myślę, że trzeba napisać własne rozwiązanie. Ale to naprawdę nie jest takie trudne.

Musisz utworzyć niestandardowy widok nagłówka tabeli zawierający rozciągliwy obraz i zaimplementować obsługę w swoim UITableViewDelegate. Poniżej przedstawiono dość ogólną implementację niestandardowego sterowania odświeżaniem.

1) utworzyć niestandardowy UIView służyć jako rozwijanego widzenia wskaźnika: Plik

Header:

#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) przypisać headerView jako nagłówek Tableview:

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

3) W twoim UITableViewDelegate , Wdrożyć tablica obsługi przewijania:

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; 
    } 
} 
Powiązane problemy