Latest 1.4.4
Homepage https://github.com/rakuyoMo/RKOTools
License MIT
Platforms ios 8.0, requires ARC
Authors

自己平时写的一个小工具库,上传到 GitHub 中且支持 CocoaPods ,方便自己使用。不断更新完善中。

注意: 1.4.0 之前的版本集成了自己写的一些控件,从 1.4.0 版本开始,这些控件不再集成到 RKOTools 库中了,将会单独提供并支持 CocoaPods 。该页面则做目录之用,将会列出所有控件。

RKOTools
RKOTools
RKOTools
RKOTools

目录

  1. RKOTools
    1. RKOCell
    2. NetWorkTool
    3. CloseKeyBoard
    4. CollecionLog
    5. TopViewController
    6. UIView+StoryBoard
    7. ImageWithColor
    8. DebugDescription
    9. FastFrame
  2. RKOControl
  3. BLOG

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不通过,对 diskPathbaseURL 进行了定义。在您使用的时候建议进行删除,将定义写在您的代码中。

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

NSDictionaryNSArray 的分类,拼接字符串,解决字典和数组中输出中文的时候是 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中如下所示:

RKOTools

– 注意:如果您有如下警告,请在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

RKOTools
RKOTools
RKOTools
RKOTools

地址:RKONetworkAlert

集成:

 pod 'RKONetworkAlert', '~> 1.0.0'

RKOTextView

RKOTools
RKOTools
RKOTools
RKOTools

地址:RKOTextView

集成:

 pod 'RKOTextView', '~> 1.1.0'

RKOTopAlert

RKOTools
RKOTools
RKOTools
RKOTools

地址:RKOTopAlert

集成:

 pod 'RKOTopAlert', '~> 1.0.3'

RKOTabBar

封装的一个 TabBar ,但是效果并是很好….想了想还是不放在这里了,几乎用不到,每次都要删除怪麻烦的。


BLOG

本人课余时间利用 HEXO 在 GitHub 上搭建的博客。未来部分工具会有对应的 blog 文章对应。在这里也把 blog 的地址贴出来吧:

喵喵喵

Latest podspec

{
    "name": "RKOTools",
    "version": "1.4.4",
    "summary": "One of your own tool libraries",
    "description": "One of your own tool libraries",
    "homepage": "https://github.com/rakuyoMo/RKOTools",
    "license": "MIT",
    "authors": {
        "Rakuyo": "[email protected]"
    },
    "platforms": {
        "ios": "8.0"
    },
    "source": {
        "git": "https://github.com/rakuyoMo/RKOTools.git",
        "tag": "1.4.4"
    },
    "requires_arc": true,
    "subspecs": [
        {
            "name": "RKOCell",
            "source_files": "RKOTools/RKOCell/*.{h,m}"
        },
        {
            "name": "UIView+StoryBoard",
            "source_files": "RKOTools/UIView+StoryBoard/*.{h,m}"
        },
        {
            "name": "CloseKeyBoard",
            "source_files": "RKOTools/CloseKeyBoard/*.{h,m}"
        },
        {
            "name": "CollecionLog",
            "source_files": "RKOTools/CollecionLog/*.{h,m}"
        },
        {
            "name": "NetWorkTool",
            "source_files": "RKOTools/NetWorkTool/*.{h,m}",
            "dependencies": {
                "AFNetworking": [
                    "~> 3.0"
                ]
            }
        },
        {
            "name": "TopViewController",
            "source_files": "RKOTools/TopViewController/*.{h,m}"
        },
        {
            "name": "ImageWithColor",
            "source_files": "RKOTools/ImageWithColor/*.{h,m}"
        },
        {
            "name": "DebugDescription",
            "source_files": "RKOTools/DebugDescription/*.{h,m}"
        }
    ]
}

Pin It on Pinterest

Share This