KJExtensionHandler 1.1.2

KJExtensionHandler 1.1.2

Yalin00维护。



KJExtensionHandler

API & Property整体介绍图文介绍

Github地址简书地址博客地址掘金地址

介绍一下 Category

Objective-C 提供了一种非常灵活的类扩展机制 - 类别(Category),为我们提供了不同于继承的另一种方式来扩展类,我们可以向任何已有的类添加成员函数来实现功能上的扩展,也就是类别仅允许添加成员函数,不能添加数据成员,成员函数可以访问类中的所有数据成员,该类的子类也将继承新添加的成员函数。
1、向一个已经存在的类添加方法(Methods),不需要知道类的源代码,
2、类别的第二大优点是实现了功能的局部化封装,拆分归纳整理类
3、模拟多继承,简单来说就是实现多个协议

总之:简单的理解就是扩展类的方法

类别的局限性

1、类别不能添加新的实例变量,但是类别可以关联属性,简单举个例子

@interface CALayer (KJExtension)
/// 标签记号
@property(nonatomic,assign) NSInteger kTag;
@end

#import <objc/runtime.h>
@implementation CALayer (KJExtension)
- (NSInteger)kTag{
    return [objc_getAssociatedObject(self, _cmd) integerValue];
}
- (void)setKTag:(NSInteger)kTag{
    objc_setAssociatedObject(self, @selector(kTag), @(kTag), OBJC_ASSOCIATION_COPY_NONATOMIC);
}
@end

2、命名冲突,如果类别中的方法和类中已有方法同名,则类别具有更高的优先级。这里值得一提的是,如果有多个类别声明了相同的方法,那么方法实现是按照文件中的加载顺序来加载的,也就是说先加载的方法将不会被后续加载的方法覆盖。简单举个例子

@interface NSObject (A)
- (void)kj_test;
@end

@interface NSObject (B)
- (void)kj_test;
@end

这里有NSObject的两个类别AB,然后A和B都声明实现了kj_test方法,因为加载先后的问题,如果先加载A后加载B,那么就会覆盖掉A的方法,最终调用kj_test方法只会执行B类别的方法,而不会执行A类别的方法。

类别结构体

所有的OC类和对象在Runtime层都是用struct表示

struct category_t {
    const char *name; //类的名字(name)
    classref_t cls; //类(cls)
    struct method_list_t *instanceMethods; //实例方法列表(instanceMethods)
    struct method_list_t *classMethods; //类方法列表(classMethods)
    struct protocol_list_t *protocols; //协议列表(protocols)
    struct property_list_t *instanceProperties; //属性列表(instanceProperties)
};

本库主要包含三大块:UIKit类、Foundation类、Language 多语言类

  • UIButton:图文混排、点击事件封装、扩大点击域、时间间隔限制、倒计时、点击粒子效果等
  • UIView:手势封装、圆角渐变、Xib属性(圆角边框阴影)
  • UITextView:输入框扩展、限制字数、撤销处理、获取文本内部超链接
  • UITextField:占位颜色,线条,图文处理等
  • UILabel:富文本,快捷显示文本位置
  • UISlider:渐变色滑杆,滑杆点击值修改
  • UIImage:截图和裁剪、图片压缩、蒙版处理,图片拼接、图片尺寸处理,滤镜渲染、泛洪算法等
  • UIImage:二维码、条形码生成,动态图播放,水印处理等等
  • CALayer:投影,倒影,内发光,外发光,内阴影,外阴影等
  • UIColor:渐变色,rgba,色相,饱和度等
  • Language:多语言,支持Xib快捷设置
  • Foundation:数组和字典防崩溃处理,数组算法处理,谓词相关,加密解密等等
  • Runtime:列表,方法交换,动态继承等
  • UIDevice:系统相关属性,

Foundation我还整理封装异常处理Crash防护 KJExceptionDemo

Cocoapods安装

pod 'KJExtensionHandler'
pod 'KJExtensionHandler/Foundation'
pod 'KJExtensionHandler/Language' # 多语言模块

目录

更新日志功能介绍效果图打赏作者

关于类型说明

属性:Property
类 & 属性:Class &Gattor
协议:Protocol
实例方法:Instance
类方法:Class
函数:Function

UIView

UIView+KJAnimation 简单动画效果链式封装

功能 类型 API & 属性
隐式动画 实例方法 kj_animationImplicitDuration:animations
移动时刻显示阴影效果 实例方法 kj_movingShadow
动画组 实例方法 kj_animationMoreAnimations
旋转动画效果 实例方法 kj_animationRotateClockwise:makeParameter
移动动画效果 实例方法 kj_animationMovePoint:makeParameter
缩放动画效果 实例方法 kj_animationZoomMultiple:makeParameter
渐隐动画效果 实例方法 kj_animationOpacity:makeParameter

UIView+KJXib

功能 类型 API & 属性
贝塞尔圆角 属性 bezierRadius
阴影偏移量 属性 shadowOffset
阴影透明度 属性 shadowOpacity
阴影的宽度 属性 shadowWidth
阴影的圆角 属性 shadowRadius
阴影颜色 属性 shadowColor
圆角半径 属性 cornerRadius
边框宽度 属性 borderWidth
边框颜色 属性 borderColor
图片属性 属性 viewImage
判断是否有子视图在滚动 属性 anySubViewScrolling
判断是否有子视图在滚动 实例方法 kj_anySubViewScrolling
判断控件是否显示在主窗口 属性 showKeyWindow
判断控件是否显示在主窗口 实例方法 kj_isShowingOnKeyWindow
顶部控制器 属性 topViewController
当前控制器 属性 viewController
当前控制器 实例方法 kj_currentViewController
Xib创建的View kj_viewFromXib
Xib创建的View kj_viewFromXibWithFrame

UIView+KJRectCorner 进阶版圆角和边框扩展

功能 类型 API & 属性
圆角半径 属性 kj_radius
圆角方向 属性 kj_rectCorner
边框颜色 属性 kj_borderColor
边框宽度 属性 kj_borderWidth
边框方向 属性 kj_borderOrientation

UIView+KJGradient 渐变处理 和 指定图形

功能 类型 API & 属性
返回渐变layer 实例方法 kj_GradientLayerWithColors:Frame:Locations:StartPoint:EndPoint
生成渐变背景色 实例方法 kj_GradientBgColorWithColors:Locations:StartPoint:EndPoint
虚线边框 实例方法 kj_DashedLineColor:lineWidth:spaceAry
画直线 实例方法 kj_DrawLineWithPoint:toPoint:lineColor:lineWidth
画虚线 实例方法 kj_DrawDashLineWithPoint:toPoint:lineColor:lineWidth:lineSpace:lineType
画五角星 实例方法 kj_DrawPentagramWithCenter:radius:color:rate
根据宽高画六边形 实例方法 kj_DrawSexangleWithWidth:LineWidth:StrokeColor:FillColor
根据宽高画八边形 实例方法 kj_DrawOctagonWithWidth:Height:LineWidth:StrokeColor:FillColor:Px:Py

UIView+KJGestureBlock 手势Block

功能 类型 API & 属性
单击手势 实例方法 kj_AddTapGestureRecognizerBlock
手势处理 实例方法 kj_AddGestureRecognizer:block

UIView+KJFrame 轻量级布局

功能 类型 API & 属性
大小 属性 size
位置 属性 origin
x坐标 属性 x
y坐标 属性 y
宽度 属性 width
高度 属性 height
中心点x 属性 centerX
中心点y 属性 centerY
左边距离 属性 left
右边距离 属性 right
顶部距离 属性 top
底部距离 属性 bottom
x + width 属性 maxX
y + height 属性 maxY
Masonry布局后x 属性 masonry_x
Masonry布局后y 属性 masonry_y
Masonry布局后宽度 属性 masonry_width
Masonry布局后高度 属性 masonry_height
将视图中心置于其父视图 实例方法 kj_centerToSuperview
距父视图右边距离 实例方法 kj_rightToSuperview
距父视图下边距离 实例方法 kj_bottomToSuperview
获取子视图的最高Y 实例方法 kj_subviewMaxY
获取子视图的最高X 实例方法 kj_subviewMaxX
寻找子视图 实例方法 kj_FindSubviewRecursively
移除所有子视图 实例方法 kj_removeAllSubviews
隐藏/显示所有子视图 实例方法 kj_hideSubviews:operation
子控件处理手势事件 实例方法 kj_childHitTest:withEvent

UITextView

UITextView+KJBackout 撤销处理,相当于 command + z

功能 类型 API & 属性
是否开启撤销功能 属性 kOpenBackout
撤销输入 实例方法 kj_textViewBackout

UITextView+KJPlaceHolder

功能 类型 API & 属性
占位符文字 属性 placeHolder
占位符Label 属性 placeHolderLabel

UITextView+KJLimitCounter 限制处理

功能 类型 API & 属性
限制字数 属性 limitCount
限制区域右边距 属性 limitMargin
限制区域高度 属性 limitHeight
统计限制字数Label 属性 limitLabel

UITextView+KJHyperlink 超链接点击处理

功能 类型 API & 属性
识别点击TextView里面的超链接网址地址 实例方法 kj_clickTextViewURLCustom:URLHyperlink

UITextField

UITextField+KJExtension 输入框扩展,快速设置账号密码框

功能 类型 API & 属性
设置底部边框线条颜色 属性 bottomLineColor
占位placeholder颜色 属性 placeholderColor
占位文字字体大小 属性 placeholderFontSize
最大长度 属性 maxLength
明文暗文切换 属性 securePasswords
达到最大字符长度 属性 kMaxLengthBolck
文本编辑时刻回调 属性 kTextEditingChangedBolck
设置左边视图,类似账号密码标题 实例方法 kj_leftView
设置右边视图,类似小圆叉 实例方法 kj_rightViewTapBlock:ImageName:Width:Padding

UITabBar

UITabBar+KJBadge 显示小红点

功能 类型 API & 属性
当前的TabBar个数 Protocol kj_tabBarCount
显示小红点 实例方法 kj_showRedBadgeOnItemIndex
隐藏小红点 实例方法 kj_hideRedBadgeOnItemIndex

UISlider

KJColorSlider 渐变色滑块

