您的位置:首页 > 其它

第三方轮子处理内容的汇总

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);
}];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: