Wrapper

属性包装器(因struct只读,只能用class)

Observer

Subject

Observer

Subject

KVO

Static

  • 获取当前主window,可自定义

Public

Workflow

  • 自定义工作流名称,支持二级(“."分隔);默认返回小写类名(去掉ViewController、Controller)

Navigation

Workflow

  • 当前最外层工作流名称,即topViewController的工作流名称

  • push控制器,并清理最外层工作流(不属于工作流则不清理)

    示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)、4、(5、6)、9

  • push控制器,并清理到指定工作流(不属于工作流则清理)

    示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)、9

  • push控制器,并清理非根控制器(只保留根控制器)

    示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、9

  • push控制器,并从外到内清理指定工作流,直到遇到不属于指定工作流的控制器停止

    示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)、4、9

  • pop方式清理最外层工作流,至少保留一个根控制器(不属于工作流则不清理)

    示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)、4、(5、6)

  • pop方式清理到指定工作流,至少保留一个根控制器(不属于工作流则清理)

    示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)

  • pop方式从外到内清理指定工作流,直到遇到不属于指定工作流的控制器停止,至少保留一个根控制器

    示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)、4

Class

Runtime

  • 安全调用方法,如果不能响应,则忽略之

  • 安全调用方法,如果不能响应,则忽略之

  • 安全调用方法,支持多个参数

  • 对super发送消息

  • 对super发送消息,可传递参数

  • 安全调用内部属性获取方法,如果属性不存在,则忽略之

    如果iOS13系统UIView调用部分valueForKey:方法闪退,且没有好的替代方案,可尝试调用此方法

  • 安全调用内部属性设置方法,如果属性不存在,则忽略之

    如果iOS13系统UIView调用部分valueForKey:方法闪退,且没有好的替代方案,可尝试调用此方法

Property

  • 临时对象,强引用,支持KVO

    备注:key的几种形式的声明和使用,下同

    1. 声明:static char kAssociatedObjectKey; 使用:&kAssociatedObjectKey
    2. 声明:static void *kAssociatedObjectKey = &kAssociatedObjectKey; 使用:kAssociatedObjectKey
    3. 声明和使用直接用getter方法的selector,如\@selector(xxx)、_cmd
    4. 声明和使用直接用c字符串,如"kAssociatedObjectKey"
  • 读取关联属性

  • 设置强关联属性,支持KVO

  • 设置赋值关联属性,支持KVO,注意可能会产生野指针

  • 设置拷贝关联属性,支持KVO

  • 设置弱引用关联属性,支持KVO,OC不支持weak关联属性

Bind

Exchange

Swizzle

CollectionViewDelegate

Wrapper+SkeletonLayout

TableViewDelegate

Refreshing

Loading

String+Language

Bundle

Main

  • 读取应用当前语言,如果localizedLanguage存在则返回,否则返回systemLanguage

  • 读取应用系统语言,返回preferredLocalizations(支持应用设置,不含区域),示例:zh-Hans|en

  • 读取或设置自定义本地化语言,未自定义时为空。(语言值对应本地化文件存在才会立即生效,如zh-Hans|en),为空时清空自定义,会触发通知。默认只处理mainBundle语言,如果需要处理三方SDK和系统组件语言,详见Bundle分类

  • 读取本地化字符串,可指定table,strings文件需位于mainBundle,支持动态切换

Bundle

UIColor+Theme

  • 获取当前主题样式对应静态颜色,主要用于iOS13以下兼容主题切换

  • 指定主题样式获取对应静态颜色,iOS13+可跟随系统改变

  • 是否是主题颜色,仅支持判断使用fwTheme创建的颜色

  • 动态创建主题色,分别指定浅色和深色

  • 动态创建主题色,指定提供句柄

  • 动态创建主题色,指定名称,兼容iOS11+系统方式(仅iOS13+支持动态颜色)和手工指定。失败时返回clear防止崩溃

  • 动态创建主题色,指定名称和bundle,兼容iOS11+系统方式(仅iOS13+支持动态颜色)和手工指定。失败时返回clear防止崩溃

  • 手工单个注册主题色,未配置主题色或者需兼容iOS11以下时可使用本方式

  • 手工批量注册主题色,未配置主题色或者需兼容iOS11以下时可使用本方式