功能 类型 API & 属性
颜色数组 属性 colors
每个颜色对应的位置信息 属性 locations
颜色的高度 属性 colorHeight
边框宽度 属性 borderWidth
边框颜色 属性 borderColor
回调处理时间 属性 timeSpan
当前进度,用于外界kvo 属性 progress
移动回调处理 属性 kValueChangeBlock
移动结束回调处理 属性 kMoveEndBlock
重新设置UI 实例方法 kj_setUI

UISlider+KJTapValue 滑杆点击改值

功能 类型 API & 属性
是否开启滑杆点击修改值 属性 kTapValue

UIScrollView

UIScrollView+KJEmptyDataSet DZNEmptyDataSet 基础上再次封装没数据时状态

功能 类型 API & 属性
是否正在加载 属性 loading
视图的垂直位置 属性 verticalOffset
空数据图片名 属性 loadedImageName
空数据详情信息 属性 descriptionText
刷新按钮文字 属性 kLoadedButton
加载时刻展示的视图 属性 kLoadingContentView
刷新按钮点击事件 属性 kLoadedButtonClick
其他视图点击事件 属性 kLoadedOtherViewClick

UIResponder

UIResponder+KJChain 响应链处理

功能 类型 API & 属性
响应链详情 属性 链链描述
第一响应者 属性 kFirstResponder
实例方法 kj_responderWithClass
实例方法 kj_responderSendAction:Sender

UIResponder+KJAdapt 简单的屏幕比例适配

功能 类型 API & 属性
设计图机型 Protocol kj_adaptModelType
水平比例适配 函数 KJAdaptScaleLevel
垂直比例适配 函数 KJAdaptScaleVertical
适配CGpoint 函数 KJAdaptPointMake
适配CGSize 函数 KJAdaptSizeMake
适配CGRect 函数 KJAdaptRectMake
适配UIEdgeInsets 函数 KJAdaptEdgeInsetsMake

UINavigation

UINavigationBar+KJExtension

功能 类型 API & 属性
隐藏导航条底部下划线 实例方法 kj_hiddenNavigationBarBottomLine
设置导航栏背景色 实例方法 kj_changeNavigationBarBackgroundColor
设置图片背景导航栏 实例方法 kj_changeNavigationBarImage
设置导航条标题颜色和字号 实例方法 kj_changeNavigationBarTitle
默认恢复成系统颜色和下划线 实例方法 kj_resetNavigationBarSystem
设置自定义的返回按钮 实例方法 kj_changeNavigationBarBackImage

UINavigationItem+KJExtension Item链式生成

功能 类型 API & 属性
链式生成 实例方法 kj_makeNavigationItem
ExtendParameterBlock 扩展参数 属性 kAddBarButtonItemInfo
ExtendParameterBlock 扩展参数 属性 kAddLeftBarButtonItem
ExtendParameterBlock 扩展参数 属性 kAddRightBarButtonItem

UILabel

UILabel+KJCopy UILabel添加长按复制功能

功能 类型 API & 属性
是否可以拷贝 属性 可复制
移除拷贝长按手势 实例方法 kj_removeCopyLongPressGestureRecognizer

UILabel+KJExtension 文本位置和尺寸获取

功能 类型 API & 属性
设置文字内容显示位置 属性 自定义文本对齐方式
获取宽度 实例方法 kj_calculateWidth
获取高度 实例方法 kj_calculateHeightWithWidth
获取高度,指定行高 实例方法 kj_calculateHeightWithWidth:OneLineHeight
获取文字尺寸 kj_calculateLabelSizeWithTitle:font:constrainedToSize:lineBreakMode

UILabel+KJCreate 快速创建文本

功能 类型 API & 属性
快速创建文本 kj_createLabel

UILabel+KJAttributedString 富文本

功能 类型 API & 属性
Range之间文字行间距 实例方法 kj_AttributedStringTextLineSpace
Range之间文字大小 实例方法 kj_AttributedStringTextFont:Range
Range之间文字颜色 实例方法 kj_AttributedStringTextColor:Range
Range之间文字大小和颜色 实例方法 kj_AttributedStringTextFont:TextColor:Range
Range之间文字相关属性 实例方法 kj_AttributedStringTextAttributes:Range
富文本文字大小 实例方法 kj_AttributedStringTextFont:Loc:Len
富文本文字颜色 实例方法 kj_AttributedStringTextColor:Loc:Len
富文本文字大小和颜色 实例方法 kj_AttributedStringTextFont:TextColor:Loc:Len
富文本文字相关属性 实例方法 kj_AttributedStringTextAttributes:Loc:Len

UIImageView

UIImageView+KJBlur 模糊处理(高斯模糊、Accelerate模糊、毛玻璃、蒙版)

功能 类型 API & 属性
模糊处理 实例方法 kj_blurImageViewWithBlurType:BlurImage:BlurRadius

UIImageView+KJLetters 文字头像,首字母缩略头像

功能 类型 API & 属性
显示文字图片 实例方法 kj_imageViewWithText:LettersInfo
浏览头像,点击全屏展示 实例方法 kj_headerImageShowScreen
浏览头像,背景颜色 实例方法 kj_headerImageShowScreenWithBackground

UIImage

UIImage+KJQRCode 二维码/条形码生成器,特别备注文字不能是中文汉字

