MJRefresh源码记:ReadMe

项目地址: MJRefresh From Github

整体结构

MJRefresh源码记:ReadMe_第1张图片
MJRefresh.png

其中位于继承链的最末端的刷新控件可以直接使用,而其上一层用来自己继承并且自定义刷新控件

主要功能

  • 常见样式的刷新控件
  • 支持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

实现自定义动画刷新控件

  1. 继承MJRefreshGifHeader/Footer 类
  2. 重写其父类prepare方法,先并用super调用父类实现
  3. prepare方法中,准备刷新控件idel状态, refreshing状态, pulling状态的三个图片数组,使用setImages:forState:设置

实现自定义刷新控件

  1. 继承MJRefreshGifHeader/Footer 类
  2. 重写其父类prepare方法,先并用super调用父类实现
  3. prepare方法中添加自己的视图;placeSubviews方法中实现控件的布局
  4. 重写父类监听ScrollView滚动时的相关方法,调用super实现
  5. 重写父类的setState:,setPullingPercent: 调用super并自定义来实现监听控件的刷新状态和拖拽比例

其他

针对刷新控件各个状态的文字内容,字体,颜色设置

setTitle:forState:
stateLabel
lastUpdatedTimeLabel

头部控件在导航栏下面自动隐藏
automaticallyChangeAlpha设为Yes
禁止底部控件自动刷新加载
automaticallyRefresh设为No

Note

纯ARC,兼容的系统>=iOS6.0、iPhone\iPad横竖屏

你可能感兴趣的:(MJRefresh源码记:ReadMe)