UIImage+Theme

  • 获取当前主题样式对应静态图片用于显示,iOS13+可跟随系统改变

  • 指定主题样式获取对应静态图片用于显示,iOS13+可跟随系统改变

  • 是否是主题图片,仅支持判断使用fwTheme创建的图片

Color

  • 快速生成当前图片对应的默认主题图片

  • 指定主题颜色,快速生成当前图片对应的主题图片

Theme

  • 创建主题模拟动态图像,指定提供句柄,不支持动态切换,需重新赋值才会变化

  • 手工单个注册主题图像,未配置主题图像时可使用本方式

  • 手工批量注册主题图像,未配置主题图像时可使用本方式

Color

UIImageAsset+Theme

  • 是否是主题图片资源,仅支持判断使用fwTheme创建的图片资源

  • 创建主题动态图片资源,指定提供句柄,内部使用FWThemeObject实现

NSObject+Theme

  • 订阅主题通知并指定主题上下文(如vc|view),非UITraitEnvironment等需指定后才能响应系统主题

  • 添加iOS13主题改变通知回调,返回订阅唯一标志,需订阅后才生效

  • iOS13根据订阅唯一标志移除主题通知回调

  • iOS13移除所有主题通知回调,一般用于cell重用

  • iOS13主题改变包装器钩子,如果父类有重写,记得调用super,需订阅后才生效

UIImageView+Theme

  • 设置主题图片资源,自动跟随系统改变,清空时需置为nil,二选一

Data+AnyEncoder

Data+AnyDecoder

Encode

SafeValue

UIApplication+Adaptive

UIDevice+Adaptive

UIScreen+Adaptive

UIView+Adaptive

UIViewController+Adaptive

  • 当前状态栏布局高度,导航栏隐藏时为0,推荐使用

  • 当前导航栏布局高度,隐藏时为0,推荐使用

  • 当前顶部栏布局高度,导航栏隐藏时为0,推荐使用

  • 当前标签栏布局高度,隐藏时为0,推荐使用

  • 当前工具栏布局高度,隐藏时为0,推荐使用

  • 当前底部栏布局高度,包含标签栏和工具栏,隐藏时为0,推荐使用

NSObject+Appearance

  • 从 appearance 里取值并赋值给当前实例,通常在对象的 init 里调用

UIView+AutoLayout

  • 是否启用自动布局适配RTL,启用后自动将Left|Right转换为Leading|Trailing,默认NO

    如果项目兼容阿拉伯语等,需要启用RTL从右向左布局,开启此开关即可,无需修改布局代码 手工切换视图左右布局方法:[UIView appearance].semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;

  • 是否全局自动等比例缩放布局,默认NO

    启用后所有offset值都会自动*relativeScale,注意可能产生的影响。 启用后注意事项:

    1. 屏幕宽度约束不能使用screenWidth约束,需要使用375设计标准
    2. 尽量不使用screenWidth固定屏幕宽度方式布局,推荐相对于父视图布局
    3. 只会对offset值生效,其他属性不受影响
    4. 如需特殊处理,可以指定某个视图关闭该功能

AutoLayout

  • 视图是否自动等比例缩放布局,默认依次查找当前视图及其父视图,都未设置时返回全局开关

  • 执行子视图自动布局,自动计算子视图尺寸。需先将视图添加到界面(如设置为tableHeaderView),再调用即可(iOS8+)

  • 计算动态布局视图指定宽度时的高度。使用AutoLayout必须约束完整,不使用AutoLayout会调用view的sizeThatFits:方法

  • 计算动态布局视图指定高度时的宽度。使用AutoLayout必须约束完整,不使用AutoLayout会调用view的sizeThatFits:方法

  • 计算动态AutoLayout布局视图指定宽度时的高度。

    注意调用后会重置superview和frame,一般用于未添加到superview时的场景,cell等请使用DynamicLayout

  • 计算动态AutoLayout布局视图指定高度时的宽度。

    注意调用后会重置superview和frame,一般用于未添加到superview时的场景,cell等请使用DynamicLayout