功能 类型 API & 属性
将字符串转成条形码 kj_barCodeImageWithContent
生成二维码 kj_QRCodeImageWithContent:codeImageSize
生成指定颜色二维码 kj_QRCodeImageWithContent:codeImageSize:color
生成条形码 kj_barcodeImageWithContent:codeImageSize
生成指定颜色条形码 kj_barcodeImageWithContent:codeImageSize:color
改变图片尺寸,bitmap方式 实例方法 kj_bitmapChangeImageSize
改变图片内部像素颜色 实例方法 kj_changeImagePixelColor

UIImage+KJURLSize 获取网络图片尺寸

功能 类型 API & 属性
获取网络图片尺寸 kj_imageGetSizeWithURL
异步等待获取网络图片大小,信号量 kj_imageAsyncGetSizeWithURL

UIImage+KJScale 图片尺寸处理

功能 类型 API & 属性
通过比例来缩放图片 实例方法 kj_scaleImage
以固定宽度缩放图像 实例方法 kj_scaleWithFixedWidth
以固定高度缩放图像 实例方法 kj_scaleWithFixedHeight
等比改变图片尺寸 实例方法 kj_cropImageWithAnySize
等比缩小图片尺寸 实例方法 kj_zoomImageWithMaxSize
不拉升填充图片 实例方法 kj_fitImageWithSize

UIImage+KJPhotoshop

功能 类型 API & 属性
获取图片平均颜色 实例方法 kj_getImageAverageColor
获得灰度图 实例方法 kj_getGrayImage
改变图片透明度 实例方法 kj_changeImageAlpha
改变图片背景颜色 实例方法 kj_changeImageColor
修改图片线条颜色 实例方法 kj_imageLinellaeColor
图层混合 实例方法 kj_imageBlendMode:TineColor

UIImage+KJMask 蒙版处理和图片拼接

功能 类型 API & 属性
文字水印 实例方法 kj_waterText:direction:textColor:font:margin
图片水印 实例方法 kj_waterImage:direction:waterSize:margin
图片添加水印 实例方法 kj_waterMark:InRect
蒙版图片处理 实例方法 kj_maskImage
圆形图片 实例方法 kj_circleImage
椭圆形图片 实例方法 kj_ellipseImage
图片透明区域点击穿透处理 实例方法 kj_transparentWithPoint
渐变色图片 kj_gradientImageColor

UIImage+KJJoint 图片拼接相关处理

功能 类型 API & 属性
旋转图片和镜像处理 实例方法 kj_rotationImageWithOrientation
竖直方向拼接任意张图片,固定主图的宽度 实例方法 kj_moreJointVerticalImage
水平方向拼接任意张图片,固定主图的高度 实例方法 kj_moreJointLevelImage
图片多次合成处理 实例方法 kj_imageCompoundWithLoopNums:Orientation
水平方向拼接任意张图片,固定主图的高度 实例方法 kj_moreAccelerateJointLevelImage
图片拼接艺术 实例方法 kj_jointImageWithJointType:Size:Maxw
高级图片拼接艺术,待完善 实例方法 kj_jointImageWithAdvanceJointType:Size:Maxw:Parameter

UIImage+KJGIF 播放动态图

功能 类型 API & 属性
本地动态图播放 kj_gifLocalityImageWithName
本地动图 kj_gifImageWithData
网络动图 kj_gifImageWithURL

UIImage+KJFloodFill 基于扫描线的泛洪算法,获取填充同颜色区域后的图片

功能 类型 API & 属性
填充图片 实例方法 kj_FloodFillImageFromStartPoint:NewColor:Tolerance:UseAntialias

UIImage+CoreImage CoreImage框架整理

功能 类型 API & 属性
Photoshop滤镜 实例方法 kj_coreImagePhotoshopWithType:Value
通用方法 实例方法 kj_coreImageCustomWithName:Dicts
高亮和阴影 实例方法 kj_coreImageHighlightShadowWithHighlightAmount:ShadowAmount
将图片黑色变透明 实例方法 kj_coreImageBlackMaskToAlpha
马赛克 实例方法 kj_coreImagePixellateWithCenter:Scale
图片圆形变形 实例方法 kj_coreImageCircularWrapWithCenter:Radius:Angle
环形透镜畸变 实例方法 kj_coreImageTorusLensDistortionCenter:Radius:Width:Refraction
空变形 实例方法 kj_coreImageHoleDistortionCenter:Radius
应用透视校正 实例方法 kj_coreImagePerspectiveCorrectionWithTopLeft:TopRight:BottomRight:BottomLeft
透视变换 实例方法 kj_coreImagePerspectiveTransformWithTopLeft:TopRight:BottomRight:BottomLeft
软装专属透视 实例方法 kj_softFitmentFluoroscopyWithTopLeft:TopRight:BottomRight:BottomLeft

UIImage+KJCompress 图片压缩处理,提供几种系统API的处理方式

功能 类型 API & 属性
压缩图片到指定大小 实例方法 kj_compressTargetByte
压缩图片到指定大小 kj_compressImage:TargetByte
UIKit方式 实例方法 kj_UIKitChangeImageSize
Quartz 2D 实例方法 kj_QuartzChangeImageSize
ImageIO 实例方法 kj_ImageIOChangeImageSize
CoreImage 实例方法 kj_CoreImageChangeImageSize
Accelerate 实例方法 kj_AccelerateChangeImageSize

