プルダウンして更新すると、スナップチャットがどのようにゴーストをアニメーション化するのだろうと思っていました。私は自分のアプリにそれを実装したいと思っていましたが、それがどのように行われたのか疑問に思っていました.
質問する
2009 次
1 に答える
7
独自のソリューションを作成する必要があると思います。しかし、実際にはそれほど難しいことではありません。
伸縮可能な画像を含むカスタム テーブル ヘッダー ビューを作成し、UITableViewDelegate
. 以下は、カスタム リフレッシュ コントロール処理のかなり一般的な実装です。
1) プルダウン インジケーター ビューとして機能するカスタム UIView を作成します。
ヘッダー ファイル:
#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) headerView を tableView ヘッダーとして割り当てます。
self.header = [[UpdateListView alloc] init];
self.table.tableHeaderView = self.header;
3)UITableViewDelegate
で、テーブル スクロール処理を実装します。
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;
}
}
于 2013-08-19T13:49:03.023 に答える