第三方轮子处理内容的汇总
2016-06-10 13:35
239 查看
1.#define MAS_SHORTHAND_GLOBALS
#import <Masonry.h>(在pch文件里引入的头文件)
Masonry用于对控件的约束。在切换横竖屏的时候能够保证可见的在固定的位置显示。不会因为切换的时候就变了位置。保证了所要达到的效果。
2.SDWebImage(简化网络图片处理)不用再多写NSURL *url = [NSURL URLWithString:所存的路径,网址,点语法是因为定义了一个分类,在分类中定义了一个只读的属性,可以更简单的调用。
#import <UIImageView+WebCache.h>(在pch文件里引入的头文件)
[cell.iconIV
sd_setImageWithURL:model.roomSrc.yx_URL
placeholderImage:[UIImage
imageNamed:@"AV_slider_thumb1"]];
3.#import <MJRefresh.h>(在pch文件里引入的头文件)
上拉刷新下拉刷新
MJRefresh的脚步刷新分两种
autoNormal(不隐藏脚部文字) 和 backNormal(隐藏脚部文字)
上拉刷新:
self.collectionView.mj_header = [MJRefreshNormalHeader
headerWithRefreshingBlock:^{
//下拉刷新操作,
一定请求的是从0开始
[NetManager
getLive:_dataModel.cateId
offset:0
completionHandler:^(LiveModel *liveModel,
NSError *error) {
[self.collectionView.mj_header
endRefreshing];
if (error) {
NSLog(@"%@", error);
}else{
//_liveModel = liveModel;
//刷新操作,
清空原有的数据
[self.dataList
removeAllObjects];
//addObjectsFromArray:从另一个数组中吧所有元素加到其他数组里
[self.dataList
addObjectsFromArray:liveModel.data];
_offset =
self.dataList.count;
[self.collectionView
reloadData];
//下拉操作也要做是否有更多数据的判断
if (liveModel.data.count ==
kLiveLimit) {
[self.collectionView.mj_footer
resetNoMoreData];
}else{
[self.collectionView.mj_footer
endRefreshingWithNoMoreData];
}
}
}];
}];
[self.collectionView.mj_header
beginRefreshing];
下拉刷新:
self.collectionView.mj_footer = [MJRefreshBackNormalFooter
footerWithRefreshingBlock:^{
[NetManager
getLive:_dataModel.cateId
offset:_offset
completionHandler:^(LiveModel *liveModel,
NSError *error) {
if (error) {
NSLog(@"error %@", error);
}else{
[self.dataList
addObjectsFromArray:liveModel.data];
_offset =
self.dataList.count;
[self.collectionView
reloadData];
//判断返回数据的数量等于20,说明可能还有数据
if (liveModel.data.count ==
kLiveLimit) {
[self.collectionView.mj_footer
endRefreshing];
}else{
//没有更多数据
[self.collectionView.mj_footer
endRefreshingWithNoMoreData
4.#import <MLTransition.h>(在pch文件里引入的头文件)
//解决iOS7右划返回失效问题,
这个是因为自定义导航栏返回按钮导致的
[MLTransition
validatePanBackWithMLTransitionGestureRecognizerType:MLTransitionGestureRecognizerTypeScreenEdgePan];
5.#import <MBProgressHUD.h>(在pch文件里引入的头文件)
//如果当前无网络,
则提示用户 没有网络
if (!kAppDelegate.isOnLine) {
[kAppDelegate.window
showWarning:@"当前没有网络!"];
- (void)showWarning:(NSString *)msg{
//为了保证线程安全:例如调用此方法的人是在子线程中调用的.
dispatch_async(dispatch_get_main_queue(), ^{
MBProgressHUD *hud = [MBProgressHUD
showHUDAddedTo:self
animated:YES];
hud.mode =
MBProgressHUDModeText;
hud.labelText = msg;
[hud hide:YES
afterDelay:kAlertDuration];
});
}
6.#import <CocoaLumberjack.h> (在pch文件里引入的头文件)
替换NSLog
在pch文件里宏定义
#ifdef DEBUG //开发阶段
static const
int ddLogLevel = DDLogLevelVerbose;
#else
static const
int ddLogLevel = DDLogLevelError;
#endif
//注册DDLog(当然注册的时候是在AppDelegate自定义分类的一个自定义的方法中注册的)
[DDLog
addLogger:[DDASLLogger
sharedInstance]];
[DDLog
addLogger:[DDTTYLogger
sharedInstance]];
[[DDTTYLogger
sharedInstance] setColorsEnabled:YES];
cocoaLumberjack
解决问题: NSLog本身打印十分消耗资源, 并且没有分级打印功能.
比如: 只打印警告, 只打印普通信息等等
调试的时候打印, 发布上架之后不打印
7.把系统原生的target+Selector, delegate方式 转化为block方式
#import <BlocksKit.h>(在pch文件里引入的头文件)
#import <BlocksKit+UIKit.h>(在pch文件里引入的头文件)
#import <BlocksKit+MessageUI.h>(在pch文件里引入的头文件)
UIBarButtonItem *backItem = [[UIBarButtonItem
alloc] bk_initWithTitle:@"返回"
style:UIBarButtonItemStyleDone
handler:^(id sender) {
[self.navigationController
popViewControllerAnimated:YES];
}];
8.#import <NSObject+YYModel.h> (在pch文件里引入的头文件)
为解析网络上获取的数据提供更简便的方法
判断如果有数组的要进行解析
+ (NSDictionary<NSString *,id> *)modelContainerPropertyGenericClass
判断如果有key被替换的 return
@{@"cateId" :
@"cate_id”};用前面的替换后面的
+(NSDictionary<NSString *,id> *)modelCustomPropertyMapper
9.#import <AFNetworking.h>(在pch文件里引入的头文件)
对网络上的数据进行解析。
接口:
+(id)GET:(NSString *)path parameters:(NSDictionary *)parameters progress:(void(^)(NSProgress
*progress))downloadProgress completionHandler:(void(^)(id jsonObj,NSError *error))completionHandler;
+(id)POST:(NSString *)path parameters:(NSDictionary *)parameters progress:(void(^)(NSProgress
*progress))downloadProgress completionHandler:(void(^)(id jsonObj,NSError *error))completionHandler;
方法的实现:
+(id)GET:(NSString *)path parameters:(NSDictionary *)parameters progress:(void
(^)(NSProgress *))downloadProgress completionHandler:(void (^)(id,
NSError *))completionHandler{
AFHTTPSessionManager *manager = [AFHTTPSessionManager
manager];
manager.requestSerializer.timeoutInterval =
30;
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObjects:@"application/json",
@"text/json", @"text/plain",
@"text/html", @"text/javascript",
nil];
return [manager GET:path
parameters:parameters progress:downloadProgress
success:^(NSURLSessionDataTask *
_Nonnull task, id
_Nullable responseObject) {
!completionHandler ?: completionHandler(responseObject,nil);
} failure:^(NSURLSessionDataTask *
_Nullable task, NSError *
_Nonnull error) {
!completionHandler ?: completionHandler(nil,error);
}];
}
+(id)POST:(NSString *)path parameters:(NSDictionary *)parameters progress:(void
(^)(NSProgress *))downloadProgress completionHandler:(void (^)(id,
NSError *))completionHandler{
AFHTTPSessionManager *manager = [AFHTTPSessionManager
manager];
manager.requestSerializer.timeoutInterval =
30;
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObjects:@"application/json",
@"text/json", @"text/plain",
@"text/html", @"text/javascript",
nil];
return [manager
GET:path parameters:parameters
progress:downloadProgress
success:^(NSURLSessionDataTask *
_Nonnull task, id
_Nullable responseObject) {
!completionHandler ?: completionHandler(responseObject,nil);
} failure:^(NSURLSessionDataTask *
_Nullable task, NSError *
_Nonnull error) {
!completionHandler ?: completionHandler(nil,error);
}];
}
#import <Masonry.h>(在pch文件里引入的头文件)
Masonry用于对控件的约束。在切换横竖屏的时候能够保证可见的在固定的位置显示。不会因为切换的时候就变了位置。保证了所要达到的效果。
2.SDWebImage(简化网络图片处理)不用再多写NSURL *url = [NSURL URLWithString:所存的路径,网址,点语法是因为定义了一个分类,在分类中定义了一个只读的属性,可以更简单的调用。
#import <UIImageView+WebCache.h>(在pch文件里引入的头文件)
[cell.iconIV
sd_setImageWithURL:model.roomSrc.yx_URL
placeholderImage:[UIImage
imageNamed:@"AV_slider_thumb1"]];
3.#import <MJRefresh.h>(在pch文件里引入的头文件)
上拉刷新下拉刷新
MJRefresh的脚步刷新分两种
autoNormal(不隐藏脚部文字) 和 backNormal(隐藏脚部文字)
上拉刷新:
self.collectionView.mj_header = [MJRefreshNormalHeader
headerWithRefreshingBlock:^{
//下拉刷新操作,
一定请求的是从0开始
[NetManager
getLive:_dataModel.cateId
offset:0
completionHandler:^(LiveModel *liveModel,
NSError *error) {
[self.collectionView.mj_header
endRefreshing];
if (error) {
NSLog(@"%@", error);
}else{
//_liveModel = liveModel;
//刷新操作,
清空原有的数据
[self.dataList
removeAllObjects];
//addObjectsFromArray:从另一个数组中吧所有元素加到其他数组里
[self.dataList
addObjectsFromArray:liveModel.data];
_offset =
self.dataList.count;
[self.collectionView
reloadData];
//下拉操作也要做是否有更多数据的判断
if (liveModel.data.count ==
kLiveLimit) {
[self.collectionView.mj_footer
resetNoMoreData];
}else{
[self.collectionView.mj_footer
endRefreshingWithNoMoreData];
}
}
}];
}];
[self.collectionView.mj_header
beginRefreshing];
下拉刷新:
self.collectionView.mj_footer = [MJRefreshBackNormalFooter
footerWithRefreshingBlock:^{
[NetManager
getLive:_dataModel.cateId
offset:_offset
completionHandler:^(LiveModel *liveModel,
NSError *error) {
if (error) {
NSLog(@"error %@", error);
}else{
[self.dataList
addObjectsFromArray:liveModel.data];
_offset =
self.dataList.count;
[self.collectionView
reloadData];
//判断返回数据的数量等于20,说明可能还有数据
if (liveModel.data.count ==
kLiveLimit) {
[self.collectionView.mj_footer
endRefreshing];
}else{
//没有更多数据
[self.collectionView.mj_footer
endRefreshingWithNoMoreData
4.#import <MLTransition.h>(在pch文件里引入的头文件)
//解决iOS7右划返回失效问题,
这个是因为自定义导航栏返回按钮导致的
[MLTransition
validatePanBackWithMLTransitionGestureRecognizerType:MLTransitionGestureRecognizerTypeScreenEdgePan];
5.#import <MBProgressHUD.h>(在pch文件里引入的头文件)
//如果当前无网络,
则提示用户 没有网络
if (!kAppDelegate.isOnLine) {
[kAppDelegate.window
showWarning:@"当前没有网络!"];
- (void)showWarning:(NSString *)msg{
//为了保证线程安全:例如调用此方法的人是在子线程中调用的.
dispatch_async(dispatch_get_main_queue(), ^{
MBProgressHUD *hud = [MBProgressHUD
showHUDAddedTo:self
animated:YES];
hud.mode =
MBProgressHUDModeText;
hud.labelText = msg;
[hud hide:YES
afterDelay:kAlertDuration];
});
}
6.#import <CocoaLumberjack.h> (在pch文件里引入的头文件)
替换NSLog
在pch文件里宏定义
#ifdef DEBUG //开发阶段
static const
int ddLogLevel = DDLogLevelVerbose;
#else
static const
int ddLogLevel = DDLogLevelError;
#endif
//注册DDLog(当然注册的时候是在AppDelegate自定义分类的一个自定义的方法中注册的)
[DDLog
addLogger:[DDASLLogger
sharedInstance]];
[DDLog
addLogger:[DDTTYLogger
sharedInstance]];
[[DDTTYLogger
sharedInstance] setColorsEnabled:YES];
cocoaLumberjack
解决问题: NSLog本身打印十分消耗资源, 并且没有分级打印功能.
比如: 只打印警告, 只打印普通信息等等
调试的时候打印, 发布上架之后不打印
7.把系统原生的target+Selector, delegate方式 转化为block方式
#import <BlocksKit.h>(在pch文件里引入的头文件)
#import <BlocksKit+UIKit.h>(在pch文件里引入的头文件)
#import <BlocksKit+MessageUI.h>(在pch文件里引入的头文件)
UIBarButtonItem *backItem = [[UIBarButtonItem
alloc] bk_initWithTitle:@"返回"
style:UIBarButtonItemStyleDone
handler:^(id sender) {
[self.navigationController
popViewControllerAnimated:YES];
}];
8.#import <NSObject+YYModel.h> (在pch文件里引入的头文件)
为解析网络上获取的数据提供更简便的方法
判断如果有数组的要进行解析
+ (NSDictionary<NSString *,id> *)modelContainerPropertyGenericClass
判断如果有key被替换的 return
@{@"cateId" :
@"cate_id”};用前面的替换后面的
+(NSDictionary<NSString *,id> *)modelCustomPropertyMapper
9.#import <AFNetworking.h>(在pch文件里引入的头文件)
对网络上的数据进行解析。
接口:
+(id)GET:(NSString *)path parameters:(NSDictionary *)parameters progress:(void(^)(NSProgress
*progress))downloadProgress completionHandler:(void(^)(id jsonObj,NSError *error))completionHandler;
+(id)POST:(NSString *)path parameters:(NSDictionary *)parameters progress:(void(^)(NSProgress
*progress))downloadProgress completionHandler:(void(^)(id jsonObj,NSError *error))completionHandler;
方法的实现:
+(id)GET:(NSString *)path parameters:(NSDictionary *)parameters progress:(void
(^)(NSProgress *))downloadProgress completionHandler:(void (^)(id,
NSError *))completionHandler{
AFHTTPSessionManager *manager = [AFHTTPSessionManager
manager];
manager.requestSerializer.timeoutInterval =
30;
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObjects:@"application/json",
@"text/json", @"text/plain",
@"text/html", @"text/javascript",
nil];
return [manager GET:path
parameters:parameters progress:downloadProgress
success:^(NSURLSessionDataTask *
_Nonnull task, id
_Nullable responseObject) {
!completionHandler ?: completionHandler(responseObject,nil);
} failure:^(NSURLSessionDataTask *
_Nullable task, NSError *
_Nonnull error) {
!completionHandler ?: completionHandler(nil,error);
}];
}
+(id)POST:(NSString *)path parameters:(NSDictionary *)parameters progress:(void
(^)(NSProgress *))downloadProgress completionHandler:(void (^)(id,
NSError *))completionHandler{
AFHTTPSessionManager *manager = [AFHTTPSessionManager
manager];
manager.requestSerializer.timeoutInterval =
30;
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObjects:@"application/json",
@"text/json", @"text/plain",
@"text/html", @"text/javascript",
nil];
return [manager
GET:path parameters:parameters
progress:downloadProgress
success:^(NSURLSessionDataTask *
_Nonnull task, id
_Nullable responseObject) {
!completionHandler ?: completionHandler(responseObject,nil);
} failure:^(NSURLSessionDataTask *
_Nullable task, NSError *
_Nonnull error) {
!completionHandler ?: completionHandler(nil,error);
}];
}
相关文章推荐
- 设计模式---简单工场模式
- 打开gps定位-->发回短信&拦截指令&锁屏&销毁数据&ComponentName
- 利用wrapper打包java编写的服务注册window服务
- 网络 协议
- 【GOF23设计模式】_装饰模式_IO流底层架构_装饰和桥接模式的区别JAVA240
- Android如何隐藏底部虚拟按键
- 农村土地确权之调查公示 —— ArcGIS中地块分布图标注设置说明[地块分布图制作]
- 【leetcode】96. Unique Binary Search Trees
- CSS3实现炫酷进度条
- PowerDesigner连接数据库附PowerDesigner15.1汉化破解版
- ACM:蓝桥杯:开灯问题
- 求1!+2!+3!+......+n!
- 农村土地确权之调查公示 —— 地块分布图制作说明
- STM32F0xx_PWR低功耗配置详细过程
- 修改js confirm alert 提示框文字的简单实例
- meter度量值,也可用作进度条
- 创建自定义的RouteBase实现(Creating a Custom RouteBase Implementation) |定制路由系统 |
- Broadcast广播机制
- JqueryEasyUi追加自定义工具标签
- 111. Minimum Depth of Binary Tree