UIImage+KJCapture 截图和裁剪处理

功能 类型 API & 属性
当前视图截图 kj_captureScreen
指定位置屏幕截图 kj_captureScreen:Rect
自定义质量的截图,quality质量倍数 kj_captureScreen:Rect:Quality
截取当前屏幕(窗口截图) kj_captureScreenWindow
截取当前屏幕(根据手机方向旋转) kj_captureScreenWindowForInterfaceOrientation
截取滚动视图的长图 kj_captureScreenWithScrollView:ContentOffset
裁剪掉图片周围的透明部分 kj_cutImageRoundAlphaZero
不规则图形切图 kj_anomalyCaptureImageWithView:BezierPath
多边形切图 kj_polygonCaptureImageWithImageView:PointArray
指定区域裁剪 kj_cutImageWithImage:Frame
quartz 2d 实现裁剪 kj_quartzCutImageWithImage:Frame
图片路径裁剪,裁剪路径 "以外" 部分 kj_captureOuterImage:BezierPath:Rect
图片路径裁剪,裁剪路径 "以内" 部分 kj_captureInnerImage:BezierPath:Rect

UIImage+KJAccelerate Accelerate 框架的图片处理

功能 类型 API & 属性
图片旋转 实例方法 kj_rotateInRadians
模糊处理 实例方法 kj_blurImageSoft
模糊处理 实例方法 kj_blurImageLight
模糊处理 实例方法 kj_blurImageExtraLight
模糊处理 实例方法 kj_blurImageDark
指定颜色线性模糊 实例方法 kj_blurImageWithTintColor
线性模糊,保留透明区域 实例方法 线性模糊图像模糊
模糊处理 实例方法 按半径、颜色和蒙版模糊图像
均衡运算 实例方法 均衡化图像
侵蚀 实例方法 侵蚀图像
形态膨胀/扩张 实例方法 膨胀/扩张图像
多倍侵蚀 实例方法 多次侵蚀图像
形态多次膨胀/扩张 实例方法 多次膨胀/扩张图像
梯度 实例方法 按迭代次数计算图像梯度
顶帽运算 实例方法 按迭代次数计算顶帽图像
黑帽运算 实例方法 按迭代次数计算黑帽图像
卷积处理 实例方法 用核卷积图像
锐化 实例方法 锐化图像
锐化 实例方法 按迭代次数锐化图像
浮雕 实例方法 创建浮雕图像
高斯 实例方法 高斯图像
边缘检测 实例方法 边缘图像
边缘检测 实例方法 边缘检测

UIImage+KJGIF 动态图播放处理

功能 类型 API & 属性
本地动态图播放 实例方法 kj_gifLocalityImageWithName
本地动图 实例方法 kj_gifImageWithData
网络动图 实例方法 kj_gifImageWithURL
图片播放,动态图 实例方法 按数据播放图像
子线程处理动态图 Foundation 播放Gif图像数据

UIDevice

UIDevice+KJSystem 系统相关操作

功能 类型 API & 属性
App版本号 类 & 属性 appCurrentVersion
App名称 类 & 属性 appName
手机UUID 类 & 属性 deviceID
获取App图标 类 & 属性 appIcon
判断App是否支持横屏 类 & 属性 supportHorizontalScreen
获取启动页图片 类 & 属性 launchImage
系统启动图缓存路径 类 & 属性 launchImageCachePath
启动图备份文件路径 类 & 属性 launchImageBackupPath
生成启动图 按肖像模式、暗色调生成启动图
生成启动图 按Storyboard、肖像模式、暗色调生成启动图
比较版本号 对比版本
获取AppStore版本号和详细信息 按Appid获取AppStore版本号和详细信息
跳转到指定URL 打开URL
调用AppStore 跳转到指定Appid的AppStore
调用自带Safari浏览器 跳转到Safari浏览器
调用自带Mail 跳转到Mail
是否切换为扬声器 切换扬声器
保存到相册 按图像和完成回调保存到相册
系统自带的分享 以项目形式分享并返回到指定ViewController
切换根视图控制器 按完成回调切换根视图控制器

UIControl

UISegmentedControl+KJCustom

功能 类型 API & 属性
解决修改背景色和文字颜色问题 实例方法 kj_ensureBackgroundAndTintColor

UIColor

UIColor+KJExtension 颜色相关扩展

功能 类型 API & 属性
渐变颜色 zj_gradientColorWithColors:GradientType:Size
垂直渐变颜色 实例方法 kj_gradientVerticalToColor:Height
水平渐变颜色 实例方法 kj_gradientAcrossToColor:Width
生成带有边框的渐变色图片 kj_colorImageWithColors:locations: size:borderWidth:borderColor
UIColor转为16进制字符串 kj_hexStringFromColor
16进制字符串转为UIColor kj_colorWithHexString
获取图片上指定点的颜色 kj_colorAtImage:Point
获取ImageView上指定点的图片颜色 kj_colorAtImageView:Point

UIColor+KJExtension2 颜色相关扩展

功能 类型 API & 属性
属性 red
绿 属性 green
属性 blue
透明度 属性 alpha
色相 属性 hue
饱和度 属性 saturation
亮度 属性 light
获取颜色对应的RGBA 实例方法 kj_colorGetRGBA
获取颜色对应的色相饱和度和透明度 实例方法 kj_colorGetHSL
获取颜色的均值 kj_averageColors
图片生成颜色 kj_imageColor

