项目地址: MJRefresh From Github
整体结构
其中位于继承链的最末端的刷新控件可以直接使用,而其上一层用来自己继承并且自定义刷新控件
主要功能
- 常见样式的刷新控件
- 支持GIF图片的动画式刷新控件
- 提供对刷新控件的文字,时间的样式修改和隐藏
- 支持自定义刷新控件
- 允许刷新结束后对控件的隐藏和显示设置
- 支持对
UICollectionView
刷新控件继承 - 支持对
UIWebView
刷新控件集成
核心API
MJRefreshComponent.h
/** 刷新控件的基类 */
@interface MJRefreshComponent : UIView
#pragma mark - 刷新状态控制
/** 进入刷新状态 */
- (void)beginRefreshing;
/** 结束刷新状态 */
- (void)endRefreshing;
/** 是否正在刷新 */
- (BOOL)isRefreshing;
#pragma mark - 其他
/** 根据拖拽比例自动切换透明度 */
@property (assign, nonatomic, getter=isAutomaticallyChangeAlpha) BOOL automaticallyChangeAlpha;
@end
MJRefreshHeader.h
@interface MJRefreshHeader : MJRefreshComponent
/** 创建header */
+ (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
/** 创建header */
+ (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
/** 这个key用来存储上一次下拉刷新成功的时间 */
@property (copy, nonatomic) NSString *lastUpdatedTimeKey;
/** 上一次下拉刷新成功的时间 */
@property (strong, nonatomic, readonly) NSDate *lastUpdatedTime;
/** 忽略多少scrollView的contentInset的top */
@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop;
@end
MJRefreshFooter.h
@interface MJRefreshFooter : MJRefreshComponent
/** 创建footer */
+ (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
/** 创建footer */
+ (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
/** 提示没有更多的数据 */
- (void)endRefreshingWithNoMoreData;
/** 重置没有更多的数据(消除没有更多数据的状态) */
- (void)resetNoMoreData;
/** 忽略多少scrollView的contentInset的bottom */
@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;
/** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏) */
@property (assign, nonatomic) BOOL automaticallyHidden;
@end
实现自定义动画刷新控件
- 继承MJRefreshGifHeader/Footer 类
- 重写其父类
prepare
方法,先并用super
调用父类实现 -
prepare
方法中,准备刷新控件idel
状态,refreshing
状态,pulling
状态的三个图片数组,使用setImages:forState:
设置
实现自定义刷新控件
- 继承MJRefreshGifHeader/Footer 类
- 重写其父类
prepare
方法,先并用super
调用父类实现 -
prepare
方法中添加自己的视图;placeSubviews
方法中实现控件的布局 - 重写父类监听ScrollView滚动时的相关方法,调用
super
实现 - 重写父类的
setState:
,setPullingPercent:
调用super
并自定义来实现监听控件的刷新状态和拖拽比例
其他
针对刷新控件各个状态的文字内容,字体,颜色设置
setTitle:forState:
stateLabel
lastUpdatedTimeLabel
头部控件在导航栏下面自动隐藏
automaticallyChangeAlpha
设为Yes
禁止底部控件自动刷新加载
automaticallyRefresh
设为No
Note
纯ARC,兼容的系统>=iOS6.0、iPhone\iPad横竖屏