iOS-封装一个上拉加载下拉刷新控件

点击这里查看源码
下面简单介绍下架构

第一层:#####

基类 XZHRefreshView定义公共方法,属性。

@interface XZHRefreshView : UIView

@property (weak, nonatomic) id refreshingTarget;
@property (assign, nonatomic) SEL refreshingAction;
/** 记录scrollView刚开始的inset */
@property (assign, nonatomic) UIEdgeInsets scrollViewOriginalInset;
/** 父控件 */
@property (nonatomic, weak) UIScrollView *scrollView;
/**刷新状态**/
@property (nonatomic, assign) XZHRefreshState state;
/** 进入刷新状态 */
- (void)beginRefreshing;
/** 结束刷新状态 */
- (void)endRefreshing;


@end

- (void)willMoveToSuperview:(UIView *)newSuperview方法中添加观察者监听视图的状态

第二层:#####

XZHRefreshFooterView,XZHRefreshHeaderView设置控件在视图中的位置,检测视图的偏移量,根据偏移量来改变控件的状态,控制各种状态下的偏移量。
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context方法中检测偏移量,根据偏移量设置控件的状态。在statesetter方法中改变各种状态的偏移量。
这样做的好处是以后各种UI效果的刷新控件都可以继承这个类,只完成UI效果就可以了。

第三层:#####

这里定制控件视图的UI效果,在state的setter方法中改变各种状态的UI效果与动画。

第四层:#####

使用scrollviewcategory,提供方便scrollview调用的接口。

你可能感兴趣的:(iOS-封装一个上拉加载下拉刷新控件)