Initial commit
This commit is contained in:
Executable
+95
@@ -0,0 +1,95 @@
|
||||
//
|
||||
// UIScrollView+JHRefresh.m
|
||||
// JHRefresh
|
||||
//
|
||||
// Created by Jiahai on 14-9-15.
|
||||
// Copyright (c) 2014年 Jiahai. All rights reserved.
|
||||
//
|
||||
|
||||
#import "UIScrollView+JHRefresh.h"
|
||||
#import "JHRefreshHeaderView.h"
|
||||
#import "JHRefreshFooterView.h"
|
||||
#import "AnimationView/JHRefreshCommonAniView.h"
|
||||
#import "AnimationView/JHRefreshAmazingAniView.h"
|
||||
#import "objc/runtime.h"
|
||||
|
||||
@interface UIScrollView()
|
||||
@property (nonatomic, weak) JHRefreshHeaderView *header;
|
||||
@property (nonatomic, weak) JHRefreshFooterView *footer;
|
||||
@end
|
||||
|
||||
@implementation UIScrollView (JHRefresh)
|
||||
|
||||
#pragma mark - 关联属性
|
||||
static char JHRefreshHeaderViewKey;
|
||||
static char JHRefreshFooterViewKey;
|
||||
|
||||
- (void)setHeader:(JHRefreshHeaderView *)header {
|
||||
[self willChangeValueForKey:@"JHRefreshHeaderViewKey"];
|
||||
objc_setAssociatedObject(self, &JHRefreshHeaderViewKey,
|
||||
header,
|
||||
OBJC_ASSOCIATION_ASSIGN);
|
||||
[self didChangeValueForKey:@"JHRefreshHeaderViewKey"];
|
||||
}
|
||||
|
||||
- (JHRefreshHeaderView *)header {
|
||||
return objc_getAssociatedObject(self, &JHRefreshHeaderViewKey);
|
||||
}
|
||||
|
||||
- (void)setFooter:(JHRefreshFooterView *)footer {
|
||||
[self willChangeValueForKey:@"JHRefreshFooterViewKey"];
|
||||
objc_setAssociatedObject(self, &JHRefreshFooterViewKey,
|
||||
footer,
|
||||
OBJC_ASSOCIATION_ASSIGN);
|
||||
[self didChangeValueForKey:@"JHRefreshFooterViewKey"];
|
||||
}
|
||||
|
||||
- (JHRefreshFooterView *)footer {
|
||||
return objc_getAssociatedObject(self, &JHRefreshFooterViewKey);
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
- (void)addRefreshHeaderViewWithAniViewClass:(Class)aniViewClass beginRefresh:(void (^)())beginRefresh
|
||||
{
|
||||
assert([aniViewClass isSubclassOfClass:[JHRefreshAniBaseView class]]);
|
||||
|
||||
if(!self.header)
|
||||
{
|
||||
JHRefreshHeaderView *headerView = [JHRefreshHeaderView createView];
|
||||
headerView.beginRefreshingBlock = beginRefresh;
|
||||
[self addSubview:headerView];
|
||||
self.header = headerView;
|
||||
headerView.aniView = [[aniViewClass alloc] init];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)addRefreshFooterViewWithAniViewClass:(Class)aniViewClass beginRefresh:(void (^)())beginRefresh
|
||||
{
|
||||
assert([aniViewClass isSubclassOfClass:[JHRefreshAniBaseView class]]);
|
||||
|
||||
if(!self.footer)
|
||||
{
|
||||
JHRefreshFooterView *footerView = [JHRefreshFooterView createView];
|
||||
footerView.beginRefreshingBlock = beginRefresh;
|
||||
[self addSubview:footerView];
|
||||
self.footer = footerView;
|
||||
footerView.aniView = [[aniViewClass alloc] init];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)headerStartRefresh
|
||||
{
|
||||
self.header.state = JHRefreshStatePulling;
|
||||
self.contentOffset = CGPointMake(self.contentOffset.x, -JHRefreshViewHeight);
|
||||
}
|
||||
|
||||
- (void)headerEndRefreshingWithResult:(JHRefreshResult)result
|
||||
{
|
||||
[self.header endRefreshingWithResult:result];
|
||||
}
|
||||
|
||||
- (void)footerEndRefreshing
|
||||
{
|
||||
[self.footer endRefreshingWithResult:JHRefreshResultNone];
|
||||
}
|
||||
@end
|
||||
Reference in New Issue
Block a user