配色: 字号:
websocket可以做什么MJRefresh框架使用及说明
2017-01-14 | 阅:  转:  |  分享 
  
websocket可以做什么MJRefresh框架使用及说明

一.MJRefresh的类解释.





1.MJRefreshComponent所有刷新控件的基类别.(component:成分,组件)



2.MJRefreshNormalHeader默认的下拉刷新控件



3.MJRefreshAutoNormalFooter默认的上拉刷新控件下拉刷新控件自适应在页面内容下面



4.MJRefreshAutoGifFooter带动态图的上拉加载控件下拉刷新控件自适应在页面内容下面



5.MJRefreshBackNormalFooter默认的上拉刷新控件下拉刷新控件一直在屏幕底部



6.MJREfreshBackGifFooter默认的上拉动画刷新控件下拉刷新控件一直在屏幕底部







总结:刷新控件分为:header和footer控件.头部和尾部刷新控件



刷新控件分为normal和gif状态.普通状态和刷新控件和gif动态图的刷新控件



尾部刷新控件又分为:auto和back两个模式自适应尾部刷新控件位置和刷新控件位置在底部.



二.各个类中提供的外部方法.



1.MJRefreshComponent



(1)beginRefreshing//开始刷新,进入页面想要自动刷新的时候调用.

isRefreshing//是否正在刷新

endRefreshing//结束刷新,网络请求结束的时候使用.

(2)MJRefreshState刷新控件的状态



复制代码

复制代码

/刷新控件的状态/

typedefNS_ENUM(NSInteger,MJRefreshState){

/普通闲置状态/

MJRefreshStateIdle=1,

/松开就可以进行刷新的状态/

MJRefreshStatePulling,

/正在刷新中的状态/

MJRefreshStateRefreshing,

/即将刷新的状态/

MJRefreshStateWillRefresh,

/所有数据加载完毕,没有更多的数据了/

MJRefreshStateNoMoreData

};

复制代码

复制代码

(3)automaticallyChangeAlpha根据拖拽比例自动切换透明度



2.MJRefreshHeader



(1)



/这个key用来存储上一次下拉刷新成功的时间/

@property(copy,nonatomic)NSStringlastUpdatedTimeKey;

/上一次下拉刷新成功的时间/

@property(strong,nonatomic,readonly)NSDatelastUpdatedTime;

(2)



/创建header/

+(instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;

/创建header/

+(instancetype)headerWithRefreshingTarget:(id)targetrefreshingAction:(SEL)action;

3.MJRefreshFooter



(1)



/创建footer/

+(instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;

/创建footer/

+(instancetype)footerWithRefreshingTarget:(id)targetrefreshingAction:(SEL)action;

(2)endRefreshingWithNoMoreData提示没有更多数据.



resetNoMoreData重置没有更多数据



(3)automaticallyHidden自动根据有无数据来显示或者隐藏(有数据就显示,没数据就隐藏.默认为NO)



三.具体使用



1.默认的刷新方式



头部刷新控件:MJRefreshNormalHeader



尾部刷新控件:MJRefreshAutoNormalFooter



-(UITableView)tableView

{

if(!_tableView)

{

self.tableView=[[UITableViewalloc]initWithFrame:CGRectZerostyle:UITableViewStylePlain];

self.tableView.dataSource=self;

self.tableView.delegate=self;



//默认的下拉刷新和上拉加载

self.tableView.mj_header=[MJRefreshNormalHeaderheaderWithRefreshingBlock:^{



//这个地方是网络请求的处理

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(2NSEC_PER_SEC)),dispatch_get_main_queue(),^{

[self.tableView.mj_headerendRefreshing];

});

}];

self.tableView.mj_footer=[MJRefreshAutoNormalFooterfooterWithRefreshingBlock:^{

//这个地方是网络请求的处理

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(2NSEC_PER_SEC)),dispatch_get_main_queue(),^{

[self.tableView.mj_footerendRefreshing];

});

}];

}

return_tableView;

}





2.显示动画



头部刷新控件:MJRefreshGifHeader



尾部刷新控件:MJRefreshAutoGifFooter/MJRefreshBackGifFooter



复制代码

复制代码

-(UITableView)tableView

{

if(!_tableView)

{

self.tableView=[[UITableViewalloc]initWithFrame:CGRectZerostyle:UITableViewStylePlain];

self.tableView.dataSource=self;

self.tableView.delegate=self;

MJRefreshGifHeaderheader=[MJRefreshGifHeaderheaderWithRefreshingBlock:^{

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(3NSEC_PER_SEC)),dispatch_get_main_queue(),^{

[self.tableView.mj_headerendRefreshing];

});

}];



NSMutableArrayarrayM=[NSMutableArrayarrayWithCapacity:0];

for(inti=0;i<30;i++){

UIImageimage=[UIImageimageNamed:[NSStringstringWithFormat:@"xz_flower_%d",i+1]];

[arrayMaddObject:image];

}

//设置普通状态下的动画图片-->静止的一张图片

NSArraynormalImagesArray=@[[UIImageimageNamed:@"xz_flower_1"]];

[headersetImages:normalImagesArrayforState:MJRefreshStateIdle];

//设置即将刷新状态的动画图片

[headersetImages:arrayMforState:MJRefreshStatePulling];

//设置正在刷新状态的动画图片

[headersetImages:arrayMforState:MJRefreshStateRefreshing];

//设置header

self.tableView.mj_header=header;

}

return_tableView;

}





3.设置刷新控件的时间和状态的显示或者隐藏



-(UITableView)tableView

{

if(!_tableView)

{

self.tableView=[[UITableViewalloc]initWithFrame:CGRectZerostyle:UITableViewStylePlain];

self.tableView.dataSource=self;

self.tableView.delegate=self;

MJRefreshGifHeaderheader=[MJRefreshGifHeaderheaderWithRefreshingBlock:^{

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(3NSEC_PER_SEC)),dispatch_get_main_queue(),^{

[self.tableView.mj_headerendRefreshing];

});

}];



NSMutableArrayarrayM=[NSMutableArrayarrayWithCapacity:0];

for(inti=0;i<30;i++){

UIImageimage=[UIImageimageNamed:[NSStringstringWithFormat:@"xz_flower_%d",i+1]];

[arrayMaddObject:image];

}



NSArraynormalImagesArray=@[[UIImageimageNamed:@"xz_flower_1"]];

[headersetImages:normalImagesArrayforState:MJRefreshStateIdle];



[headersetImages:arrayMforState:MJRefreshStatePulling];



[headersetImages:arrayMforState:MJRefreshStateRefreshing];





//隐藏时间

header.lastUpdatedTimeLabel.hidden=YES;

//隐藏状态

header.stateLabel.hidden=YES;



//设置header

self.tableView.mj_header=header;

}

return_tableView;

}

复制代码

复制代码





4.自定义刷新控件的文字大小和颜色



复制代码

复制代码

-(UITableView)tableView

{

if(!_tableView)

{

self.tableView=[[UITableViewalloc]initWithFrame:CGRectZerostyle:UITableViewStylePlain];

self.tableView.dataSource=self;

self.tableView.delegate=self;

MJRefreshNormalHeaderheader=[MJRefreshNormalHeaderheaderWithRefreshingBlock:^{

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(2NSEC_PER_SEC)),dispatch_get_main_queue(),^{

[self.tableView.mj_headerendRefreshing];

});

}];



//设置文字

[headersetTitle:@"下拉刷新"forState:MJRefreshStateIdle];

[headersetTitle:@"更新"forState:MJRefreshStatePulling];

[headersetTitle:@"Loading..."forState:MJRefreshStateRefreshing];



//设置字体

header.stateLabel.font=[UIFontsystemFontOfSize:15];

header.lastUpdatedTimeLabel.font=[UIFontsystemFontOfSize:12];



//设置颜色

header.stateLabel.textColor=[UIColorredColor];

header.lastUpdatedTimeLabel.textColor=[UIColorredColor];

[headerbeginRefreshing];

self.tableView.mj_header=header;

return_tableView;

}



5.当全部加载完毕的时候,改变尾部刷新控件的显示(不允许再刷新)



-(UITableView)tableView

{

if(!_tableView)

{

self.tableView=[[UITableViewalloc]initWithFrame:CGRectZerostyle:UITableViewStylePlain];

self.tableView.dataSource=self;

self.tableView.delegate=self;

MJRefreshAutoNormalFooterfooter=[MJRefreshAutoNormalFooterfooterWithRefreshinwww.baiyuewang.netgBlock:^{

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(2NSEC_PER_SEC)),dispatch_get_main_queue(),^{

[self.tableView.mj_footerendRefreshing];

[self.tableView.mj_footerendRefreshingWithNoMoreData];

});

}];

self.tableView.mj_footer=footer;

}

return_tableView;

重设加载完毕



[self.tableView.mj_footerresetNoMoreData];

6.自定义刷新控件