UIButton

UIButton+KJBlock 点击事件ButtonBlock

功能 类型 API & 属性
是否开启时间间隔的方法交换 Protocol kj_openTimeExchangeMethod
添加点击事件 实例方法 kj_addAction
添加事件,不支持多枚举形式 实例方法 kj_addAction:forControlEvents
点击事件间隔 属性 timeInterval

UIButton+KJContentLayout 图文混排(支持XIB显示)

功能 类型 API & 属性
图文样式 属性 layoutType
图文间距 属性 padding
图文边界的间距 属性 periphery
图文样式 属性 kj_ButtonContentLayoutType
图文间距 属性 kj_Padding
图文边界的间距 属性 kj_PaddingInset

UIButton+KJCountDown 倒计时

功能 类型 API & 属性
倒计时结束的回调 属性 kButtonCountDownStop
设置倒计时的间隔和倒计时文案 实例方法 kj_startTime:CountDownFormat
取消倒计时 实例方法 kj_cancelTimer

UIButton+KJCreate 按钮快速创建

功能 类型 API & 属性
创建图片按钮 kj_createButton

UIButton+KJEmitter 按钮粒子效果

功能 类型 API & 属性
是否开启粒子效果 属性 openEmitter
粒子,备注 name 属性不要更改 属性 emitterCell
设置粒子效果 实例方法 kj_buttonSetEmitterImage:OpenEmitter

UIButton+KJEnlarge 改变UIButton的响应区域 - 扩大Button点击域

功能 类型 API & 属性
设置按钮额外热区 属性 touchAreaInsets
扩大点击域 实例方法 kj_EnlargeEdgeWithTop:right:bottom:left

UIButton+KJIndicator 指示器(系统自带菊花)

功能 类型 API & 属性
按钮是否正在提交中 属性 submitting
指示器和文字间隔 属性 indicatorSpace
指示器颜色 属性 indicatorType
开始提交,指示器跟随文字 实例方法 开始提交
结束提交 实例方法 结束提交
显示指示器 实例方法 显示指示器
隐藏指示器 实例方法 隐藏指示器

UICollectionView

UICollectionView+KJTouch 获取touch事件处理

功能 类型 API & 属性
开启方法交换 属性 开启方法交换
Touch里面移动回调 属性 移动回调

UIBezierPath

UIBezierPath+KJPoints 获取贝塞尔曲线上面的点

功能 类型 API & 属性
获取所有点 属性 points
获取文字贝塞尔路径 文字贝塞尔路径

NSObject

KJGeometry 几何方程式相关

功能 类型 API & 属性
已知A、B两点和C点到B点的长度,求垂直AB的C点 垂直线段长度计算函数
已知A、B两点和C点到B点的长度,求垂直AB的C点 线段长度计算
已知A、B、C、D 4个点,求AB与CD交点 交点计算函数
求两点线段长度 长度计算函数
已知A、B、C三个点,求AB线对应C的平行线上的点 平行点计算函数
椭圆求点方程 椭圆方程计算

KJMathEquation 数学算法方程式

功能 类型 API & 属性
将弧度转换为角度 kj_degreeFromRadian
将角度转换为弧度 kj_radianFromDegree
正切函数的弧度值,tan kj_radianValueFromTanSideA:sideB
获取具有固定宽度的新尺寸 kj_resetFromSize:FixedWidth
获取具有固定高度的新尺寸 kj_resetFromSize:FixedHeight
一元一次线性方程,求k,b kj_mathOnceLinearEquationWithPointA:PointB
已知y,k,b 求 x kj_xValueWithY:LinearEquation
已知x,k,b 求 y kj_yValueWithX:LinearEquation

NSObject+KJKVO 键值监听封装,自动释放

功能 类型 API & 属性
kvo监听 实例方法 kj_observeKey:ObserveResultBlock

NSObject+KJRuntime Runtime轻量级封装

功能 类型 API & 属性
获取该对象的所有属性,包含父类 属性 propertyTemps
实例变量列表 属性 ivarTemps
方法列表 属性 methodTemps
遵循的协议列表 属性 protocolTemps
归档封装 实例方法 kj_encodeRuntime
解档封装 实例方法 kj_initCoderRuntime

NSObject+KJSemaphore 轻量级解耦工具(信号)

功能 类型 API & 属性
发送消息处理 实例方法 kj_sendSemaphoreWithKey:Message:Parameter
接收消息处理 实例方法 kj_receivedSemaphoreBlock
代码执行时间处理 kj_executeTime

NSDictionary

NSDictionary+KJExtension

功能 类型 API & 属性
是否为空 属性 isEmpty
转换为Json字符串 属性 jsonString

NSString

NSString+KJExtension 字符串扩展属性

功能 类型 API & 属性
是否为空 属性 isEmpty
转换为URL 属性 URL
获取图片 属性 image
取出HTML 属性 HTMLString
Josn字符串转字典 属性 jsonDict
生成竖直文字 属性 verticalText
获取文本宽度 实例方法 kj_maxWidthWithFont:Height:Alignment:LinebreakMode:LineSpace
获取文本高度 实例方法 kj_maxHeightWithFont:Width:Alignment:LinebreakMode:LineSpace
文字转图片 实例方法 kj_textBecomeImageWithSize:BackgroundColor:TextAttributes

