/KXTools

Some tools I was used in my project

Primary LanguageObjective-C

KXTools

自己由于工作需要而封装的一些基本控件
大家多多交流,多多指教,遇到问题可以联系我QQ: 381377046 ,备注KXTools 我会尽快优化

DEMO

image

目录

  • BaseNavigationController、BaseViewController的介绍
  • 模仿微信的ActionSheet 和 带特殊点击事件的AlertView
  • URL的编码与解码
  • 自定义封装的加密工具类
  • 二次封装系统KeyChain方便使用
  • TouchID的自封装

更新日志

2.17 去除UIButton分类,新增UINavigation、UIViewController的基类,实现不同颜色导航栏之间的无缝对接,KXCodingManager 新增zip解压方法(后台数据采取gzip格式返回)

2.16 新增之前封装好的仿微信的弹框提示,actionSheet 和 alertView

2.15 重新整理了ReadMe 和 调整了价格Label的具体实现

BaseNavigationController 基类

/**
设置NavBar底部线条是否隐藏

@param isHiden 是否隐藏
*/
- (void)setBottomLineViewHiden:(BOOL)isHiden;
/**
设置NavBar底部线条的颜色

@param color 颜色
*/
- (void)setBottomLineViewColor:(UIColor *)color;

BaseNavigationController 同时内部实现了statusBar的childViewController

BaseViewController (UIViewController基类)

实现了在willAppear里记录上一界面的nav状态,及在willDisappear里恢复上一界面的状态

- (void)viewWillAppear:(BOOL)animated
- (void)viewWillDisappear:(BOOL)animated

同时提供了一个自定义导航栏返回按钮图片的方法,同时解决了由于设置了LeftBarItem导致侧滑失效的问题。

/**
自定义返回按钮

@param image 返回按钮的图片
*/
- (void)setCustomBackItemWihtCustomImage:(UIImage *)image;

由于业务的逻辑性,提供了一个侧滑时,触发的方法。当侧滑触发的时候,该方法就会被调用

/**
当用户在侧滑的时候就会触发的方法
*/
- (void)navSideslipAction;

自定义的ActionSheet 和 alertView

样式模仿微信弹框

KXActionSheet

初始化方法,与系统alertView类似

/**
构造方法

@param titleName   标题
@param delegate    代理
@param cancelTitle 取消位置
@param titles      其他按钮(数组形式)
*/
- (instancetype)initWithTitle:(NSString *)titleName delegate:(id <KXActionSheetDelegate>)delegate cancellTitle:(NSString *)cancelTitle andOtherButtonTitles:(NSArray *)titles;

为了方便,我提供了两个方法设置标题内容。一个是自定义一个富文本传进去,但是会覆盖之前设置的文本内容

/**
设置标题字体

@param attributedStr 标题富文本
*/
- (void)setTitleColorWithAttributedStr:(NSMutableAttributedString *)attributedStr;

另一个是提供了一个block 把TitleLabel传出来了,可以在这里设置标题文本

typedef void(^SetTitleBlock)(UILabel *_titleLabel);

- (void)setTitleColorWithAttributedStrWithBlock:(SetTitleBlock)block;

由于业务关系,经常会重点标注某一行,以显示其重要性。因此也提供了一个方法用以标红某一行

/**
标红字体方法

@param index 第几行需要标红
*/
- (void)setImportanceTitleAtIndex:(NSUInteger)index;

同样的由于业务的复杂性,我也提供了一个为某一行添加图片的方法

/**
给某一行设置文字图片

@param index       第几行
@param image       图片
@param edgInsets   图片距文字的边距
@param aligment    按钮的编辑方式
*/
- (void)setSubTitleImageWithIndex:(NSUInteger)index image:(UIImage *)image titleEdgeInsets:(UIEdgeInsets)edgInsets  WithAligment:(UIControlContentHorizontalAlignment)aligment;

展示方法

/**
展示动画
*/
- (void)show;

KXAlertView

初始化方法与系统AlertView类似
这里使用了MLabel,大家可以去他的github查看用法 https://github.com/molon/MLLabel

/**
初始化方法

@param title       标题
@param message     提示
@param cancel      取消按钮
@param andSubTitle 另外一个按钮

@return 实例化对象
*/
- (instancetype)initWithTitle:(NSString *)title andMessage:(NSString *)message delegate:(id <KXAlertViewDelegate>)delegate andCancelButton:(NSString *)cancel andSubTitle:(NSString *)andSubTitle;
/**
设置提示文本中的特殊的点击效果

@param targetStr 目标文本
*/
- (void)setSpacialLinkWithTargetStr:(NSString *)targetStr;

展示方法

/**
展示动画
*/
- (void)show;

NSString+urlCoding

如题所示, url的编码与解码 前一段时间,在项目中遇到再URL请求的时候带上了中文,然后导致编码问题,以致于后台前端都无法接收,因此在传输/解析之前,需要对中文部分进行编码/解码

/**
*  中文编码
*/
+ (instancetype)URLEncodedString:(NSString *)str;

/**
*  中文解码
*/
+ (instancetype)URLDecodedString:(NSString *)str;

利用以上2个方法就可以进行URL的编码/解码啦

FMDBManager

未完成 

因为现在的项目接触到FMDB这个类 因而就根据这个类,对操作指令做出了一下封装,方便新的接触者使用

KXCodingManager

需要导入libz.tbd
base64、AES加密的工具类
使用这个方法进行Manager初始化

- (instancetype)initWithSequreKey:(NSString *)privateKey;

主要功能

Base64编码

/**
*  Base64编码
*  enCodingContent  编码字符串
*  return  内容经过Base64编码之后的字符串
*/
- (NSString *)base64Encoding:(NSString *)enCodingContent;

Base64解码

/**
*  Base64解码
*  deCodingContent  待解码字符串
*  return  内容经过Base64解码之后的字符串
*/
- (NSString *)base64Decoding:(NSString *)deCodingContent;

AES编码

/**
*  AES编码 + base64编码
*  一个字符串,经过 _privateKey 进行AES加密并进行Bser64加密
*  _privateKey 私钥  通过initWithSequreKey创建
*  enCodingContent  编码内容
*  return  编码后的内容
*/
- (NSString *)AESEncoding:(NSString *)enCodingContent;

AES解码

/**
*  AES解码 + base64解码
*  一个经过AES编码过的字符串,通过 _privateKey 解码
*  _privateKey :私钥  通过initWithSequreKey创建
*  deCodingContent  解码内容
*  return 解码后的字符串
*/
- (NSString *)AESDecoding:(NSString *)deCodingContent;

ZIP解码

/**
ZIP解码

@param zipData zip 编码后的数据
@return zip解码后的数据
*/
- (NSData *)decodeZipData:(NSData *)zipData;

KXKeyChainManager 二次封装系统KeyChain

核心方法

保存
+ (void)save:(NSString *)service data:(id)data;

读取
+ (id)load:(NSString *)service;

删除
+ (void)delete:(NSString *)service;

KXTouchIDManager

初步封装TouchID 的流程和操作指令