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调用的接口。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,403评论 25 708
  • 画家朋友云兄的诗画常拜读,其才情尝为之绝倒,丹青挥就,诗作随成。 窗外台风肆意,挑灯读画茗诗,心中的一亩三分地,倒...
    逸之何春雷阅读 802评论 2 19
  • 为了躲避上学,禾仔学会了装睡。早晨明明早就醒了,却依旧窝在床上闭眼假寐,被叫起来后自然又是各种哭闹,包括“讨厌妈妈...
    cccowly阅读 398评论 0 0
  • 今年25岁,一个挺尴尬的年龄。 已经不是豆蔻年华的我,每天积极的涂抹着眼霜,买的护肤品也逐渐有向紧致提拉靠...
    lichee_2阅读 337评论 0 0