Compression

Collapse

Axis

Edge

SafeArea

Dimension

Constrain

Constraint

NSLayoutConstraint+AutoLayout

  • 标记是否是相反的约束,一般相对于父视图

  • 设置内间距值,如果是相反的约束,会自动取反

  • 安全修改优先级,防止iOS13以下已激活约束修改Required崩溃

  • 可收缩约束的收缩常量值,默认0

  • 可收缩约束的原始常量值,默认为添加收缩约束时的值

UIView+LayoutChain

UINavigationBar+BarAppearance

  • 是否强制iOS13+启用新版样式,默认false,仅iOS15+才启用

  • 设置全局按钮样式属性,nil时系统默认

  • 导航栏是否半透明,会重置背景,需优先设置,默认NO;背景色需带有alpha时半透明才会生效

  • 设置前景颜色,包含文字和按钮等

  • 单独设置标题颜色,nil时显示前景颜色

  • 单独设置按钮样式属性,nil时系统默认。仅iOS15+生效,iOS14及以下请使用UIBarButtonItem

  • 设置背景颜色(nil时透明),兼容主题颜色,后设置生效

  • 设置背景图片(nil时透明),兼容主题图片,后设置生效

  • 设置背景是否全透明,默认NO,后设置生效

  • 设置阴影颜色(nil时透明),兼容主题颜色,后设置生效

  • 设置阴影图片(nil时透明),兼容主题图片,后设置生效

  • 设置返回按钮图片,包含图片和转场Mask图片,自动偏移和系统左侧按钮位置保持一致

UIToolbar+BarAppearance

  • 自定义工具栏位置,调用后才生效,会自动设置delegate。Bottom时背景自动向下延伸,TopAttached时背景自动向上延伸

DispatchQueue+Block

Timer+Block

UIGestureRecognizer+Block

UIView+Block

UIControl+Block

UIBarButtonItem+Block

  • 使用指定对象和事件创建Item,支持UIImage|NSString|NSNumber|NSAttributedString等

  • 使用指定对象和句柄创建Item,支持UIImage|NSString|NSNumber|NSAttributedString等

  • 设置当前Item触发句柄,nil时清空句柄

UIViewController+Block

UITableViewCell+DynamicLayout

  • 如果用来确定Cell所需高度的View是唯一的,请把此值设置为YES,可提升一定的性能

  • 最大Y视图的底部内边距,可避免新创建View来撑开Cell,默认0

  • 最大Y视图是否撑开布局,需布局约束完整。默认NO,无需撑开布局;YES时padding不起作用

  • 免注册创建UITableViewCell,内部自动处理缓冲池,可指定style类型和reuseIdentifier

  • 根据配置自动计算cell高度,不使用缓存,子类可重写

UITableViewHeaderFooterView+DynamicLayout

Cache

Cell

HeaderFooterView

UICollectionViewCell+DynamicLayout

UICollectionReusableView+DynamicLayout

Cache

Cell

ReusableView

Data+Foundation

Encrypt

RSA

Date+Foundation

NSNumber+Foundation

  • 转换为CGFloat

  • 四舍五入,去掉末尾0,最多digit位,小数分隔符为.,分组分隔符为空,示例:12345.6789 => 12345.68

  • 取上整,去掉末尾0,最多digit位,小数分隔符为.,分组分隔符为空,示例:12345.6789 => 12345.68

  • 取下整,去掉末尾0,最多digit位,小数分隔符为.,分组分隔符为空,示例:12345.6789 => 12345.67

  • 四舍五入,去掉末尾0,最多digit位,示例:12345.6789 => 12345.68

  • 取上整,去掉末尾0,最多digit位,示例:12345.6789 => 12345.68

  • 取下整,去掉末尾0,最多digit位,示例:12345.6789 => 12345.67

