RKOTools
自己平时写的一个小工具库,上传到 GitHub 中且支持 CocoaPods
,方便自己使用。不断更新完善中。
注意: 1.4.0
之前的版本集成了自己写的一些控件,从 1.4.0
版本开始,这些控件不再集成到 RKOTools
库中了,将会单独提供并支持 CocoaPods
。该页面则做目录之用,将会列出所有控件。
目录
RKOTools
这里是一些平时使用的一些工具类。
集成:
pod 'RKOTools', '~> 1.4.4'
RKOCell
从 xib
或者自定义 Cell
中快速获取 Cell
的一个小工具。接口如下所示:
/**
快速获取 cell
@param tableView 当前的tableView
@return 一个普通的cell
*/
+ (instancetype)cell:(UITableView *)tableView;
/**
从xib中获取cell
@param tableView 当前的tableView
@return 从xib中获取到的cell
*/
+ (instancetype)xibCell:(UITableView *)tableView;
/**
获取一个空白的cell
@param tableView 当前的tableView
@return 一个空白的cell
*/
+ (id)blankCell:(UITableView *)tableView;
NetWorkTool
自定义封装的 AFNetworking
。初学乍道还不是很完善。
接口提供如下几个宏定义:
// 您可以按照需求随意修改下面的宏的值,也可以在您的.pch文件中重新定义下面的宏。使您的代码逻辑看起来更加易读。
// 请注意不要重名。
// 内存缓存大小。
#define MEMCAPA 5
// 磁盘缓存大小。
#define DISKCAPA MEMCAPA * 2
// 超时时长,默认15秒。
#define TIMEOUT 15
// 缓存的文件夹名,请在您的ViewController.m中对该对象赋值。如:NSString * const diskPath = @"WebCache";
UIKIT_EXTERN NSString * const diskPath;
// 定义baseURL,请在您的ViewController.m中对该对象赋值。如:NSString * const baseURL = @"http://httpbin.org/";
UIKIT_EXTERN NSString * const baseURL;
- 注意:在
RKONetWorkTool.h
文件中,为了避免添加到CocoaPods不通过,对diskPath
和baseURL
进行了定义。在您使用的时候建议进行删除,将定义写在您的代码中。
RKONetWorkTool
提供7个方法,声明如下:
POST方法:
/**
POST 网络请求
@param url 请求地址(不需要包含baseURL)
@param param 请求参数 (没有参数, 传 nil 即可)
@param success 成功回调
@param failure 请求错误回调
*/
+ (void)POSTWithPath:(NSString *)url
param:(id)param
success:(void (^)(id dataObject))success
failure:(void (^)(NSError *error))failure;
GET方法:
/**
GET 网络请求 获取JSON (自动JSON序列化)
@param url 请求地址(不需要包含baseURL)
@param param 请求参数 (没有参数, 传 nil 即可)
@param success 成功回调
@param failure 请求错误回调
*/
+ (void)GETJSONWithPath:(NSString *)url
param:(id)param
success:(void (^)(id dataObject))success
failure:(void (^)(NSError *error))failure;
/**
GET 网络请求 获取HTTP (内部不进行JSON序列化)
@param url 请求地址(不需要包含baseURL)
@param param 请求参数 (没有参数, 传 nil 即可)
@param success 成功回调
@param failure 请求错误回调
*/
+ (void)GETHTTPWithPath:(NSString *)url
param:(id)param
success:(void (^)(id dataObject))success
failure:(void (^)(NSError *error))failure;
download方法
/**
download 网络请求 自定义文件路径
@param url 请求地址(不需要包含baseURL)
@param filePath 文件下载路径(如果传nil则存入Caches)
@param progress 下载进度回调,第一个参数为未处理的进度,第二个参数为带%的进度字符串。(block在主线程中执行)
@param success 成功回调
@param failure 请求错误回调
*/
+ (void)downloadWithPath:(NSString *)url
filePath:(NSString *)filePath
progress:(void (^)(double_t fractionCompleted, NSString *progressStr))progress
success:(void (^)(id dataObject))success
failure:(void (^)(NSError *error))failure;
/**
download 网络请求 默认保存到Caches
@param url 请求地址(不需要包含baseURL)
@param progress 下载进度回调,第一个参数为未处理的进度,第二个参数为带%的进度字符串。(block在主线程中执行)
@param success 成功回调
@param failure 请求错误回调
*/
+ (void)downloadWithPath:(NSString *)url
progress:(void (^)(double_t fractionCompleted, NSString *progressStr))progress
success:(void (^)(id dataObject))success
failure:(void (^)(NSError *error))failure;
upload方法:
/**
upload 网络请求 (同步)
@param url 请求地址(不需要包含baseURL)
@param fileName 要上传的文件名
@param progress 下载进度回调,第一个参数为未处理的进度,第二个参数为带%的进度字符串。(block在主线程中执行)
@param success 成功回调
@param failure 请求错误回调
*/
+ (void)uploadSynWithPath:(NSString *)url
fileName:(NSString *)fileName
progress:(void (^)(double_t fractionCompleted, NSString *progressStr))progress
success:(void (^)(id dataObject))success
failure:(void (^)(NSError *error))failure;
/**
upload 网络请求 (异步)
@param url 请求地址 (必须包含baseURL在内的使用全地址)
@param fileName 要上传的文件名
@param assocName 与指定数据进行关联的名称
@param progress 下载进度回调,第一个参数为未处理的进度,第二个参数为带%的进度字符串。(block在主线程中执行)
@param success 成功回调
@param failure 请求错误回调
*/
+ (void)uploadAsynWithPath:(NSString *)url
fileName:(NSString *)fileName
associatedName:(NSString *)assocName
progress:(void (^)(double_t, NSString *))progress
success:(void (^)(id))success
failure:(void (^)(NSError *))failure;
另外还额外提供了一个单例方法:
/**
单例方法 内配置了baseURL与超时时长,超时时长默认15s。
@return RKONetWorkTool类对象。
*/
+ (instancetype)sharedManager;
提供一个协议 RKONetWorkToolDelegate
,协议声明如下:
/**
RKONetWorkToolDelegate 代理协议,用以提供设置无网络时候设置Alert的方法。
之所以使用代理而不是直接把Alert写在本类中,是为了开放接口,方便使用者定义自己的Alert,而不用进到本类中修改代码。
*/
@protocol RKONetWorkToolDelegate <NSObject>
- (void)networkStaAlertWithNetWorkTool:(RKONetWorkTool *)netWorkTool;
@end
遵守该协议并实现 networkStaAlertWithNetWorkTool:
方法,即可设置在无网络时的弹窗提示。
CloseKeyBoard
UITableView
的分类,点击空白处关闭键盘的小工具。在需要的地方引入头文件即可
转载自简书:
iOS利用响应链机制点击tableview空白处关闭键盘评论中的鱼鱼鱼四只鱼提供的代码。
CollecionLog
NSDictionary
和 NSArray
的分类,拼接字符串,解决字典和数组中输出中文的时候是 unicode
编码的问题
TopViewController
UIViewController
的分类,用来获取当前界面真在显示的 ViewController
,接口部分如下所示:
@interface UIViewController (RKOTopViewController)
+ (UIViewController *)topViewController;
@end
在需要的地方导入头文件,调用 topViewController
方法即可。
UIView+StoryBoard
原先 CALayer+Additions
的代替品。
UIView
的分类。使用~~IB_DESIGNABLE
及~~ IBInspectable
,可以在 StoryBoard
中快速设置视图圆角、边框以及阴影。
并且提供一个空白的UIView
子类RKOBaseStoryBoardView
,如果您在StoryBoard
中的空白UIView
需要所见即所得,那么可以选择关联到该类上。
具体来说我们提供的属性如下:
/** 圆角。 */
@property (nonatomic,assign) IBInspectable CGFloat cornerRadius;
/** 边框宽度和颜色。 */
@property (nonatomic,assign) IBInspectable CGFloat borderWidth;
@property (nonatomic,strong) IBInspectable UIColor *borderColor;
/** 阴影。 */
@property (nonatomic,assign) IBInspectable float shadowOpacity;
@property (nonatomic,strong) IBInspectable UIColor *shadowColor;
@property (nonatomic,assign) IBInspectable CGFloat shadowRadius;
@property (nonatomic,assign) IBInspectable CGSize shadowOffset;
在StoryBoard
中如下所示:
- 注意:如果您有如下警告,请在podfile
文件中添加use_frameworks!
语句
# IB Designables: Failed to render and update auto layout status for WANBaseVi....
- 注意: 在
Xcode 9
以及iOS 11
中,IB_DESIGNABLE
宏在Objective-C
中依然存在bug,且暂时无法修复,故该控件还是放弃使用了这个宏。其衍生基类暂时保存。
ImageWithColor
UIImage
的分类方法,可以根据某一颜色生成一张图片,方便设置 UIButton
的背景图。
使用时调用下面的方法,传入颜色即可。
+ (UIImage *)imageWithColor:(UIColor *)color;
DebugDescription
NSObject
的分类。方便我们在使用 po
打印模型时,输出其下元素的具体内容而非单一地址。
重写了 debugDescription
方法。无需调用,集成到项目中就可以直接使用。
参照 iOS模型打印 编写。
FastFrame
因其与 Masonry 冲突,故从库中删除。如果您有需要,可 点击这里 ,查看相关代码与记录在 README
文件中的 API 说明。
RKOControl
安利一下自己写的另外一个控件库。原本和 RKOTools
在一个库下,后来觉得有点冗余所以分成了两个库。
下面几个都是封装的一些小控件。具体介绍不再在该页面提供,请点击对应的 Github 页面查看。
RKONetworkAlert
集成:
pod 'RKONetworkAlert', '~> 1.0.0'
RKOTextView
地址:RKOTextView
集成:
pod 'RKOTextView', '~> 1.1.0'
RKOTopAlert
地址:RKOTopAlert
集成:
pod 'RKOTopAlert', '~> 1.0.3'
RKOTabBar
封装的一个 TabBar
,但是效果并是很好....想了想还是不放在这里了,几乎用不到,每次都要删除怪麻烦的。
BLOG
本人课余时间利用 HEXO
在 GitHub 上搭建的博客。未来部分工具会有对应的 blog 文章对应。在这里也把 blog 的地址贴出来吧:
喵喵喵