![(logo)](http://images.cnitblog.com/blog2015/497279/201505/051004492043385.png)
## MJRefresh
* An easy way to use pull-to-refresh
* 用法简单的下拉刷新框架:一行代码搞定
## Contents
* Getting Started
* [Features【支持哪些控件的刷新】](#支持哪些控件的刷新)
* [Installation【如何使用MJRefresh】](#如何使用MJRefresh)
* [Who's using【已经超过上百个App正在使用MJRefresh】](#已经超过上百个App正在使用MJRefresh)
* [Classes【MJRefresh类结构图】](#MJRefresh类结构图)
* 常见API
* [MJRefreshComponent.h](#MJRefreshComponent.h)
* [MJRefreshHeader.h](#MJRefreshHeader.h)
* [MJRefreshFooter.h](#MJRefreshFooter.h)
* [MJRefreshAutoFooter.h](#MJRefreshAutoFooter.h)
* Examples
* [Reference【参考】](#参考)
* [下拉刷新01-默认](#下拉刷新01-默认)
* [下拉刷新02-动画图片](#下拉刷新02-动画图片)
* [下拉刷新03-隐藏时间](#下拉刷新03-隐藏时间)
* [下拉刷新04-隐藏状态和时间](#下拉刷新04-隐藏状态和时间)
* [下拉刷新05-自定义文字](#下拉刷新05-自定义文字)
* [下拉刷新06-自定义刷新控件](#下拉刷新06-自定义刷新控件)
* [上拉刷新01-默认](#上拉刷新01-默认)
* [上拉刷新02-动画图片](#上拉刷新02-动画图片)
* [上拉刷新03-隐藏刷新状态的文字](#上拉刷新03-隐藏刷新状态的文字)
* [上拉刷新04-全部加载完毕](#上拉刷新04-全部加载完毕)
* [上拉刷新05-自定义文字](#上拉刷新05-自定义文字)
* [上拉刷新06-加载后隐藏](#上拉刷新06-加载后隐藏)
* [上拉刷新07-自动回弹的上拉01](#上拉刷新07-自动回弹的上拉01)
* [上拉刷新08-自动回弹的上拉02](#上拉刷新08-自动回弹的上拉02)
* [上拉刷新09-自定义刷新控件(自动刷新)](#上拉刷新09-自定义刷新控件(自动刷新))
* [上拉刷新10-自定义刷新控件(自动回弹)](#上拉刷新10-自定义刷新控件(自动回弹))
* [UICollectionView01-上下拉刷新](#UICollectionView01-上下拉刷新)
* [UIWebView01-下拉刷新](#UIWebView01-下拉刷新)
* [期待](#期待)
## <a id="支持哪些控件的刷新"></a>支持哪些控件的刷新
* `UIScrollView`、`UITableView`、`UICollectionView`、`UIWebView`
## <a id="如何使用MJRefresh"></a>如何使用MJRefresh
* cocoapods导入:`pod 'MJRefresh'`
* 手动导入:
* 将`MJRefresh`文件夹中的所有文件拽入项目中
* 导入主头文件:`#import "MJRefresh.h"`
```objc
Base Custom
MJRefresh.bundle MJRefresh.h
MJRefreshConst.h MJRefreshConst.m
UIScrollView+MJExtension.h UIScrollView+MJExtension.m
UIScrollView+MJRefresh.h UIScrollView+MJRefresh.m
UIView+MJExtension.h UIView+MJExtension.m
```
## <a id="已经超过上百个App正在使用MJRefresh"></a>已经超过上百个App正在使用MJRefresh
<img src="http://images0.cnblogs.com/blog2015/497279/201506/141212365041650.png" width="200" height="300">
* 更多App信息可以关注:[M了个J-博客园](http://www.cnblogs.com/mjios/p/4409853.html)
## <a id="MJRefresh类结构图"></a>MJRefresh类结构图
![](http://images0.cnblogs.com/blog2015/497279/201506/132232456139177.png)
- 图中`红色文字的类`:可以直接拿来用
- 下拉刷新控件的种类
- 默认(Normal):`MJRefreshNormalHeader`
- 动图(Gif):`MJRefreshGifHeader`
- 上拉刷新控件的种类
- 自动刷新(Auto)
- 默认(Normal):`MJRefreshAutoNormalFooter`
- 动图(Gif):`MJRefreshAutoGifFooter`
- 自动回弹(Back)
- 默认(Normal):`MJRefreshBackNormalFooter`
- 动图(Gif):`MJRefreshBackGifFooter`
- 图中`非红色文字的类`:拿来继承,用于自定义刷新控件
- 关于如何自定义刷新控件,可以参考下图的类<br>
<img src="http://images0.cnblogs.com/blog2015/497279/201506/141358159107893.png" width="30%" height="30%">
## <a id="MJRefreshComponent.h"></a>MJRefreshComponent.h
```objc
/** 刷新控件的基类 */
@interface MJRefreshComponent : UIView
#pragma mark - 刷新状态控制
/** 进入刷新状态 */
- (void)beginRefreshing;
/** 结束刷新状态 */
- (void)endRefreshing;
/** 是否正在刷新 */
- (BOOL)isRefreshing;
#pragma mark - 其他
/** 根据拖拽比例自动切换透明度 */
@property (assign, nonatomic, getter=isAutomaticallyChangeAlpha) BOOL automaticallyChangeAlpha;
@end
```
## <a id="MJRefreshHeader.h"></a>MJRefreshHeader.h
```objc
@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
```
## <a id="MJRefreshFooter.h"></a>MJRefreshFooter.h
```objc
@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
```
## <a id="MJRefreshAutoFooter.h"></a>MJRefreshAutoFooter.h
```objc
@interface MJRefreshAutoFooter : MJRefreshFooter
/** 是否自动刷新(默认为YES) */
@property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;
/** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
@property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
@end
```
## <a id="参考"></a>参考
```objc
* 由于这个框架的功能较多,就不写具体文字描述其用法
* 大家可以直接参考示例中的MJTableViewController、MJCollectionViewController、MJWebViewController,更为直观快速
```
<img src="http://images0.cnblogs.com/blog2015/497279/201506/141345470048120.png" width="30%" height="30%">
## <a id="下拉刷新01-默认"></a>下拉刷新01-默认
```objc
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
}];
或
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 马上进入刷新状态
[self.tableView.header beginRefreshing];
```
![(下拉刷新01-普通)](http://images0.cnblogs.com/blog2015/497279/201506/141204343486151.gif)
## <a id="下拉刷新02-动画图片"></a>下拉刷新02-动画图片
```objc
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 设置普通状态的动画图片
[header setImages:idleImages forState:MJRefreshStateIdle];
// 设置即将刷新状态的动画图片(一松开就会刷新的�
没有合适的资源?快使用搜索试试~ 我知道了~
iOS hybrid应用demo
共248个文件
h:75个
m:37个
png:21个
4星 · 超过85%的资源 需积分: 9 54 下载量 48 浏览量
2016-01-15
20:39:14
上传
评论
收藏 2.12MB ZIP 举报
温馨提示
这是我的文章“使用UIWebView开发hybrid应用”的配套demo,地址:http://blog.csdn.net/a411358606/article/details/50435636
资源推荐
资源详情
资源评论
收起资源包目录
iOS hybrid应用demo (248个子文件)
03151429f2e6a8e7f409ebde06436df1b1cc8c 208B
046c68323a91ca392095745c45de92e978eb65 69B
09052967dd8640a8fad37212363d309d8709a3 265B
0c786c1a7d71f7ae0bbb6736de11b74c39be05 2KB
0ee6e53535390c9b6c122270bc7b6f4da2427a 607B
100acaeb5ca6dfeadb1dfde801115700dab39c 389B
10ee4b5717a63e271f8d2bd13a0a670afc3f8a 322B
25b14ad1f08c12bea405c5953b0d2e6ea31f5c 2KB
267af3dd5b1836d2443ba0db60bad36d99936f 9KB
3467fbdb73942d10107631752266908db8b904 2KB
34b8242d45a5994cab26d5a2a56be0dec7ac62 199B
3574b585723f7f0034e84fed7abf8cbeb57175 919B
3f0ce163c8033a175d27de6a4e96aadc115625 59B
422daaa67c8a7661b728ae443e9c1e1fd54e20 349B
4346c59e2e94ef99e24ea98995874f98cececf 258B
4364089fdc64fe3b81bcd41462dd55edb7a001 57B
44c7e90eb18423464e86e5a44614557e7126c8 6KB
45768db88c2b3a8637ca2a9346c71516e591ab 1KB
4a164c918651cdd1e11dca5cc62c333f097601 65B
4a3da468ec2fd7850837b9b9c3b205a64c09ee 3KB
5027321479b019f1f83c569679f31c8760c02e 136B
53262f72443403294408f173fd222bfb70e473 240B
56a80632c9bb879f907b717f8b61e10f886b02 318B
5a3086089a6fd906dbc584d6556b2087acfd77 144B
5e179c91ac9ef4525015bf26876ef8ed869eee 639B
66ac2f6e166e8a6c736ee2ac1ed9263fe38df0 51B
6d2f3bb56e8474d49393008be744986bd41c3c 719B
6e769e40def8b7ead44cdd4c75f50647d3a90d 943B
721e1833f03bb0e1b962a84491d7e43e3fef9c 753B
72822e8728ef2951005e49b6c27a2f1da6572d 353B
75c20f8ad213363e35f8b0fdce4f1ca4369b9c 2KB
784fc4b9aecc9cb1c6288093fa2f9e361b7934 228B
7b38f118dbf0361bfbe998a7147e7d4af00e84 2KB
7ed1b8a617a1c51b8643f2cdbc5412deca89f1 177B
8be297029868413991b7e0290282b3de1fa2dd 95B
9055bde4f7e2a32e131d2e5fd1c9a440cd6167 185B
9b76b1c53c643b537c293712de056c1e3c2a4b 7KB
a292886429600d54685e7830582b25824b15f4 231B
a3d4424947790b5a9ed770e8b2eea840124a9e 210B
b156fc48b190bfcbec14816088e41ae63c2a7f 154B
b18bffefa9a8950bd0e948ef0b63f3801994b0 61B
ba6b55f503b4b5792953314667d7ac40a5e860 105B
bfcd4db1bc9300a32f27248a403c54e24c2ae1 285B
c4c160147a908c2b9b145a5bb39722c216ebb9 405B
c53ed217cbf26a3d9ae23c728924da822ba533 3KB
c6215d906736d7b2a439c17cf9ee0776580474 535B
c98c5d9e80159030164f310e84018d1624404a 398B
COMMIT_EDITMSG 15B
config 137B
contents 746B
d1268f21c9600831d38d0e9b4989a80ed6d17c 98B
d2c80d8893178d7e1f2964085b273959bfdc28 201B
d7ef3ad783d2ff2f4474380570c0d766b87ecb 152B
d9eedb9bd16941d8cd2e9fbd9b3f90b72457f7 1KB
db4b7d0f260e2a1198aa721eef5c8452c693a7 228B
description 73B
df009a25f7885068e4a4b13c5eee10cd5e1e40 96B
df96a685c4feb45b67a038240e060b141de042 131B
.DS_Store 6KB
.DS_Store 6KB
e1a1798d541d40e2bd5733781cd0e6d089330c 320B
e5a2fd4fb39141ee9955ecd51daa37618edb85 2KB
e7953c801cf16ec89f6b0de84898fb93371754 327B
ea76c2db59dbb9faaab2cda4e40c063970101d 214B
eb235cdd609ef0c9d2484c0cc677dd0ae1f78a 285B
exclude 40B
f32fa044ff3383fd11f9ac6b50d3543f61ded9 462B
fa4ce9fa085eef44dc2dad309867350f9a2f80 1011B
fef1c372f64d19a7ccff5e344e9c1f8b7749b5 3KB
ConfigDef.h 6KB
SVProgressHUD.h 4KB
MJRefreshComponent.h 3KB
CacheManager.h 3KB
Utility.h 3KB
MJRefreshConst.h 2KB
MJRefreshFooter.h 1KB
MJRefreshHeader.h 1KB
UIScrollView+MJRefresh.h 1KB
UIScrollView+MJExtension.h 833B
MJRefreshAutoFooter.h 828B
MJRefreshStateHeader.h 754B
CoreDataManager.h 750B
UIView+MJExtension.h 690B
JPXUIWebViewJSBridge.h 574B
MJRefreshAutoStateFooter.h 573B
MJRefreshBackGifFooter.h 562B
MJRefreshAutoGifFooter.h 562B
HtmlInfo+CoreDataProperties.h 546B
MJRefreshGifHeader.h 546B
MJRefreshBackStateFooter.h 534B
MJRefresh.h 532B
MJRefreshBackNormalFooter.h 434B
MJRefreshNormalHeader.h 418B
MJRefreshAutoNormalFooter.h 372B
HtmlInfo.h 344B
SVIndefiniteAnimatedView.h 342B
MovieViewController.h 313B
WebViewController.h 292B
AppDelegate.h 277B
MD5.h 263B
共 248 条
- 1
- 2
- 3
资源评论
- xiao_csdn2016-08-10好像网络错误呢
- 老青菜2016-06-20demo可以运行,但是工程里的网页一直加载不出来,asp.net 服务器设置有问题
- 果粉叔叔2016-04-05虽然demo可以运行,但是工程里的网页一直加载不出来
夏日踩冰
- 粉丝: 159
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功