String+Foundation

FileManager+Foundation

NSAttributedString+Foundation

NSObject+Foundation

URL+Foundation

  • 生成苹果地图地址外部URL

    @param addr 显示地址,格式latitude,longitude或搜索地址 @param options 可选附加参数,如@{@“ll”: @“latitude,longitude”, @“z”: @“14”} @return NSURL

  • 生成苹果地图导航外部URL

    @param saddr 导航起始点,格式latitude,longitude或搜索地址 @param daddr 导航结束点,格式latitude,longitude或搜索地址 @param options 可选附加参数,如@{@“ll”: @“latitude,longitude”, @“z”: @“14”} @return NSURL

  • 生成谷歌地图外部URL,URL SCHEME为:comgooglemaps

    @param addr 显示地址,格式latitude,longitude或搜索地址 @param options 可选附加参数,如@{@“center”: @“latitude,longitude”, @“zoom”: @“14”} @return NSURL

  • 生成谷歌地图导航外部URL,URL SCHEME为:comgooglemaps

    @param saddr 导航起始点,格式latitude,longitude或搜索地址 @param daddr 导航结束点,格式latitude,longitude或搜索地址 @param mode 导航模式,支持driving|transit|bicycling|walking,默认driving @param options 可选附加参数,如@{@“center”: @“latitude,longitude”, @“zoom”: @“14”, @“dirflg”: @“t,h”} @return NSURL

  • 生成百度地图外部URL,URL SCHEME为:baidumap

    @param addr 显示地址,格式latitude,longitude或搜索地址 @param options 可选附加参数,如@{@“src”: @“app”, @“zoom”: @“14”, @“coord_type”: @“默认gcj02|wgs84|bd09ll”} @return NSURL

  • 生成百度地图导航外部URL,URL SCHEME为:baidumap

    @param saddr 导航起始点,格式latitude,longitude或搜索地址 @param daddr 导航结束点,格式latitude,longitude或搜索地址 @param mode 导航模式,支持driving|transit|navigation|riding|walking,默认driving @param options 可选附加参数,如@{@“src”: @“app”, @“zoom”: @“14”, @“coord_type”: @“默认gcj02|wgs84|bd09ll”} @return NSURL

UserDefaults+Foundation

Keyboard

  • 是否启用键盘管理(自动滚动),默认NO

  • 设置输入框和键盘的空白间距,默认10.0

  • 设置输入框和键盘的回弹触发最小距离,默认0始终回弹

  • 是否启用键盘后台关闭处理,退后台时收起键盘,回到前台时恢复键盘,解决系统退后台输入框跳动问题,默认NO

  • 是否启用点击背景关闭键盘(会继续触发其它点击事件),默认NO

  • 指定用于键盘管理滚动的scrollView,默认为nil,通过修改VC.view.frame实现

Return

  • 点击键盘完成按钮是否关闭键盘,默认NO,二选一

  • 设置点击键盘完成按钮是否自动切换下一个输入框,二选一

  • 设置点击键盘完成按钮的事件句柄

Toolbar

UITextView+Placeholder

CADisplayLink+QuartzCore

  • 创建CADisplayLink,使用target-action,自动CommonModes添加到当前的运行循环中,避免ScrollView滚动时不触发

  • 创建CADisplayLink,使用block,自动CommonModes添加到当前的运行循环中,避免ScrollView滚动时不触发

  • 创建CADisplayLink,使用block,需要调用addToRunLoop:forMode:安排到当前的运行循环中(CommonModes避免ScrollView滚动时不触发)。

    示例:[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]

CAAnimation+QuartzCore

  • 设置动画开始回调,需要在add之前添加,因为add时会自动拷贝一份对象

  • 设置动画停止回调

CALayer+QuartzCore