NSString+KJChinese 汉字相关处理

功能 类型 API & 属性
汉字转拼音 属性 pinYin
随机汉字 kj_randomCreateChinese
查找数据 实例方法 kj_searchArray
字母排序 实例方法 kj_letterSortArray

NSString+KJPredicate 谓词工具

功能 类型 API & 属性
过滤空格 实例方法 kj_filterSpace
验证数字 实例方法 kj_validateNumber
是否有特殊字符 实例方法 kj_validateHaveSpecialCharacter
过滤特殊字符 实例方法 kj_removeSpecialCharacter
验证手机号码 实例方法 kj_validateMobileNumber
验证邮箱格式 实例方法 kj_validateEmail
验证身份证 实例方法 kj_validateIDCardNumber
验证银行卡 实例方法 kj_validateBankCardNumber

NSString+KJSecurity 加密解密工具,链式处理

功能 类型 API & 属性
生成key 实例方法 kj_createKey
生成token 实例方法 kj_createToken
RSA公钥加密 实例方法 kj_rsaEncryptPublicKey
RSA公钥解密 实例方法 kj_rsaDecryptPublicKey
RSA私钥加密 实例方法 kj_rsaEncryptPrivateKey
RSA私钥解密 实例方法 kj_rsaDecryptPrivateKey
AES加密 实例方法 kj_aesEncryptKey
AES解密 实例方法 kj_aesDecryptKey
Base64编码 实例方法 kj_base64EncodedString
Base64解码 实例方法 kj_base64DecodingString

理论与实践计时器

理论与实践计时器+KJ扩展

功能 类型 API & 属性
当前线程计时器 kj_scheduledTimerWithTimeInterval:Repeats:Block
当前线程 kj_scheduledTimerWithTimeInterval:Repeats:Block:RunLoopMode
线程计时器 kj_timerWithTimeInterval:Repeats:Block
立刻执行 实例方法 kj_immediatelyTimer
暂停 实例方法 kj_pauseTimer
重启计时器 实例方法 kj_resumeTimer
延时执行 实例方法 kj_resumeTimerAfterTimeInterval
释放计时器 kj_invalidateTimer

mbHJ数组

mbHJ数组+KJPredicate 谓词工具

功能 类型 API & 属性
对比两个数组删除相同元素并合并 实例方法 kj_mergeArrayAndDelEqualObjWithOtherArray
过滤数组 实例方法 kj_filtrationDatasWithPredicateBlock
除去数组当中包含目标数组的数据 实例方法 kj_delEqualDatasWithTargetTemps
按照某一属性的升序降序排列 实例方法 kj_sortDescriptorWithKey:Ascending
按照某些属性的升序降序排列 实例方法 kj_sortDescriptorWithKeys:Ascendings
取出 key 中匹配 value 的元素 实例方法 kj_takeOutDatasWithKey:Value
字符串比较运算符 实例方法 kj_takeOutDatasWithOperator:Key:Value

mbHJ数组+KJ扩展 对数组里面元素的相关处理

功能 类型 API & 属性
是否为空 属性 isEmpty
筛选数据 实例方法 kj_detectArray
多维数组筛选数据 实例方法 kj_detectManyDimensionArray
查找数据 实例方法 kj_searchObject
映射 实例方法 kj_mapArray
插入数据到目的位置 实例方法 kj_insertObject
数组计算交集 实例方法 kj_arrayIntersectionWithOtherArray
数组计算差集 实例方法 kj_arrayMinusWithOtherArray
随机打乱数组 实例方法 kj_disorganizeArray
删除数组当中的相同元素 实例方法 kj_delArrayEquelObj
生成一组不重复的随机数 实例方法 kj_noRepeatRandomArrayWithMinNum:maxNum:count
二分查找 实例方法 kj_binarySearchTarget
冒泡排序 实例方法 kj_bubbleSort
插入排序 实例方法 kj_insertSort
选择排序 实例方法 kj_selectionSort

更新日志

####版本更新日志:
#### Add 1.1.0
1. 合并分类,解决潜在内存溢出崩溃
2. 新增 UINavigationBar 导航栏管理
3. NSObject+KJRuntime 完善补充
4. NSObject+KJDoraemonBox 新增路由和信号方式解耦

#### Add 1.0.17
1. 删除 CALayer+KJExtension 分类
2. 新增快速创建UI控件,_KJQuickCreateHandle
3. NSObject+KJRuntime 新增协议列表和归档解档方法

#### Add 1.0.15
1. 新增 KJRouterHandler 简单的路由工具(基于URL实现控制器转场的框架)
2. 移除 KJFPSHandler 和 KJShadowLayer,需要去Demo下载
3. NSString 新增字母排序和过滤特殊字符

#### Add 1.0.14
1. UITextField+KJExtension 新增回调 kTextEditingChangedBolck 文本编辑
2. 移除 UIImage+KJReflection 简单的倒影处理

#### Add 1.0.13
1. 新增 NSString+KJSecurity 加密解密工具

