KJExtensionHandler
介绍一下 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的两个类别A
和B
,然后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:系统相关属性,
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,我会及时修复
- 大家需要添加的功能,也可以给我留言,我会尽量补充完善
- 感谢大家的支持 - -!

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