CAGradientLayer+QuartzCore

  • 设置主题渐变色,启用主题订阅后可跟随系统改变,清空时需置为nil

  • 创建渐变层,需手工addLayer

    @param frame 渐变区域 @param colors 渐变颜色,CGColor数组,如[黑,白,黑] @param locations 渐变位置,0~1,如[0.25, 0.5, 0.75]对应颜色为[0-0.25黑,0.25-0.5黑渐变白,0.5-0.75白渐变黑,0.75-1黑] @param startPoint 渐变开始点,设置渐变方向,左上点为(0,0),右下点为(1,1) @param endPoint 渐变结束点 @return 渐变Layer

UIView+QuartzCore

  • 绘制形状路径,需要在drawRect中调用

    @param bezierPath 绘制路径 @param strokeWidth 绘制宽度 @param strokeColor 绘制颜色 @param fillColor 填充颜色

  • 绘制渐变颜色,需要在drawRect中调用,支持四个方向,默认向下Down

    @param rect 绘制区域 @param colors 渐变颜色,CGColor数组,如:@[(bridge id)[UIColor redColor].CGColor, (bridge id)[UIColor blueColor].CGColor] @param locations 渐变位置,传NULL时均分,如:CGFloat locations[] = {0.0, 1.0}; @param direction 渐变方向,自动计算startPoint和endPoint,支持四个方向,默认向下Down

  • 绘制渐变颜色,需要在drawRect中调用

    @param rect 绘制区域 @param colors 渐变颜色,CGColor数组,如:@[(bridge id)[UIColor redColor].CGColor, (bridge id)[UIColor blueColor].CGColor] @param locations 渐变位置,传NULL时均分,如:CGFloat locations[] = {0.0, 1.0}; @param startPoint 渐变开始点,需要根据rect计算 @param endPoint 渐变结束点,需要根据rect计算

  • 添加渐变Layer

    @param frame 渐变区域 @param colors 渐变颜色,CGColor数组,如[黑,白,黑] @param locations 渐变位置,0~1,如[0.25, 0.5, 0.75]对应颜色为[0-0.25黑,0.25-0.5黑渐变白,0.5-0.75白渐变黑,0.75-1黑] @param startPoint 渐变开始点,设置渐变方向,左上点为(0,0),右下点为(1,1) @param endPoint 渐变结束点 @return 渐变Layer

  • 添加虚线Layer

    @param rect 虚线区域,从中心绘制 @param lineLength 虚线的宽度 @param lineSpacing 虚线的间距 @param lineColor 虚线的颜色 @return 虚线Layer

Animation

Drag

UIApplication+Toolkit

UIColor+Toolkit

  • 获取当前颜色指定透明度的新颜色

  • 读取颜色的十六进制值RGB,不含透明度

  • 读取颜色的透明度值,范围0~1

  • 读取颜色的十六进制字符串RGB,不含透明度

  • 读取颜色的十六进制字符串RGBA|ARGB(透明度为1时RGB),包含透明度

  • 设置十六进制颜色标准为ARGB|RGBA,启用为ARGB,默认为RGBA

  • 获取透明度为1.0的RGB随机颜色

  • 从十六进制值初始化,格式:0x20B2AA,透明度默认1.0

  • 从十六进制字符串初始化,支持RGB、RGBA|ARGB,格式:@“20B2AA”, @“#FFFFFF",透明度默认1.0,失败时返回clear

  • 以指定模式添加混合颜色,默认normal模式

  • 当前颜色修改亮度比率的颜色

  • 判断当前颜色是否为深色

  • 创建渐变颜色,支持四个方向,默认向下Down

    @param size 渐变尺寸,非渐变边可以设置为1。如CGSizeMake(1, 50) @param colors 渐变颜色,CGColor数组,如:@[(bridge id)[UIColor redColor].CGColor, (bridge id)[UIColor blueColor].CGColor] @param locations 渐变位置,传NULL时均分,如:CGFloat locations[] = {0.0, 1.0}; @param direction 渐变方向,自动计算startPoint和endPoint,支持四个方向,默认向下Down @return 渐变色

  • 创建渐变颜色

    @param size 渐变尺寸,非渐变边可以设置为1。如CGSizeMake(1, 50) @param colors 渐变颜色,CGColor数组,如:@[(bridge id)[UIColor redColor].CGColor, (bridge id)[UIColor blueColor].CGColor] @param locations 渐变位置,传NULL时均分,如:CGFloat locations[] = {0.0, 1.0}; @param startPoint 渐变开始点,需要根据rect计算 @param endPoint 渐变结束点,需要根据rect计算 @return 渐变色