#### Add 1.0.12
1. UIDevice+KJSystem 新增启动图相关属性方法
2. UIView+KJFrame 新增子控件处理事件和常用方法
3. 细节优化

#### Add 1.0.11
1. 修改 UITextView 占位符和限制字符,同时支持Xib快捷设置
2. 修改 UITextField 支持Xib设置 bottomLineColor、placeholderColor、maxLength属性 
3. 新增 UILabel+KJCopy 移除拷贝长按手势 kj_removeCopyLongPressGestureRecognizer
4. 修改 UIButton+KJBlocktap 点击时间间隔 timeInterval,支持Xib设置
5. 新增 UIImage+KJMask 椭圆形图片 kj_ellipseImage

#### Add 1.0.10
1. NSArray+KJExtension 新增 kj_insertObject 插入数据到目的位置

#### Add 1.0.9
1. Language 解决循环引入
2. 新增 UIView+KJAnimation 简单动画效果链式封装
3. 新增 KJSoundView 声音大小控件

#### Add 1.0.7
1. 新增 UIImage+KJQRCode 二维码/条形码生成
2. 新增 UIView+KJAnimation 简单动画效果链式封装
3. 新增 UILabel+KJCopy UILabel添加长按复制功能
4. 移除 UIView+Toast

#### Add 1.0.6
1. 重新整理 KJMathEquation 数学方程式类
2. 新增 NSTimer+KJExtension 计时器简单封装
3. 礼物控件提示 KJCallNotifyView

#### Add 1.0.3
1. 新增 NSObject+KJRuntime Runtime轻量级封装
2. 新增 UIImageView+KJBlur 简单的模糊效果

#### Add 1.0.1
1. 新增 UITextField+KJExtension 输入框扩展,快速设置账号密码框
2. 删除不必要代码,简练操作

#### Add 1.0.0
1. 完善 UIButton+KJBlock 去除多枚举和超出九种情况
2. 新增 UIDevice+KJSystem 系统相关方法属性
3. 分离 Exception 异常处理,请使用 pod 'KJExceptionDemo'
4. 新增 Language 模块 pod 'KJExtensionHandler/Language' # 多语言模块

#### Add 0.0.10
1. UIImage+KJGIF 新增播放本地动态图 kj_gifLocalityImageWithName:
2. 提出 KJNodeQueue 栈操作工具
3. 新增 NSObject+KJSemaphore 轻量级解耦工具
4. 完善 UIButton+KJBlock 点击事件封装

#### Add 0.0.9
1. UIImage+KJCompress 新增多种缩放方案
2. UIImage+KJJoint 新增多种图片拼接
3. UIButton+KJButtonContentLayout 修改三个属性layoutType、padding、periphery

#### Add 0.0.8
1. UIImage+KJCapture 截图方法修改,提升截图质量
2. 新增 UIImageView+KJLetters 头像浏览和文字头像
3. 新增 UIScrollView+KJEmptyDataSet 空数据展示
4. 新增 NSObject+KJExtension 动态属性添加

#### Add 0.0.7
1. 重写 UIView+KJGestureBlock 解决手势共存问题
2. UIView+KJRectCorner 完善处理
3. 新增 CALayer+KJExtension 增加标签属性

#### Add 0.0.6
1. 新增 UITabBar+KJBadge 小红点处理
2. 新增 _KJGCD 处理线程相关
3. 重写指示器按钮 UIButton+KJIndicator 
4. 重写点赞粒子效果 kj_buttonSetEmitterImage:OpenEmitter:
5. 重写 UINavigationItem+KJExtension 采用链式处理
6. 新增 UITextView+KJBackout 撤销输入
7. UILabel+KJExtension 新增文本显示位置属性 kTextAlignmentType

#### Add 0.0.5
1. UIView+KJXib 新增判断是否有子视图在滚动 anySubViewScrolling
2. UIView+KJFrame 新增移除所有子视图 kj_removeAllSubviews
3. 新增 NSString+KJChinese 汉字相关操作
4. UIView+KJRectCorner 修改局部边框处理
5. UIView+KJXib 新增设置图片属性 viewImage
6. 新增 UIImage+KJGIF 动态图显示gif
7. 新增 UIImage+KJJoint 拼接图片相关操作

#### Add 0.0.4
1. 新增 UIView+Toast 快捷显示
2. 新增 UIResponder+KJChain 响应链处理
3. 新增 NSObject+KJKVO 键值监听简单封装

#### Add 0.0.3
1. 新增 UIResponder+KJAdapt 简单的比例适配
2. 新增 NSArray+KJPredicate 谓词数组处理
3. 新增 NSString+KJPredicate 谓词字符串处理

#### Add 0.0.2
1. 新增Exception异常处理
2. UITextView 增加是否开启方法交换委托处理

#### Add 0.0.1
1. 从原先的KJEmitterView库中分离出来

备注:部分资料来源于网络~ 就不一一指出道谢,整理起来方便自己和大家使用

打赏作者

  • 如果您觉得本项目有所帮助,请为我Star
  • 如果在使用过程中遇到任何问题,希望您能提交Issues,我会及时修复
  • 大家需要添加的功能,也可以给我留言,我会尽量补充完善
  • 感谢大家的支持 - -!

谢谢老板

救救孩子吧,谢谢各位老板~