继承MJRefreshHeader/MJRefreshGifHeader/MJRefreshAutoGifFooter/MJRefreshBackGifFooter/MJRefreshAutoFooter/MJRefreshBackFooter

#import"MJRefreshHeader.h"

@interfaceMCDIYHeader:MJRefreshHeader

@end

#import"MCDIYHeader.h"



@interfaceMCDIYHeader()



@property(weak,nonatomic)UILabellabel;

@property(weak,nonatomic)UISwitchs;

@property(weak,nonatomic)UIImageViewlogo;

@property(weak,nonatomic)UIActivityIndicatorViewloading;



@end



@implementationMCDIYHeader



#pragmamark-重写方法

#pragmamark在这里做一些初始化配置(比如添加子控件)

-(void)prepare{



[superprepare];



//设置控件的高度

self.mj_h=50;



//添加label

UILabellabel=[[UILabelalloc]init];

label.textColor=[UIColorcolorWithRed:1.0green:0.5blue:0.0alpha:1.0];

label.font=[UIFontboldSystemFontOfSize:16];

label.textAlignment=NSTextAlignmentCenter;

[selfaddSubview:label];

self.label=label;

//打酱油的开关

UISwitchs=[[UISwitchalloc]init];

[selfaddSubview:s];

self.s=s;

//logo

UIImageViewlogo=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"Logo"]];

logo.contentMode=UIViewContentModeScaleAspectFit;

[selfaddSubview:logo];

self.logo=logo;

//loading

UIActivityIndicatorViewloading=[[UIActivityIndicatorViewalloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

[selfaddSubview:loading];

self.loading=loading;

}



#pragmamark在这里设置子控件的位置和尺寸

-(void)placeSubviews

{

[superplaceSubviews];

self.label.frame=self.bounds;

self.logo.bounds=CGRectMake(0,0,self.bounds.size.width,100);

self.logo.center=CGPointMake(self.mj_w0.5,-self.logo.mj_h+20);

self.loading.center=CGPointMake(self.mj_w-30,self.mj_h0.5);

#pragmamark监听scrollView的contentOffset改变

-(void)scrollViewContentOffsetDidChange:(NSDictionary)change

[superscrollViewContentOffsetDidChange:change]

#pragmamark监听scrollView的contentSize改变

-(void)scrollViewContentSizeDidChange:(NSDictionary)change

[superscrollViewContentSizeDidChange:change];

#pragmamark监听scrolwww.tt951.comlView的拖拽状态改变

-(void)scrollViewPanStateDidChange:(NSDictionary)change

[superscrollViewPanStateDidChange:change];

#pragmamark监听控件的刷新状态

-(void)setState:(MJRefreshState)state

MJRefreshCheckState;

switch(state){

caseMJRefreshStateIdle:

[self.loadingstopAnimating];

[self.ssetOn:NOanimated:YES];

self.label.text=@"赶紧下拉吖(开关是打酱油滴)";

break;

caseMJRefreshStatePulling:

[self.loadingstopAnimating];

[self.ssetOn:YESanimated:YES];

self.label.text=@"赶紧放开我吧(开关是打酱油滴)";

break;

caseMJRefreshStateRefreshing:

[self.ssetOn:YESanimated:YES];

self.label.text=@"加载数据中(开关是打酱油滴)";

[self.loadingstartAnimating];

break;

default:

break;

}



#pragmamark监听拖拽比例(控件被拖出来的比例)

-(void)setPullingPercent:(CGFloat)pullingPercent

{

[supersetPullingPercent:pullingPercent];



//1.00.50.0

//0.50.00.5

CGFloatred=1.0-pullingPercent0.5;

CGFloatgreen=0.5-0.5pullingPercent;

CGFloatblue=0.5pullingPercent;

self.label.textColor=[UIColorcolorWithRed:redgreen:greenblue:bluealpha:1.0];

}



@end



使用:





-(UITableView)tableView

{

if(!_tableView)

{

self.tableView=[[UITableViewalloc]initWithFrame:CGRectZerostyle:UITableViewStylePlain];

self.tableView.dataSource=self;

self.tableView.delegate=self;



//使用自定的刷新控件

self.tableView.mj_header=[MCDIYHeaderheaderWithRefreshingBlock:^{



dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(2NSEC_PER_SEC)),dispatch_get_main_queue(),^{

[self.tableView.mj_headerendRefreshing];

});

[self.tableView.mj_headerbeginRefreshing];

}];

}

return_tableView;

}

献花(0)
+1
(本文系thedust79首藏)