UIFont+Toolkit

UIImage+Toolkit

UIView+Toolkit

  • top

    顶部纵坐标,frame.origin.y

  • 底部纵坐标,frame.origin.y + frame.size.height

  • 左边横坐标,frame.origin.x

  • 右边横坐标,frame.origin.x + frame.size.width

  • 宽度,frame.size.width

  • 高度,frame.size.height

  • 中心横坐标,center.x

  • 中心纵坐标,center.y

  • x

    起始横坐标,frame.origin.x

  • y

    起始纵坐标,frame.origin.y

  • 起始坐标,frame.origin

  • 大小,frame.size

UIViewController+Toolkit

  • 当前生命周期状态,默认Ready

  • 生命周期变化时通知句柄,默认nil

  • 自定义完成结果对象,默认nil

  • 自定义完成句柄,默认nil,dealloc时自动调用,参数为fwCompletionResult。支持提前调用,调用后需置为nil

  • 自定义侧滑返回手势VC开关句柄,enablePopProxy启用后生效,仅处理边缘返回手势,优先级低,默认nil

  • 自定义控制器返回VC开关句柄,enablePopProxy启用后生效,统一处理返回按钮点击和边缘返回手势,优先级高,默认nil

UINavigationController+Toolkit

  • 单独启用返回代理拦截,优先级高于+enablePopProxy,启用后支持shouldPopController、allowsPopGesture功能,默认NO未启用

  • 全局启用返回代理拦截,优先级低于-enablePopProxy,启用后支持shouldPopController、allowsPopGesture功能,默认NO未启用

UIBezierPath+UIKit

UIDevice+UIKit

  • 设置设备token原始Data,格式化并保存

  • 获取设备Token格式化后的字符串

  • 获取设备模型,格式:"iPhone6,1"

  • 获取设备IDFV(内部使用),同账号应用全删除后会改变,可通过keychain持久化

  • 获取设备IDFA(外部使用),重置广告或系统后会改变,需先检测广告追踪权限,启用Tracking子模块后生效

  • 获取或设置设备UUID,自动keychain持久化。默认获取IDFV(未使用IDFA,避免额外权限),失败则随机生成一个

  • 是否越狱

  • 本地IP地址

  • 本地主机名称

  • 手机运营商名称

  • 手机蜂窝网络类型,仅区分2G|3G|4G|5G

UIView+UIKit

UIImageView+UIKit

UIWindow+UIKit

UILabel+UIKit

  • 快速设置attributedText样式,设置后调用setText:会自动转发到setAttributedText:方法

  • 快速设置文字的行高,优先级低于fwTextAttributes,设置后调用setText:会自动转发到setAttributedText:方法。小于0时恢复默认行高

  • 自定义内容边距,未设置时为系统默认。当内容为空时不参与intrinsicContentSize和sizeThatFits:计算,方便自动布局

  • 添加点击手势并自动识别NSLinkAttributeName|URL属性,点击高亮时回调链接,点击其它区域回调nil

  • 获取手势触发位置的文本属性,可实现行内点击效果等,allowsSpacing默认为NO空白处不可点击。为了识别更准确,attributedText需指定font

  • 快速设置标签并指定文本

  • 快速创建标签并指定文本

  • 计算当前属性文本所占尺寸,需frame或者宽度布局完整,attributedText需指定字体

UIControl+UIKit

UIButton+UIKit

UIScrollView+UIKit

  • 判断当前scrollView内容是否足够滚动

  • 判断当前的scrollView内容是否足够水平滚动

  • 判断当前的scrollView内容是否足够纵向滚动

  • 当前scrollView滚动到指定边

  • 是否已滚动到指定边

  • 获取当前的scrollView滚动到指定边时的contentOffset(包含contentInset)

  • 总页数,自动识别翻页方向

  • 当前页数,不支持动画,自动识别翻页方向

  • 设置当前页数,支持动画,自动识别翻页方向

  • 是否是最后一页,自动识别翻页方向

  • 快捷设置contentOffset.x

  • 快捷设置contentOffset.y

  • 设置自动布局视图悬停到指定父视图固定位置,在scrollViewDidScroll:中调用即可

    @param view 需要悬停的视图,须占满fromSuperview @param fromSuperview 起始的父视图,须是scrollView的子视图 @param toSuperview 悬停的目标视图,须是scrollView的父级视图,一般控制器self.view @param toPosition 需要悬停的目标位置,相对于toSuperview的originY位置 @return 相对于悬浮位置的距离,可用来设置导航栏透明度等

  • 是否开始识别pan手势

  • 是否允许同时识别多个手势

  • 是否另一个手势识别失败后,才能识别pan手势

  • 是否pan手势识别失败后,才能识别另一个手势

UIGestureRecognizer+UIKit

  • 获取手势直接作用的view,不同于view,此处是view的subview

  • 是否正在拖动中:Began || Changed

  • 是否是激活状态: isEnabled && (Began || Changed)

  • 判断手势是否正作用于指定视图

UIPanGestureRecognizer+UIKit

  • 当前滑动方向,如果多个方向滑动,取绝对值较大的一方,失败返回0

  • 当前滑动进度,滑动绝对值相对于手势视图的宽或高

  • 计算指定方向的滑动进度

UIPageControl+UIKit

UISlider+UIKit

UITextField+UIKit

  • 最大字数限制,0为无限制,二选一

  • 最大Unicode字数限制(中文为1,英文为0.5),0为无限制,二选一

  • 自定义文字改变处理句柄,自动trimString,默认nil

  • 文本长度发生改变,自动检测字数限制,用于代码设置text等场景

  • 获取满足最大字数限制的过滤后的文本,无需再调用textLengthChanged

  • 设置自动完成时间间隔,默认0.5秒,和autoCompleteBlock配套使用

  • 设置自动完成处理句柄,自动trimString,默认nil,注意输入框内容为空时会立即触发

  • 是否禁用长按菜单(拷贝、选择、粘贴等),默认NO

  • 自定义光标大小,不为0才会生效,默认zero不生效

  • 获取及设置当前选中文字范围

  • 移动光标到最后

  • 移动光标到指定位置,兼容动态text赋值

UITableView+UIKit

UITableViewCell+UIKit

  • 设置分割线内边距,iOS8+默认15.f,设为UIEdgeInsetsZero可去掉

  • 获取当前所属tableView

  • 获取当前显示indexPath

UICollectionViewCell+UIKit

UISearchBar+UIKit

UIViewController+UIKit

  • 判断当前控制器是否是根控制器。如果是导航栏的第一个控制器或者不含有导航栏,则返回YES

  • 判断当前控制器是否是子控制器。如果父控制器存在,且不是导航栏或标签栏控制器,则返回YES

  • 判断当前控制器是否是present弹出。如果是导航栏的第一个控制器且导航栏是present弹出,也返回YES

  • 判断当前控制器是否是iOS13+默认pageSheet弹出样式。该样式下导航栏高度等与默认样式不同

  • 获取祖先视图,标签栏存在时为标签栏根视图,导航栏存在时为导航栏根视图,否则为控制器根视图

  • 是否已经加载完数据,默认NO,加载数据完成后可标记为YES,可用于第一次加载时显示loading等判断

  • 移除子控制器,解决不能触发viewWillAppear等的bug

  • 添加子控制器到当前视图,解决不能触发viewWillAppear等的bug

  • 添加子控制器到指定视图,解决不能触发viewWillAppear等的bug