Wrapper
public class Wrapper<Base>
属性包装器(因struct只读,只能用class)
-
原始对象
Declaration
Swift
public private(set) var base: Base { get }
-
初始化方法
Declaration
Swift
public init(_ base: Base)
-
Undocumented
Declaration
Swift
public var safeInt: Int { get }
-
Undocumented
Declaration
Swift
public var safeBool: Bool { get }
-
Undocumented
Declaration
Swift
public var safeFloat: Float { get }
-
Undocumented
Declaration
Swift
public var safeDouble: Double { get }
-
Undocumented
Declaration
Swift
public var safeString: String { get }
-
Undocumented
Declaration
Swift
public var safeNumber: NSNumber { get }
-
Undocumented
Declaration
Swift
public var safeArray: [Any] { get }
-
Undocumented
Declaration
Swift
public var safeDictionary: [AnyHashable : Any] { get }
-
监听某个点对点消息,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeMessage(_ name: Notification.Name, block: @escaping (Notification) -> Void) -> String
Parameters
name
消息名称
block
消息句柄
Return Value
监听唯一标志
-
监听某个指定对象点对点消息,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeMessage(_ name: Notification.Name, object: Any?, block: @escaping (Notification) -> Void) -> String
Parameters
name
消息名称
object
消息对象,值为nil时表示所有
block
消息句柄
Return Value
监听唯一标志
-
监听某个点对点消息,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeMessage(_ name: Notification.Name, target: Any?, action: Selector) -> String
Parameters
name
消息名称
target
消息目标
action
目标动作,参数为通知对象
Return Value
监听唯一标志
-
监听某个指定对象点对点消息,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeMessage(_ name: Notification.Name, object: Any?, target: Any?, action: Selector) -> String
Parameters
name
消息名称
object
消息对象,值为nil时表示所有
target
消息目标
action
目标动作,参数为通知对象
Return Value
监听唯一标志
-
手工移除某个点对点消息指定监听
Declaration
Swift
public func unobserveMessage(_ name: Notification.Name, target: Any?, action: Selector?)
Parameters
name
消息名称
target
消息目标
action
目标动作
-
手工移除某个指定对象点对点消息指定监听
Declaration
Swift
public func unobserveMessage(_ name: Notification.Name, object: Any?, target: Any?, action: Selector?)
Parameters
name
消息名称
object
消息对象,值为nil时表示所有
target
消息目标
action
目标动作
-
手工移除某个指定对象点对点消息指定监听
Declaration
Swift
public func unobserveMessage(_ name: Notification.Name, identifier: String)
Parameters
name
消息名称
identifier
监听唯一标志
-
手工移除某个点对点消息所有监听
Declaration
Swift
public func unobserveMessage(_ name: Notification.Name)
Parameters
name
消息名称
-
手工移除某个指定对象点对点消息所有监听
Declaration
Swift
public func unobserveMessage(_ name: Notification.Name, object: Any?)
Parameters
name
消息名称
object
消息对象,值为nil时表示所有
-
手工移除所有点对点消息监听
Declaration
Swift
public func unobserveAllMessages()
-
发送点对点消息
Declaration
Swift
public func sendMessage(_ name: Notification.Name, toReceiver: Any)
Parameters
name
消息名称
toReceiver
消息接收者
-
发送点对点消息,附带对象
Declaration
Swift
public func sendMessage(_ name: Notification.Name, object: Any?, toReceiver: Any)
Parameters
name
消息名称
object
消息对象
toReceiver
消息接收者
-
发送点对点消息,附带对象和用户信息
Declaration
Swift
public func sendMessage(_ name: Notification.Name, object: Any?, userInfo: [AnyHashable : Any]?, toReceiver: Any)
Parameters
name
消息名称
object
消息对象
userInfo
用户信息
toReceiver
消息接收者
-
发送点对点消息
Declaration
Swift
public static func sendMessage(_ name: Notification.Name, toReceiver: Any)
Parameters
name
消息名称
toReceiver
消息接收者
-
发送点对点消息,附带对象
Declaration
Swift
public static func sendMessage(_ name: Notification.Name, object: Any?, toReceiver: Any)
Parameters
name
消息名称
object
消息对象
toReceiver
消息接收者
-
发送点对点消息,附带对象和用户信息
Declaration
Swift
public static func sendMessage(_ name: Notification.Name, object: Any?, userInfo: [AnyHashable : Any]?, toReceiver: Any)
Parameters
name
消息名称
object
消息对象
userInfo
用户信息
toReceiver
消息接收者
-
监听某个广播通知,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeNotification(_ name: Notification.Name, block: @escaping (Notification) -> Void) -> String
Parameters
name
通知名称
block
通知句柄
Return Value
监听唯一标志
-
监听某个指定对象广播通知,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeNotification(_ name: Notification.Name, object: Any?, block: @escaping (Notification) -> Void) -> String
Parameters
name
通知名称
object
通知对象,值为nil时表示所有
block
通知句柄
Return Value
监听唯一标志
-
监听某个广播通知,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeNotification(_ name: Notification.Name, target: Any?, action: Selector) -> String
Parameters
name
通知名称
target
通知目标
action
目标动作,参数为通知对象
Return Value
监听唯一标志
-
监听某个指定对象广播通知,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeNotification(_ name: Notification.Name, object: Any?, target: Any?, action: Selector) -> String
Parameters
name
通知名称
object
通知对象,值为nil时表示所有
target
通知目标
action
目标动作,参数为通知对象
Return Value
监听唯一标志
-
手工移除某个广播通知指定监听
Declaration
Swift
public func unobserveNotification(_ name: Notification.Name, target: Any?, action: Selector?)
Parameters
name
通知名称
target
通知目标
action
目标动作
-
手工移除某个指定对象广播通知指定监听
Declaration
Swift
public func unobserveNotification(_ name: Notification.Name, object: Any?, target: Any?, action: Selector?)
Parameters
name
通知名称
object
通知对象,值为nil时表示所有
target
通知目标
action
目标动作
-
手工移除某个指定对象广播通知指定监听
Declaration
Swift
public func unobserveNotification(_ name: Notification.Name, identifier: String)
Parameters
name
通知名称
identifier
监听唯一标志
-
手工移除某个广播通知所有监听
Declaration
Swift
public func unobserveNotification(_ name: Notification.Name)
Parameters
name
通知名称
-
手工移除某个指定对象广播通知所有监听
Declaration
Swift
public func unobserveNotification(_ name: Notification.Name, object: Any?)
Parameters
name
通知名称
object
通知对象,值为nil时表示所有
-
手工移除所有点对点消息监听
Declaration
Swift
public func unobserveAllNotifications()
-
发送广播通知,附带对象和用户信息
Declaration
Swift
public func postNotification(_ name: Notification.Name, object: Any? = nil, userInfo: [AnyHashable : Any]? = nil)
Parameters
name
通知名称
object
通知对象
userInfo
用户信息
-
发送广播通知,附带对象和用户信息
Declaration
Swift
public static func postNotification(_ name: Notification.Name, object: Any? = nil, userInfo: [AnyHashable : Any]? = nil)
Parameters
name
通知名称
object
通知对象
userInfo
用户信息
-
监听对象某个属性,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeProperty(_ property: String, block: @escaping (Any, [NSKeyValueChangeKey : Any]) -> Void) -> String
Parameters
property
属性名称
block
目标句柄,block参数依次为object、优化的change字典(不含NSNull)
Return Value
监听唯一标志
-
监听对象某个属性,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func observeProperty(_ property: String, target: Any?, action: Selector) -> String
Parameters
property
属性名称
target
目标对象
action
目标动作,action参数依次为object、优化的change字典(不含NSNull)
Return Value
监听唯一标志
-
手工移除某个属性指定监听
Declaration
Swift
public func unobserveProperty(_ property: String, target: Any?, action: Selector?)
Parameters
property
属性名称
target
目标对象,值为nil时移除所有对象(同UIControl)
action
目标动作,值为nil时移除所有动作(同UIControl)
-
手工移除某个属性指定监听
Declaration
Swift
public func unobserveProperty(_ property: String, identifier: String)
Parameters
property
属性名称
identifier
监听唯一标志
-
手工移除某个属性所有监听
Declaration
Swift
public func unobserveProperty(_ property: String)
Parameters
property
属性名称
-
手工移除所有属性所有监听
Declaration
Swift
public func unobserveAllProperties()
-
获取最顶部的视图控制器
Declaration
Swift
public var topViewController: UIViewController? { get }
-
获取最顶部的导航栏控制器。如果顶部VC不含导航栏,返回nil
Declaration
Swift
public var topNavigationController: UINavigationController? { get }
-
获取最顶部的显示控制器
Declaration
Swift
public var topPresentedController: UIViewController? { get }
-
使用最顶部的导航栏控制器打开控制器
Declaration
Swift
@discardableResult public func push(_ viewController: UIViewController, animated: Bool = true) -> Bool
-
使用最顶部的显示控制器弹出控制器,建议present导航栏控制器(可用来push)
Declaration
Swift
public func present(_ viewController: UIViewController, animated: Bool = true, completion: (() -> Void)? = nil)
-
使用最顶部的视图控制器打开控制器,自动判断push|present
Declaration
Swift
public func open(_ viewController: UIViewController, animated: Bool = true, completion: (() -> Void)? = nil)
-
关闭最顶部的视图控制器,自动判断pop|dismiss,返回是否成功
Declaration
Swift
@discardableResult public func close(animated: Bool = true, completion: (() -> Void)? = nil) -> Bool
-
获取当前主window
Declaration
Swift
public static var main: UIWindow? { get }
-
获取当前主场景
Declaration
Swift
@available(iOS 13.0, *) public static var mainScene: UIWindowScene? { get }
-
获取最顶部的视图控制器
Declaration
Swift
public static var topViewController: UIViewController? { get }
-
获取最顶部的导航栏控制器。如果顶部VC不含导航栏,返回nil
Declaration
Swift
public static var topNavigationController: UINavigationController? { get }
-
获取最顶部的显示控制器
Declaration
Swift
public static var topPresentedController: UIViewController? { get }
-
使用最顶部的导航栏控制器打开控制器
Declaration
Swift
@discardableResult public static func push(_ viewController: UIViewController, animated: Bool = true) -> Bool
-
使用最顶部的显示控制器弹出控制器,建议present导航栏控制器(可用来push)
Declaration
Swift
public static func present(_ viewController: UIViewController, animated: Bool = true, completion: (() -> Void)? = nil)
-
使用最顶部的视图控制器打开控制器,自动判断push|present
Declaration
Swift
public static func open(_ viewController: UIViewController, animated: Bool = true, completion: (() -> Void)? = nil)
-
关闭最顶部的视图控制器,自动判断pop|dismiss,返回是否成功
Declaration
Swift
@discardableResult public static func close(animated: Bool = true, completion: (() -> Void)? = nil) -> Bool
-
自定义open|close导航样式,默认automatic自动判断
Declaration
Swift
public var navigationOptions: NavigationOptions { get set }
-
打开控制器。1.如果打开导航栏,则调用present;2.否则如果导航栏存在,则调用push;3.否则调用present
Declaration
Swift
public func open(_ viewController: UIViewController, animated: Bool = true, completion: (() -> Void)? = nil)
-
关闭控制器,返回是否成功。1.如果导航栏不存在,则调用dismiss;2.否则如果已是导航栏底部,则调用dismiss;3.否则调用pop
Declaration
Swift
@discardableResult public func close(animated: Bool = true, completion: (() -> Void)? = nil) -> Bool
-
自定义工作流名称,支持二级(“."分隔);默认返回小写类名(去掉ViewController、Controller)
Declaration
Swift
public var workflowName: String { get set }
-
push新界面,完成时回调
Declaration
Swift
public func pushViewController(_ viewController: UIViewController, animated: Bool, completion: (() -> Void)? = nil)
-
pop当前界面,完成时回调
Declaration
Swift
@discardableResult public func popViewController(animated: Bool, completion: (() -> Void)? = nil) -> UIViewController?
-
pop到指定界面,完成时回调
Declaration
Swift
@discardableResult public func popToViewController(_ viewController: UIViewController, animated: Bool, completion: (() -> Void)? = nil) -> [UIViewController]?
-
pop到根界面,完成时回调
Declaration
Swift
@discardableResult public func popToRootViewController(animated: Bool, completion: (() -> Void)? = nil) -> [UIViewController]?
-
设置界面数组,完成时回调
Declaration
Swift
public func setViewControllers(_ viewControllers: [UIViewController], animated: Bool, completion: (() -> Void)? = nil)
-
当前最外层工作流名称,即topViewController的工作流名称
Declaration
Swift
public var topWorkflowName: String? { get }
-
push控制器,并清理最外层工作流(不属于工作流则不清理)
示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)、4、(5、6)、9
Declaration
Swift
public func push(_ viewController: UIViewController, popTopWorkflowAnimated: Bool, completion: (() -> Void)? = nil)
-
push控制器,并清理非根控制器(只保留根控制器)
示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、9
Declaration
Swift
public func push(_ viewController: UIViewController, popToRootWorkflowAnimated: Bool, completion: (() -> Void)? = nil)
-
push控制器,并从外到内清理指定工作流,直到遇到不属于指定工作流的控制器停止
示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)、4、9
Declaration
Swift
public func push(_ viewController: UIViewController, popWorkflows: [String]?, animated: Bool = true, completion: (() -> Void)? = nil)
-
pop方式清理最外层工作流,至少保留一个根控制器(不属于工作流则不清理)
示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)、4、(5、6)
Declaration
Swift
public func popTopWorkflow(animated: Bool = true, completion: (() -> Void)? = nil)
-
pop方式从外到内清理指定工作流,直到遇到不属于指定工作流的控制器停止,至少保留一个根控制器
示例:1、(2、3)、4、(5、6)、(7、8),操作后为1、(2、3)、4
Declaration
Swift
public func popWorkflows(_ workflows: [String]?, animated: Bool = true, completion: (() -> Void)? = nil)
-
使用swizzle替换对象实例方法为block实现,identifier相同时仅执行一次。结合isSwizzleInstanceMethod使用
Declaration
Swift
@discardableResult public func swizzleInstanceMethod(_ originalSelector: Selector, identifier: String, block: @escaping (AnyClass, Selector, @escaping () -> IMP) -> Any) -> Bool
Parameters
originalSelector
原始方法
identifier
唯一标识
block
实现句柄
Return Value
是否成功
-
判断对象是否使用swizzle替换过指定identifier实例方法。结合swizzleInstanceMethod使用
因为实际替换的是类方法,为了防止影响该类其它对象,需先判断该对象是否替换过,仅替换过才执行自定义流程
Declaration
Swift
public func isSwizzleInstanceMethod(_ originalSelector: Selector, identifier: String) -> Bool
Parameters
originalSelector
原始方法
identifier
唯一标识
Return Value
是否替换
-
安全调用方法,如果不能响应,则忽略之
Declaration
Swift
@discardableResult public func invokeMethod(_ selector: Selector) -> Any?
Parameters
selector
要执行的方法
Return Value
方法执行后返回的值。如果无返回值,则为nil
-
安全调用方法,如果不能响应,则忽略之
Declaration
Swift
@discardableResult public func invokeMethod(_ selector: Selector, object: Any?) -> Any?
Parameters
selector
要执行的方法
object
传递的方法参数,非id类型可使用桥接,如int a = 1;(__bridge id)(void *)a
Return Value
方法执行后返回的值。如果无返回值,则为nil
-
安全调用方法,支持多个参数
Declaration
Swift
@discardableResult public func invokeMethod(_ selector: Selector, objects: [Any]) -> Any?
Parameters
selector
要执行的方法
objects
传递的参数数组
Return Value
方法执行后返回的值。如果无返回值,则为nil
-
对super发送消息
Declaration
Swift
@discardableResult public func invokeSuperMethod(_ selector: Selector) -> Any?
Parameters
selector
要执行的方法,需返回id类型
Return Value
方法执行后返回的值
-
对super发送消息,可传递参数
Declaration
Swift
@discardableResult public func invokeSuperMethod(_ selector: Selector, object: Any?) -> Any?
Parameters
selector
要执行的方法,需返回id类型
object
传递的方法参数
Return Value
方法执行后返回的值
-
安全调用内部属性获取方法,如果属性不存在,则忽略之
如果iOS13系统UIView调用部分valueForKey:方法闪退,且没有好的替代方案,可尝试调用此方法
Declaration
Swift
public func invokeGetter(_ name: String) -> Any?
Parameters
name
内部属性名称
Return Value
属性值
-
安全调用内部属性设置方法,如果属性不存在,则忽略之
如果iOS13系统UIView调用部分valueForKey:方法闪退,且没有好的替代方案,可尝试调用此方法
Declaration
Swift
@discardableResult public func invokeSetter(_ name: String, object: Any?) -> Any?
Parameters
name
内部属性名称
object
传递的方法参数
Return Value
方法执行后返回的值
-
临时对象,强引用,支持KVO
备注:key的几种形式的声明和使用,下同
- 声明:static char kAssociatedObjectKey; 使用:&kAssociatedObjectKey
- 声明:static void *kAssociatedObjectKey = &kAssociatedObjectKey; 使用:kAssociatedObjectKey
- 声明和使用直接用getter方法的selector,如\@selector(xxx)、_cmd
- 声明和使用直接用c字符串,如"kAssociatedObjectKey"
Declaration
Swift
public var tempObject: Any? { get set }
-
读取关联属性
Declaration
Swift
public func property(forName: String) -> Any?
Parameters
forName
属性名称
Return Value
属性值
-
设置强关联属性,支持KVO
Declaration
Swift
public func setProperty(_ object: Any?, forName: String)
Parameters
object
属性值
forName
属性名称
-
设置赋值关联属性,支持KVO,注意可能会产生野指针
Declaration
Swift
public func setPropertyAssign(_ object: Any?, forName: String)
Parameters
object
属性值
forName
属性名称
-
设置拷贝关联属性,支持KVO
Declaration
Swift
public func setPropertyCopy(_ object: Any?, forName: String)
Parameters
object
属性值
forName
属性名称
-
设置弱引用关联属性,支持KVO,OC不支持weak关联属性
Declaration
Swift
public func setPropertyWeak(_ object: Any?, forName: String)
Parameters
object
属性值
forName
属性名称
-
给对象绑定上另一个对象以供后续取出使用,如果 object 传入 nil 则会清除该 key 之前绑定的对象
Declaration
Swift
public func bindObject(_ object: Any?, forKey: String)
Parameters
object
对象,会被 strong 强引用
forKey
键名
-
给对象绑定上另一个弱引用对象以供后续取出使用,如果 object 传入 nil 则会清除该 key 之前绑定的对象
Declaration
Swift
public func bindObjectWeak(_ object: Any?, forKey: String)
Parameters
object
对象,不会被 strong 强引用
forKey
键名
-
取出之前使用 bind 方法绑定的对象
Declaration
Swift
public func boundObject(forKey: String) -> Any?
Parameters
forKey
键名
Return Value
绑定的对象
-
给对象绑定上一个 double 值以供后续取出使用
Declaration
Swift
public func bindDouble(_ value: Double, forKey: String)
Parameters
value
double值
forKey
键名
-
取出之前用 bindDouble:forKey: 绑定的值
Declaration
Swift
public func boundDouble(forKey: String) -> Double
Parameters
forKey
键名
Return Value
绑定的值
-
给对象绑定上一个 BOOL 值以供后续取出使用
Declaration
Swift
public func bindBool(_ value: Bool, forKey: String)
Parameters
value
布尔值
forKey
键名
-
取出之前用 bindBool:forKey: 绑定的值
Declaration
Swift
public func boundBool(forKey: String) -> Bool
Parameters
forKey
键名
Return Value
绑定的值
-
给对象绑定上一个 NSInteger 值以供后续取出使用
Declaration
Swift
public func bindInt(_ value: Int, forKey: String)
Parameters
value
整数值
forKey
键名
-
取出之前用 bindInt:forKey: 绑定的值
Declaration
Swift
public func boundInt(forKey: String) -> Int
Parameters
forKey
键名
Return Value
绑定的值
-
移除之前使用 bind 方法绑定的对象
Declaration
Swift
public func removeBinding(forKey: String)
Parameters
forKey
键名
-
移除之前使用 bind 方法绑定的所有对象
Declaration
Swift
public func removeAllBindings()
-
返回当前有绑定对象存在的所有的 key 的数组,数组中元素的顺序是随机的,如果不存在任何 key,则返回一个空数组
Declaration
Swift
public func allBindingKeys() -> [String]
-
返回是否设置了某个 key
Declaration
Swift
public func hasBindingKey(_ key: String) -> Bool
Parameters
key
键名
Return Value
是否绑定
-
交换类实例方法。复杂情况可能会冲突
Declaration
Swift
@discardableResult public static func exchangeInstanceMethod(_ originalSelector: Selector, swizzleMethod: Selector) -> Bool
Parameters
originalSelector
原始方法
swizzleMethod
交换方法
Return Value
是否成功
-
交换类静态方法。复杂情况可能会冲突
Declaration
Swift
@discardableResult public static func exchangeClassMethod(_ originalSelector: Selector, swizzleMethod: Selector) -> Bool
Parameters
originalSelector
原始方法
swizzleMethod
交换方法
Return Value
是否成功
-
交换类实例方法为block实现。复杂情况可能会冲突
swizzleBlock示例:^(__unsafe_unretained UIViewController selfObject, BOOL animated){ ((void()(id, SEL, BOOL))objc_msgSend)(selfObject, swizzleSelector, animated); }
Declaration
Swift
@discardableResult public static func exchangeInstanceMethod(_ originalSelector: Selector, swizzleMethod: Selector, block: Any) -> Bool
Parameters
originalSelector
原始方法
swizzleMethod
交换方法
block
实现block
Return Value
是否成功
-
交换类静态方法为block实现。复杂情况可能会冲突
swizzleBlock示例:^(__unsafe_unretained Class selfClass, BOOL animated){ ((void(*)(id, SEL, BOOL))objc_msgSend)(selfClass, swizzleSelector, animated); }
Declaration
Swift
@discardableResult public static func exchangeClassMethod(_ originalSelector: Selector, swizzleMethod: Selector, block: Any) -> Bool
Parameters
originalSelector
原始方法
swizzleMethod
交换方法
block
实现block
Return Value
是否成功
-
生成原始方法对应的随机交换方法
Declaration
Swift
public static func exchangeSwizzleSelector(_ selector: Selector) -> Selector
Parameters
selector
原始方法
Return Value
交换方法
-
通用swizzle替换方法为block实现,支持类和对象,identifier有值且相同时仅执行一次。复杂情况不会冲突,推荐使用
Declaration
Swift
@discardableResult public static func swizzleMethod(_ target: Any?, selector: Selector, identifier: String?, block: @escaping (AnyClass, Selector, @escaping () -> IMP) -> Any) -> Bool
Parameters
target
目标类或对象
selector
原始方法
identifier
唯一标识,有值且相同时仅执行一次
block
实现句柄
Return Value
是否成功
-
使用swizzle替换类实例方法为block实现。复杂情况不会冲突,推荐使用
Swift实现代码示例: NSObject.fw.swizzleInstanceMethod(UIViewController.self, selector: NSSelectorFromString(“viewDidLoad”)) { targetClass, originalCMD, originalIMP in let swizzleIMP: @convention(block)(UIViewController) -> Void = { selfObject in typealias originalMSGType = @convention©(UIViewController, Selector) -> Void let originalMSG: originalMSGType = unsafeBitCast(originalIMP(), to: originalMSGType.self) originalMSG(selfObject, originalCMD)
// ... } return unsafeBitCast(swizzleIMP, to: AnyObject.self)
}
Declaration
Swift
@discardableResult public static func swizzleInstanceMethod(_ originalClass: AnyClass, selector: Selector, block: @escaping (AnyClass, Selector, @escaping () -> IMP) -> Any) -> Bool
Parameters
originalClass
原始类
selector
原始方法
block
实现句柄
Return Value
是否成功
-
使用swizzle替换类静态方法为block实现。复杂情况不会冲突,推荐使用
Declaration
Swift
@discardableResult public static func swizzleClassMethod(_ originalClass: AnyClass, selector: Selector, block: @escaping (AnyClass, Selector, @escaping () -> IMP) -> Any) -> Bool
Parameters
originalClass
原始类
selector
原始方法
block
实现句柄
Return Value
是否成功
-
使用swizzle替换类实例方法为block实现,identifier相同时仅执行一次。复杂情况不会冲突,推荐使用
Declaration
Swift
@discardableResult public static func swizzleInstanceMethod(_ originalClass: AnyClass, selector: Selector, identifier: String, block: @escaping (AnyClass, Selector, @escaping () -> IMP) -> Any) -> Bool
Parameters
originalClass
原始类
selector
原始方法
identifier
唯一标识
block
实现句柄
Return Value
是否成功
-
使用swizzle替换类静态方法为block实现,identifier相同时仅执行一次。复杂情况不会冲突,推荐使用
Declaration
Swift
@discardableResult public static func swizzleClassMethod(_ originalClass: AnyClass, selector: Selector, identifier: String, block: @escaping (AnyClass, Selector, @escaping () -> IMP) -> Any) -> Bool
Parameters
originalClass
原始类
selector
原始方法
identifier
唯一标识
block
实现句柄
Return Value
是否成功
-
获取类方法列表,支持meta类(objc_getMetaClass)
Declaration
Swift
public static func classMethods(_ clazz: AnyClass, superclass: Bool = false) -> [String]
Parameters
clazz
指定类
superclass
是否包含父类,包含则递归到NSObject,默认false
Return Value
方法列表
-
获取类属性列表,支持meta类(objc_getMetaClass)
Declaration
Swift
public static func classProperties(_ clazz: AnyClass, superclass: Bool = false) -> [String]
Parameters
clazz
指定类
superclass
是否包含父类,包含则递归到NSObject,默认false
Return Value
属性列表
-
获取类Ivar列表,支持meta类(objc_getMetaClass)
Declaration
Swift
public static func classIvars(_ clazz: AnyClass, superclass: Bool = false) -> [String]
Parameters
clazz
指定类
superclass
是否包含父类,包含则递归到NSObject,默认false
Return Value
Ivar列表
-
Undocumented
Declaration
Swift
public static func encoded<T>(_ value: T, using encoder: AnyEncoder = JSONEncoder()) throws -> Data where T : Encodable
-
Undocumented
Declaration
Swift
public func decoded<T: Decodable>(as type: T.Type = T.self, using decoder: AnyDecoder = JSONDecoder()) throws -> T
-
Foundation对象编码为json数据
Declaration
Swift
public static func jsonEncode(_ object: Any) -> Data?
-
json数据解码为Foundation对象
Declaration
Swift
public var jsonDecode: Any? { get }
-
base64编码
Declaration
Swift
public var base64Encode: Data { get }
-
base64解码
Declaration
Swift
public var base64Decode: Data? { get }
-
转换为UTF8字符串
Declaration
Swift
public var utf8String: String? { get }
-
Foundation对象编码为json字符串
Declaration
Swift
public static func jsonEncode(_ object: Any) -> String?
-
json字符串解码为Foundation对象
Declaration
Swift
public var jsonDecode: Any? { get }
-
base64编码
Declaration
Swift
public var base64Encode: String? { get }
-
base64解码
Declaration
Swift
public var base64Decode: String? { get }
-
计算长度,中文为1,英文为0.5,表情为2
Declaration
Swift
public var unicodeLength: UInt { get }
-
截取字符串,中文为1,英文为0.5,表情为2
Declaration
Swift
public func unicodeSubstring(_ length: UInt) -> String
-
Unicode中文编码,将中文转换成Unicode字符串(如\u7E8C)
Declaration
Swift
public var unicodeEncode: String { get }
-
Unicode中文解码,将Unicode字符串(如\u7E8C)转换成中文
Declaration
Swift
public var unicodeDecode: String { get }
-
url参数编码,适用于query参数编码
示例:http://test.com?id=我是中文 => http%3A%2F%2Ftest.com%3Fid%3D%E6%88%91%E6%98%AF%E4%B8%AD%E6%96%87
Declaration
Swift
public var urlEncodeComponent: String? { get }
-
url参数解码,适用于query参数解码
示例:http%3A%2F%2Ftest.com%3Fid%3D%E6%88%91%E6%98%AF%E4%B8%AD%E6%96%87 => http://test.com?id=我是中文
Declaration
Swift
public var urlDecodeComponent: String? { get }
-
url编码,适用于整个url编码
示例:http://test.com?id=我是中文 => http://test.com?id=%E6%88%91%E6%98%AF%E4%B8%AD%E6%96%87
Declaration
Swift
public var urlEncode: String? { get }
-
url解码,适用于整个url解码
示例:http://test.com?id=%E6%88%91%E6%98%AF%E4%B8%AD%E6%96%87 => http://test.com?id=我是中文
Declaration
Swift
public var urlDecode: String? { get }
-
字典编码为URL参数字符串
Declaration
Swift
public static func queryEncode(_ dict: [String : Any]) -> String
-
URL参数字符串解码为字典,支持完整URL
Declaration
Swift
public var queryDecode: [String : String] { get }
-
md5编码
Declaration
Swift
public var md5Encode: String { get }
-
文件md5编码
Declaration
Swift
public var md5EncodeFile: String? { get }
-
去掉首尾空白字符
Declaration
Swift
public var trimString: String { get }
-
首字母大写
Declaration
Swift
public var ucfirstString: String { get }
-
首字母小写
Declaration
Swift
public var lcfirstString: String { get }
-
驼峰转下划线
Declaration
Swift
public var underlineString: String { get }
-
下划线转驼峰
Declaration
Swift
public var camelString: String { get }
-
中文转拼音
Declaration
Swift
public var pinyinString: String { get }
-
是否包含Emoji表情
Declaration
Swift
public var containsEmoji: Bool { get }
-
过滤JSON解码特殊字符
兼容\uD800-\uDFFF引起JSON解码报错3840问题,不报错时无需调用 规则:只允许以\uD800-\uDBFF高位开头,紧跟\uDC00-\uDFFF低位;其他全不允许 参考:https://github.com/SBJson/SBJson/blob/trunk/Classes/SBJson5StreamTokeniser.m
Declaration
Swift
public var escapeJson: String { get }
-
转换为UTF8数据
Declaration
Swift
public var utf8Data: Data? { get }
-
转换为URL
Declaration
Swift
public var url: URL? { get }
-
转换为NSNumber
Declaration
Swift
public var number: NSNumber? { get }
-
从指定位置截取子串
Declaration
Swift
public func substring(from index: Int) -> String
-
截取子串到指定位置
Declaration
Swift
public func substring(to index: Int) -> String
-
截取指定范围的子串
Declaration
Swift
public func substring(with range: NSRange) -> String
-
截取指定范围的子串
Declaration
Swift
public func substring(with range: Range<Int>) -> String
-
生成URL,中文自动URL编码
Declaration
Swift
public static func url(string: String?) -> URL?
-
生成URL,中文自动URL编码,支持基准URL
Declaration
Swift
public static func url(string: String?, relativeTo baseURL: URL?) -> URL?
-
获取当前query的参数字典,不含空值
Declaration
Swift
public var queryDictionary: [String : String] { get }
-
获取路径URI字符串,不含host|port等,包含path|query|fragment等
Declaration
Swift
public var pathURI: String? { get }
-
快速读取本地化语言
Declaration
Swift
public var localized: String { get }
-
快速读取本地化语言,指定Bundle
Declaration
Swift
public func localized(_ bundle: Bundle?) -> String
Parameters
bundle
语言所在Bundle,默认主Bundle
Return Value
本地化字符串
-
快速读取本地化语言,指定表名和Bundle
Declaration
Swift
public func localized(_ table: String?, _ bundle: Bundle? = nil) -> String
Parameters
table
本地化表名,默认Localizable.strings
bundle
语言所在Bundle,默认主Bundle
Return Value
本地化字符串
-
根据本地化语言加载当前bundle内语言文件,支持动态切换
Declaration
Swift
public func localizedBundle() -> Bundle
-
加载当前bundle内指定语言文件,加载失败返回nil
Declaration
Swift
public func localizedBundle(language: String?) -> Bundle?
-
读取应用当前语言,如果localizedLanguage存在则返回,否则返回systemLanguage
Declaration
Swift
public static var currentLanguage: String? { get }
-
读取应用系统语言,返回preferredLocalizations(支持应用设置,不含区域),示例:zh-Hans|en
Declaration
Swift
public static var systemLanguage: String? { get }
-
读取或设置自定义本地化语言,未自定义时为空。(语言值对应本地化文件存在才会立即生效,如zh-Hans|en),为空时清空自定义,会触发通知。默认只处理mainBundle语言,如果需要处理三方SDK和系统组件语言,详见Bundle分类
Declaration
Swift
public static var localizedLanguage: String? { get set }
-
读取本地化字符串,可指定table,strings文件需位于mainBundle,支持动态切换
Declaration
Swift
public static func localizedString(_ key: String, table: String? = nil) -> String
-
加载指定名称bundle对象,bundle文件需位于mainBundle
Declaration
Swift
public static func bundle(name: String) -> Bundle?
-
加载指定类所在bundle对象,可指定子目录名称,一般用于Framework内bundle文件
Declaration
Swift
public static func bundle(with clazz: AnyClass, name: String?) -> Bundle?
-
读取指定bundle内strings文件本地化字符串,支持动态切换
Declaration
Swift
public static func localizedString(_ key: String, bundle: Bundle?) -> String
-
读取指定bundle内strings文件本地化字符串,指定table,支持动态切换
Declaration
Swift
public static func localizedString(_ key: String, table: String?, bundle: Bundle?) -> String
-
是否是调试模式
Declaration
Swift
public static var isDebug: Bool { get }
-
是否是模拟器
Declaration
Swift
public static var isSimulator: Bool { get }
-
是否是iPhone
Declaration
Swift
public static var isIphone: Bool { get }
-
是否是iPad
Declaration
Swift
public static var isIpad: Bool { get }
-
是否是Mac
Declaration
Swift
public static var isMac: Bool { get }
-
界面是否横屏
Declaration
Swift
public static var isLandscape: Bool { get }
-
设备是否横屏,无论支不支持横屏
Declaration
Swift
public static var isDeviceLandscape: Bool { get }
-
设置界面方向,支持旋转方向时生效
Declaration
Swift
@discardableResult public static func setDeviceOrientation(_ orientation: UIDeviceOrientation) -> Bool
-
iOS系统版本
Declaration
Swift
public static var iosVersion: Double { get }
-
是否是指定iOS主版本
Declaration
Swift
public static func isIos(_ version: Int) -> Bool
-
是否是大于等于指定iOS主版本
Declaration
Swift
public static func isIosLater(_ version: Int) -> Bool
-
设备尺寸,跟横竖屏无关
Declaration
Swift
public static var deviceSize: CGSize { get }
-
设备宽度,跟横竖屏无关
Declaration
Swift
public static var deviceWidth: CGFloat { get }
-
设备高度,跟横竖屏无关
Declaration
Swift
public static var deviceHeight: CGFloat { get }
-
设备分辨率,跟横竖屏无关
Declaration
Swift
public static var deviceResolution: CGSize { get }
-
屏幕尺寸
Declaration
Swift
public static var screenSize: CGSize { get }
-
屏幕宽度
Declaration
Swift
public static var screenWidth: CGFloat { get }
-
屏幕高度
Declaration
Swift
public static var screenHeight: CGFloat { get }
-
屏幕像素比例
Declaration
Swift
public static var screenScale: CGFloat { get }
-
判断屏幕英寸
Declaration
Swift
public static func isScreenInch(_ inch: ScreenInch) -> Bool
-
是否是全面屏屏幕
Declaration
Swift
public static var isNotchedScreen: Bool { get }
-
屏幕一像素的大小
Declaration
Swift
public static var pixelOne: CGFloat { get }
-
检查是否含有安全区域,可用来判断iPhoneX
Declaration
Swift
public static var hasSafeAreaInsets: Bool { get }
-
屏幕安全区域距离
Declaration
Swift
public static var safeAreaInsets: UIEdgeInsets { get }
-
状态栏高度,与是否隐藏无关
Declaration
Swift
public static var statusBarHeight: CGFloat { get }
-
导航栏高度,与是否隐藏无关
Declaration
Swift
public static var navigationBarHeight: CGFloat { get }
-
顶部栏高度,包含状态栏、导航栏,与是否隐藏无关
Declaration
Swift
public static var topBarHeight: CGFloat { get }
-
标签栏高度,与是否隐藏无关
Declaration
Swift
public static var tabBarHeight: CGFloat { get }
-
工具栏高度,与是否隐藏无关
Declaration
Swift
public static var toolBarHeight: CGFloat { get }
-
指定等比例缩放参考设计图尺寸,默认{375,812},宽度常用
Declaration
Swift
public static var referenceSize: CGSize { get set }
-
获取当前屏幕宽度缩放比例,宽度常用
Declaration
Swift
public static var relativeScale: CGFloat { get }
-
获取当前屏幕高度缩放比例,高度不常用
Declaration
Swift
public static var relativeHeightScale: CGFloat { get }
-
获取相对设计图宽度等比例缩放值
Declaration
Swift
public static func relativeValue(_ value: CGFloat) -> CGFloat
-
获取相对设计图高度等比例缩放值
Declaration
Swift
public static func relativeHeight(_ value: CGFloat) -> CGFloat
-
获取相对设计图宽度等比例缩放时的固定宽度值
Declaration
Swift
public static func fixedValue(_ value: CGFloat) -> CGFloat
-
获取相对设计图高度等比例缩放时的固定高度值
Declaration
Swift
public static func fixedHeight(_ value: CGFloat) -> CGFloat
-
基于指定的倍数(0取当前设备),对传进来的floatValue进行像素取整
Declaration
Swift
public static func flatValue(_ value: CGFloat, scale: CGFloat = 0) -> CGFloat
-
当前状态栏布局高度,导航栏隐藏时为0,推荐使用
Declaration
Swift
public var statusBarHeight: CGFloat { get }
-
当前导航栏布局高度,隐藏时为0,推荐使用
Declaration
Swift
public var navigationBarHeight: CGFloat { get }
-
当前顶部栏布局高度,导航栏隐藏时为0,推荐使用
Declaration
Swift
public var topBarHeight: CGFloat { get }
-
当前标签栏布局高度,隐藏时为0,推荐使用
Declaration
Swift
public var tabBarHeight: CGFloat { get }
-
当前工具栏布局高度,隐藏时为0,推荐使用
Declaration
Swift
public var toolBarHeight: CGFloat { get }
-
当前底部栏布局高度,包含标签栏和工具栏,隐藏时为0,推荐使用
Declaration
Swift
public var bottomBarHeight: CGFloat { get }
-
从 appearance 里取值并赋值给当前实例,通常在对象的 init 里调用
Declaration
Swift
public func applyAppearance()
-
是否启用自动布局适配RTL,启用后自动将Left|Right转换为Leading|Trailing,默认NO
如果项目兼容阿拉伯语等,需要启用RTL从右向左布局,开启此开关即可,无需修改布局代码 手工切换视图左右布局方法:[UIView appearance].semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
Declaration
Swift
public static var autoLayoutRTL: Bool { get set }
-
是否全局自动等比例缩放布局,默认NO
启用后所有offset值都会自动*relativeScale,注意可能产生的影响。 启用后注意事项:
- 屏幕宽度约束不能使用screenWidth约束,需要使用375设计标准
- 尽量不使用screenWidth固定屏幕宽度方式布局,推荐相对于父视图布局
- 只会对offset值生效,其他属性不受影响
- 如需特殊处理,可以指定某个视图关闭该功能
Declaration
Swift
public static var autoScale: Bool { get set }
-
视图是否自动等比例缩放布局,默认返回全局开关
Declaration
Swift
public var autoScale: Bool { get set }
-
是否启用自动布局
Declaration
Swift
public var autoLayout: Bool { get set }
-
执行子视图自动布局,自动计算子视图尺寸。需先将视图添加到界面(如设置为tableHeaderView),再调用即可(iOS8+)
Declaration
Swift
public func autoLayoutSubviews()
-
计算动态布局视图指定宽度时的高度。使用AutoLayout必须约束完整,不使用AutoLayout会调用view的sizeThatFits:方法
Declaration
Swift
public func layoutHeight(width: CGFloat) -> CGFloat
-
计算动态布局视图指定高度时的宽度。使用AutoLayout必须约束完整,不使用AutoLayout会调用view的sizeThatFits:方法
Declaration
Swift
public func layoutWidth(height: CGFloat) -> CGFloat
-
设置水平方向抗压缩优先级
Declaration
Swift
public var compressionHorizontal: UILayoutPriority { get set }
-
设置垂直方向抗压缩优先级
Declaration
Swift
public var compressionVertical: UILayoutPriority { get set }
-
设置水平方向抗拉伸优先级
Declaration
Swift
public var huggingHorizontal: UILayoutPriority { get set }
-
设置垂直方向抗拉伸优先级
Declaration
Swift
public var huggingVertical: UILayoutPriority { get set }
-
设置视图是否收缩,默认NO,YES时常量值为0,NO时常量值为原始值
Declaration
Swift
public var collapsed: Bool { get set }
-
设置视图是否自动收缩,如image为nil,text为nil、@“"时自动收缩,默认NO
Declaration
Swift
public var autoCollapse: Bool { get set }
-
设置视图是否隐藏时自动收缩、显示时自动展开,默认NO
Declaration
Swift
public var hiddenCollapse: Bool { get set }
-
添加视图的收缩常量,必须先添加才能生效
Declaration
Swift
public func addCollapseConstraint(_ constraint: NSLayoutConstraint)
-
父视图居中,可指定偏移距离
Declaration
Swift
@discardableResult public func alignCenter(toSuperview offset: CGPoint = .zero) -> [NSLayoutConstraint]
Parameters
offset
偏移距离,默认zero
Return Value
约束数组
-
父视图属性居中,可指定偏移距离
Declaration
Swift
@discardableResult public func alignAxis(toSuperview axis: NSLayoutConstraint.Attribute, offset: CGFloat = 0) -> NSLayoutConstraint
Parameters
axis
居中属性
offset
偏移距离,默认0
Return Value
布局约束
-
与另一视图居中相同,可指定偏移距离
Declaration
Swift
@discardableResult public func alignAxis(_ axis: NSLayoutConstraint.Attribute, toView: Any, offset: CGFloat = 0) -> NSLayoutConstraint
Parameters
axis
居中属性
toView
另一视图或UILayoutGuide,下同
offset
偏移距离,默认0
Return Value
布局约束
-
与另一视图居中指定比例
Declaration
Swift
@discardableResult public func alignAxis(_ axis: NSLayoutConstraint.Attribute, toView: Any, multiplier: CGFloat) -> NSLayoutConstraint
Parameters
axis
居中属性
toView
另一视图
multiplier
指定比例
Return Value
布局约束
-
与父视图四条边属性相同,可指定insets距离
Declaration
Swift
@discardableResult public func pinEdges(toSuperview insets: UIEdgeInsets = .zero) -> [NSLayoutConstraint]
Parameters
insets
指定距离insets,默认zero
Return Value
约束数组
-
与父视图三条边属性距离指定距离
Declaration
Swift
@discardableResult public func pinEdges(toSuperview insets: UIEdgeInsets = .zero, excludingEdge: NSLayoutConstraint.Attribute) -> [NSLayoutConstraint]
Parameters
insets
指定距离insets
excludingEdge
排除的边
Return Value
约束数组
-
与父视图水平方向两条边属性相同,可指定偏移距离
Declaration
Swift
@discardableResult public func pinHorizontal(toSuperview inset: CGFloat = .zero) -> [NSLayoutConstraint]
Parameters
inset
偏移距离
Return Value
约束数组
-
与父视图垂直方向两条边属性相同,可指定偏移距离
Declaration
Swift
@discardableResult public func pinVertical(toSuperview inset: CGFloat = .zero) -> [NSLayoutConstraint]
Parameters
inset
偏移距离
Return Value
约束数组
-
与父视图边属性相同,可指定偏移距离和关系
Declaration
Swift
@discardableResult public func pinEdge(toSuperview edge: NSLayoutConstraint.Attribute, inset: CGFloat = .zero, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint
Parameters
edge
指定边属性
inset
偏移距离,默认0
relation
约束关系,默认相等
Return Value
布局约束
-
与指定视图边属性相同,可指定偏移距离和关系
Declaration
Swift
@discardableResult public func pinEdge(_ edge: NSLayoutConstraint.Attribute, toEdge: NSLayoutConstraint.Attribute, ofView: Any, offset: CGFloat = 0, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint
Parameters
edge
指定边属性
toEdge
另一视图边属性
ofView
另一视图
offset
偏移距离,默认0
relation
约束关系,默认相等
Return Value
布局约束
-
父视图安全区域居中,可指定偏移距离。iOS11以下使用Superview实现,下同
Declaration
Swift
@discardableResult public func alignCenter(toSafeArea offset: CGPoint) -> [NSLayoutConstraint]
Parameters
offset
偏移距离
Return Value
约束数组
-
父视图安全区域属性居中,可指定偏移距离
Declaration
Swift
@discardableResult public func alignAxis(toSafeArea axis: NSLayoutConstraint.Attribute, offset: CGFloat = .zero) -> NSLayoutConstraint
Parameters
axis
居中属性
offset
偏移距离,默认0
Return Value
布局约束
-
与父视图安全区域四条边属性相同,可指定距离insets
Declaration
Swift
@discardableResult public func pinEdges(toSafeArea insets: UIEdgeInsets) -> [NSLayoutConstraint]
Parameters
insets
指定距离insets
Return Value
约束数组
-
与父视图安全区域三条边属性距离指定距离
Declaration
Swift
@discardableResult public func pinEdges(toSafeArea insets: UIEdgeInsets, excludingEdge: NSLayoutConstraint.Attribute) -> [NSLayoutConstraint]
Parameters
insets
指定距离insets
excludingEdge
排除的边
Return Value
约束数组
-
与父视图安全区域水平方向两条边属性相同,可指定偏移距离
Declaration
Swift
@discardableResult public func pinHorizontal(toSafeArea inset: CGFloat) -> [NSLayoutConstraint]
Parameters
inset
偏移距离
Return Value
约束数组
-
与父视图安全区域垂直方向两条边属性相同,可指定偏移距离
Declaration
Swift
@discardableResult public func pinVertical(toSafeArea inset: CGFloat) -> [NSLayoutConstraint]
Parameters
inset
偏移距离
Return Value
约束数组
-
与父视图安全区域边属性相同,可指定偏移距离和关系
Declaration
Swift
@discardableResult public func pinEdge(toSafeArea edge: NSLayoutConstraint.Attribute, inset: CGFloat = .zero, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint
Parameters
edge
指定边属性
inset
偏移距离,默认0
relation
约束关系,默认相等
Return Value
布局约束
-
设置宽高尺寸
Declaration
Swift
@discardableResult public func setDimensions(_ size: CGSize) -> [NSLayoutConstraint]
Parameters
size
尺寸大小
Return Value
约束数组
-
设置某个尺寸,可指定关系
Declaration
Swift
@discardableResult public func setDimension(_ dimension: NSLayoutConstraint.Attribute, size: CGFloat, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint
Parameters
dimension
尺寸属性
size
尺寸大小
relation
约束关系,默认相等
Return Value
布局约束
-
与视图自身尺寸属性指定比例,指定关系
Declaration
Swift
@discardableResult public func matchDimension(_ dimension: NSLayoutConstraint.Attribute, toDimension: NSLayoutConstraint.Attribute, multiplier: CGFloat, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint
Parameters
dimension
尺寸属性
toDimension
目标尺寸属性
multiplier
指定比例
relation
约束关系
Return Value
布局约束
-
与指定视图尺寸属性相同,可指定相差大小和关系
Declaration
Swift
@discardableResult public func matchDimension(_ dimension: NSLayoutConstraint.Attribute, toDimension: NSLayoutConstraint.Attribute, ofView: Any, offset: CGFloat = .zero, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint
Parameters
dimension
尺寸属性
toDimension
目标尺寸属性
ofView
目标视图
offset
相差大小,默认0
relation
约束关系,默认相等
Return Value
布局约束
-
与指定视图尺寸属性指定比例,可指定关系
Declaration
Swift
@discardableResult public func matchDimension(_ dimension: NSLayoutConstraint.Attribute, toDimension: NSLayoutConstraint.Attribute, ofView: Any, multiplier: CGFloat, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint
Parameters
dimension
尺寸属性
toDimension
目标尺寸属性
ofView
目标视图
multiplier
指定比例
relation
约束关系,默认相等
Return Value
布局约束
-
与指定视图属性偏移指定距离,指定关系
Declaration
Swift
@discardableResult public func constrainAttribute(_ attribute: NSLayoutConstraint.Attribute, toAttribute: NSLayoutConstraint.Attribute, ofView: Any?, offset: CGFloat = .zero, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint
Parameters
attribute
指定属性
toAttribute
目标视图属性
ofView
目标视图
offset
偏移距离
relation
约束关系
Return Value
布局约束
-
与指定视图属性指定比例,指定关系
Declaration
Swift
@discardableResult public func constrainAttribute(_ attribute: NSLayoutConstraint.Attribute, toAttribute: NSLayoutConstraint.Attribute, ofView: Any?, multiplier: CGFloat, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint
Parameters
attribute
指定属性
toAttribute
目标视图属性
ofView
目标视图
multiplier
指定比例
relation
约束关系
Return Value
布局约束
-
修改最近一批添加或更新的布局约束偏移值
Declaration
Swift
@discardableResult public func setOffset(_ offset: CGFloat) -> [NSLayoutConstraint]
-
修改最近一批添加或更新的布局约束内间距值
Declaration
Swift
@discardableResult public func setInset(_ inset: CGFloat) -> [NSLayoutConstraint]
-
修改最近一批添加或更新的布局约束优先级
Declaration
Swift
@discardableResult public func setPriority(_ priority: UILayoutPriority) -> [NSLayoutConstraint]
-
获取添加的与父视图属性的约束,指定关系
Declaration
Swift
public func constraint(toSuperview attribute: NSLayoutConstraint.Attribute, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint?
Parameters
attribute
指定属性
relation
约束关系
Return Value
布局约束
-
获取添加的与父视图安全区域属性的约束,指定关系
Declaration
Swift
public func constraint(toSafeArea attribute: NSLayoutConstraint.Attribute, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint?
Parameters
attribute
指定属性
relation
约束关系
Return Value
布局约束
-
获取添加的与指定视图属性的约束,指定关系
Declaration
Swift
public func constraint(_ attribute: NSLayoutConstraint.Attribute, toAttribute: NSLayoutConstraint.Attribute, ofView: Any?, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint?
Parameters
attribute
指定属性
toAttribute
目标视图属性
ofView
目标视图
relation
约束关系
Return Value
布局约束
-
获取添加的与指定视图属性指定比例的约束,指定关系
Declaration
Swift
public func constraint(_ attribute: NSLayoutConstraint.Attribute, toAttribute: NSLayoutConstraint.Attribute, ofView: Any?, multiplier: CGFloat, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint?
Parameters
attribute
指定属性
toAttribute
目标视图属性
ofView
目标视图
multiplier
指定比例
relation
约束关系
Return Value
布局约束
-
设置约束保存键名,方便更新约束常量
Declaration
Swift
public func setConstraint(_ constraint: NSLayoutConstraint?, forKey: NSCopying)
Parameters
constraint
布局约束
forKey
保存key
-
获取键名对应约束
Declaration
Swift
public func constraint(forKey: NSCopying) -> NSLayoutConstraint?
Parameters
forKey
保存key
Return Value
布局约束
-
最近一批添加或更新的布局约束
Declaration
Swift
public var lastConstraints: [NSLayoutConstraint] { get }
-
最近一条添加或更新的布局约束
Declaration
Swift
public var lastConstraint: NSLayoutConstraint? { get }
-
获取当前所有约束,不包含Key
Declaration
Swift
public var allConstraints: [NSLayoutConstraint] { get }
-
移除当前指定约束,不包含Key
Declaration
Swift
public func removeConstraint(_ constraint: NSLayoutConstraint)
Parameters
constraint
布局约束
-
移除当前所有约束,不包含Key
Declaration
Swift
public func removeAllConstraints()
-
链式布局对象
Declaration
Swift
public var layoutChain: LayoutChain { get }
-
链式布局闭包
Declaration
Swift
public func layoutMaker(_ closure: (_ make: LayoutChain) -> Void)
-
设置全局按钮样式属性,nil时系统默认
Declaration
Swift
public static var buttonAttributes: [NSAttributedString.Key : Any]? { get set }
-
导航栏iOS13+样式对象,用于自定义样式,默认透明
Declaration
Swift
@available(iOS 13.0, *) public var appearance: UINavigationBarAppearance { get }
-
手工更新导航栏样式
Declaration
Swift
@available(iOS 13.0, *) public func updateAppearance()
-
导航栏是否半透明,会重置背景,需优先设置,默认NO;背景色需带有alpha时半透明才会生效
Declaration
Swift
public var isTranslucent: Bool { get set }
-
设置前景颜色,包含文字和按钮等
Declaration
Swift
public var foregroundColor: UIColor? { get set }
-
单独设置标题颜色,nil时显示前景颜色
Declaration
Swift
public var titleAttributes: [NSAttributedString.Key : Any]? { get set }
-
单独设置按钮样式属性,nil时系统默认。仅iOS15+生效,iOS14及以下请使用UIBarButtonItem
Declaration
Swift
public var buttonAttributes: [NSAttributedString.Key : Any]? { get set }
-
设置背景颜色(nil时透明),兼容主题颜色,后设置生效
Declaration
Swift
public var backgroundColor: UIColor? { get set }
-
设置背景图片(nil时透明),兼容主题图片,后设置生效
Declaration
Swift
public var backgroundImage: UIImage? { get set }
-
设置背景是否全透明,默认NO,后设置生效
Declaration
Swift
public var backgroundTransparent: Bool { get set }
-
设置阴影颜色(nil时透明),兼容主题颜色,后设置生效
Declaration
Swift
public var shadowColor: UIColor? { get set }
-
设置阴影图片(nil时透明),兼容主题图片,后设置生效
Declaration
Swift
public var shadowImage: UIImage? { get set }
-
设置返回按钮图片,包含图片和转场Mask图片,自动偏移和系统左侧按钮位置保持一致
Declaration
Swift
public var backImage: UIImage? { get set }
-
标签栏iOS13+样式对象,用于自定义样式,默认透明
Declaration
Swift
@available(iOS 13.0, *) public var appearance: UITabBarAppearance { get }
-
手工更新标签栏样式
Declaration
Swift
@available(iOS 13.0, *) public func updateAppearance()
-
标签栏是否半透明,会重置背景,需优先设置,默认NO;背景色需带有alpha时半透明才会生效
Declaration
Swift
public var isTranslucent: Bool { get set }
-
设置前景颜色,包含文字和按钮等
Declaration
Swift
public var foregroundColor: UIColor? { get set }
-
设置背景颜色,兼容主题颜色,后设置生效
Declaration
Swift
public var backgroundColor: UIColor? { get set }
-
设置背景图片,兼容主题图片,后设置生效
Declaration
Swift
public var backgroundImage: UIImage? { get set }
-
设置背景是否全透明,默认NO,后设置生效
Declaration
Swift
public var backgroundTransparent: Bool { get set }
-
设置阴影颜色(nil时透明),兼容主题颜色,后设置生效
Declaration
Swift
public var shadowColor: UIColor? { get set }
-
设置阴影图片(nil时透明),兼容主题图片,后设置生效
Declaration
Swift
public var shadowImage: UIImage? { get set }
-
工具栏iOS13+样式对象,用于自定义样式,默认透明
Declaration
Swift
@available(iOS 13.0, *) public var appearance: UIToolbarAppearance { get }
-
手工更新工具栏样式
Declaration
Swift
@available(iOS 13.0, *) public func updateAppearance()
-
工具栏是否半透明,会重置背景,需优先设置,默认NO;背景色需带有alpha时半透明才会生效
Declaration
Swift
public var isTranslucent: Bool { get set }
-
设置前景颜色,包含文字和按钮等
Declaration
Swift
public var foregroundColor: UIColor? { get set }
-
单独设置按钮样式属性,nil时系统默认。仅iOS15+生效,iOS14及以下请使用UIBarButtonItem
Declaration
Swift
public var buttonAttributes: [NSAttributedString.Key : Any]? { get set }
-
设置背景颜色,兼容主题颜色,后设置生效
Declaration
Swift
public var backgroundColor: UIColor? { get set }
-
设置背景图片,兼容主题图片,后设置生效
Declaration
Swift
public var backgroundImage: UIImage? { get set }
-
设置背景是否全透明,默认NO,后设置生效
Declaration
Swift
public var backgroundTransparent: Bool { get set }
-
设置阴影颜色(nil时透明),兼容主题颜色,后设置生效
Declaration
Swift
public var shadowColor: UIColor? { get set }
-
设置阴影图片(nil时透明),兼容主题图片,后设置生效
Declaration
Swift
public var shadowImage: UIImage? { get set }
-
自定义工具栏位置,调用后才生效,会自动设置delegate。Bottom时背景自动向下延伸,TopAttached时背景自动向上延伸
Declaration
Swift
public var barPosition: UIBarPosition { get set }
-
创建Timer,使用target-action,自动CommonModes添加到当前的运行循环中,避免ScrollView滚动时不触发
Declaration
Swift
public static func commonTimer(timeInterval: TimeInterval, target: Any, selector: Selector, userInfo: Any?, repeats: Bool) -> Timer
Parameters
timeInterval
时间
target
目标
selector
方法
userInfo
参数
repeats
是否重复
Return Value
定时器
-
创建Timer,使用block,自动CommonModes添加到当前的运行循环中,避免ScrollView滚动时不触发
Declaration
Swift
public static func commonTimer(timeInterval: TimeInterval, block: @escaping (Timer) -> Void, repeats: Bool) -> Timer
Parameters
timeInterval
时间
block
代码块
repeats
是否重复
Return Value
定时器
-
创建倒计时定时器
Declaration
Swift
public static func commonTimer(countDown: Int, block: @escaping (Int) -> Void) -> Timer
Parameters
countDown
倒计时时间
block
每秒执行block,为0时自动停止
Return Value
定时器,可手工停止
-
创建Timer,使用block,需要调用addTimer:forMode:安排到当前的运行循环中(CommonModes避免ScrollView滚动时不触发)。
示例:[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]
Declaration
Swift
public static func timer(timeInterval: TimeInterval, block: @escaping (Timer) -> Void, repeats: Bool) -> Timer
Parameters
timeInterval
时间
block
代码块
repeats
是否重复
Return Value
定时器
-
创建Timer,使用block,默认模式安排到当前的运行循环中
Declaration
Swift
public static func scheduledTimer(timeInterval: TimeInterval, block: @escaping (Timer) -> Void, repeats: Bool) -> Timer
Parameters
timeInterval
时间
block
代码块
repeats
是否重复
Return Value
定时器
-
暂停NSTimer
Declaration
Swift
public func pauseTimer()
-
开始NSTimer
Declaration
Swift
public func resumeTimer()
-
延迟delay秒后开始NSTimer
Declaration
Swift
public func resumeTimer(afterDelay: TimeInterval)
-
从事件句柄初始化
Declaration
Swift
public static func gestureRecognizer(block: @escaping (Any) -> Void) -> Base
-
添加事件句柄,返回唯一标志
Declaration
Swift
@discardableResult public func addBlock(_ block: @escaping (Any) -> Void) -> String
-
根据唯一标志移除事件句柄
Declaration
Swift
public func removeBlock(_ identifier: String?)
-
移除所有事件句柄
Declaration
Swift
public func removeAllBlocks()
-
添加点击手势事件,默认子视图也会响应此事件。如要屏蔽之,解决方法:1、子视图设为UIButton;2、子视图添加空手势事件
Declaration
Swift
public func addTapGesture(target: Any, action: Selector)
-
添加点击手势句柄,同上
Declaration
Swift
@discardableResult public func addTapGesture(block: @escaping (Any) -> Void) -> String
-
根据唯一标志移除点击手势句柄
Declaration
Swift
public func removeTapGesture(_ identifier: String?)
-
移除所有点击手势
Declaration
Swift
public func removeAllTapGestures()
-
添加事件句柄
Declaration
Swift
@discardableResult public func addBlock(_ block: @escaping (Any) -> Void, for controlEvents: UIControl.Event) -> String
-
根据唯一标志移除事件句柄
Declaration
Swift
public func removeBlock(_ identifier: String?, for controlEvents: UIControl.Event)
-
移除所有事件句柄
Declaration
Swift
public func removeAllBlocks(for controlEvents: UIControl.Event)
-
添加点击事件
Declaration
Swift
public func addTouch(target: Any, action: Selector)
-
添加点击句柄
Declaration
Swift
@discardableResult public func addTouch(block: @escaping (Any) -> Void) -> String
-
根据唯一标志移除点击句柄
Declaration
Swift
public func removeTouchBlock(_ identifier: String?)
-
使用指定对象和事件创建Item,支持UIImage|NSString|NSNumber|NSAttributedString等
Declaration
Swift
public static func item(object: Any?, target: Any?, action: Selector?) -> UIBarButtonItem
-
使用指定对象和句柄创建Item,支持UIImage|NSString|NSNumber|NSAttributedString等
Declaration
Swift
public static func item(object: Any?, block: ((Any) -> Void)?) -> UIBarButtonItem
-
自定义标题样式属性,兼容appearance,默认nil同系统
Declaration
Swift
public var titleAttributes: [NSAttributedString.Key : Any]? { get set }
-
设置当前Item触发句柄,nil时清空句柄
Declaration
Swift
public func setBlock(_ block: ((Any) -> Void)?)
-
快捷设置导航栏标题文字
Declaration
Swift
public var title: String? { get set }
-
设置导航栏返回按钮,支持UIBarButtonItem|NSString|UIImage等,nil时显示系统箭头,下个页面生效
Declaration
Swift
public var backBarItem: Any? { get set }
-
设置导航栏左侧按钮,支持UIBarButtonItem|UIImage等,默认事件为关闭当前页面,下个页面生效
Declaration
Swift
public var leftBarItem: Any? { get set }
-
设置导航栏右侧按钮,支持UIBarButtonItem|UIImage等,默认事件为关闭当前页面,下个页面生效
Declaration
Swift
public var rightBarItem: Any? { get set }
-
快捷设置导航栏左侧按钮。注意自定义left按钮之后,系统返回手势失效
Declaration
Swift
public func setLeftBarItem(_ object: Any?, target: Any, action: Selector)
-
快捷设置导航栏左侧按钮,block事件。注意自定义left按钮之后,系统返回手势失效
Declaration
Swift
public func setLeftBarItem(_ object: Any?, block: @escaping (Any) -> Void)
-
快捷设置导航栏右侧按钮
Declaration
Swift
public func setRightBarItem(_ object: Any?, target: Any, action: Selector)
-
快捷设置导航栏右侧按钮,block事件
Declaration
Swift
public func setRightBarItem(_ object: Any?, block: @escaping (Any) -> Void)
-
快捷添加导航栏左侧按钮。注意自定义left按钮之后,系统返回手势失效
Declaration
Swift
public func addLeftBarItem(_ object: Any?, target: Any, action: Selector)
-
快捷添加导航栏左侧按钮,block事件。注意自定义left按钮之后,系统返回手势失效
Declaration
Swift
public func addLeftBarItem(_ object: Any?, block: @escaping (Any) -> Void)
-
快捷添加导航栏右侧按钮
Declaration
Swift
public func addRightBarItem(_ object: Any?, target: Any, action: Selector)
-
快捷添加导航栏右侧按钮,block事件
Declaration
Swift
public func addRightBarItem(_ object: Any?, block: @escaping (Any) -> Void)
-
如果用来确定Cell所需高度的View是唯一的,请把此值设置为YES,可提升一定的性能
Declaration
Swift
public var maxYViewFixed: Bool { get set }
-
最大Y视图的底部内边距,可避免新创建View来撑开Cell,默认0
Declaration
Swift
public var maxYViewPadding: CGFloat { get set }
-
最大Y视图是否撑开布局,需布局约束完整。默认NO,无需撑开布局;YES时padding不起作用
Declaration
Swift
public var maxYViewExpanded: Bool { get set }
-
免注册创建UITableViewCell,内部自动处理缓冲池,可指定style类型和reuseIdentifier
Declaration
Swift
public static func cell( tableView: UITableView, style: UITableViewCell.CellStyle = .default, reuseIdentifier: String? = nil ) -> Base
-
根据配置自动计算cell高度,不使用缓存,子类可重写
Declaration
Swift
public static func height( tableView: UITableView, configuration: @escaping CellConfigurationBlock ) -> CGFloat
-
如果用来确定HeaderFooterView所需高度的View是唯一的,请把此值设置为YES,可提升一定的性能
Declaration
Swift
public var maxYViewFixed: Bool { get set }
-
最大Y视图的底部内边距,可避免新创建View来撑开HeaderFooterView,默认0
Declaration
Swift
public var maxYViewPadding: CGFloat { get set }
-
最大Y视图是否撑开布局,需布局约束完整。默认NO,无需撑开布局;YES时padding不起作用
Declaration
Swift
public var maxYViewExpanded: Bool { get set }
-
免注册alloc创建UITableViewHeaderFooterView,内部自动处理缓冲池,指定reuseIdentifier
Declaration
Swift
public static func headerFooterView( tableView: UITableView, reuseIdentifier: String? = nil ) -> Base
-
根据配置自动计算cell高度,不使用缓存,子类可重写
Declaration
Swift
public static func height( tableView: UITableView, type: HeaderFooterViewType, configuration: @escaping HeaderFooterViewConfigurationBlock ) -> CGFloat
-
手工清空高度缓存,用于高度发生变化的情况
Declaration
Swift
public func clearHeightCache()
-
指定indexPath设置cell高度缓存,如willDisplayCell调用,height为cell.frame.size.height,设置为0时清除缓存
Declaration
Swift
public func setCellHeightCache(_ height: CGFloat, for indexPath: IndexPath)
-
指定key设置cell高度缓存,如willDisplayCell调用,height为cell.frame.size.height,设置为0时清除缓存
Declaration
Swift
public func setCellHeightCache(_ height: CGFloat, for key: NSCopying)
-
指定indexPath获取cell缓存高度,如estimatedHeightForRow调用,默认值automaticDimension
Declaration
Swift
public func cellHeightCache(for indexPath: IndexPath) -> CGFloat
-
指定key获取cell缓存高度,如estimatedHeightForRow调用,默认值automaticDimension
Declaration
Swift
public func cellHeightCache(for key: NSCopying) -> CGFloat
-
指定section设置HeaderFooter高度缓存,如willDisplayHeaderFooter调用,height为view.frame.size.height,设置为0时清除缓存
Declaration
Swift
public func setHeaderFooterHeightCache(_ height: CGFloat, type: HeaderFooterViewType, for section: Int)
-
指定key设置HeaderFooter高度缓存,如willDisplayHeaderFooter调用,height为view.frame.size.height,设置为0时清除缓存
Declaration
Swift
public func setHeaderFooterHeightCache(_ height: CGFloat, type: HeaderFooterViewType, for key: NSCopying)
-
指定section获取HeaderFooter缓存高度,如estimatedHeightForHeaderFooter调用,默认值automaticDimension
Declaration
Swift
public func headerFooterHeightCache(_ type: HeaderFooterViewType, forSection section: Int) -> CGFloat
-
指定key获取HeaderFooter缓存高度,如estimatedHeightForHeaderFooter调用,默认值automaticDimension
Declaration
Swift
public func headerFooterHeightCache(_ type: HeaderFooterViewType, for key: NSCopying) -> CGFloat
-
获取 Cell 需要的高度,内部无缓存操作
Declaration
Swift
public func height( cellClass: AnyClass, configuration: @escaping CellConfigurationBlock ) -> CGFloat
Parameters
cellClass
cell类
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell高度
-
获取 Cell 需要的高度,内部自动处理缓存,缓存标识 indexPath
Declaration
Swift
public func height( cellClass: AnyClass, cacheBy indexPath: IndexPath, configuration: @escaping CellConfigurationBlock ) -> CGFloat
Parameters
cellClass
cell class
indexPath
使用 indexPath 做缓存标识
configuration
布局 cell,内部不会拥有 Block,不需要 __weak
Return Value
cell高度
-
获取 Cell 需要的高度,内部自动处理缓存,缓存标识 key
Declaration
Swift
public func height( cellClass: AnyClass, cacheBy key: NSCopying?, configuration: @escaping CellConfigurationBlock ) -> CGFloat
Parameters
cellClass
cell class
key
使用 key 做缓存标识,如数据唯一id,对象hash等
configuration
布局 cell,内部不会拥有 Block,不需要 __weak
Return Value
cell高度
-
获取 HeaderFooter 需要的高度,内部无缓存操作
Declaration
Swift
public func height( headerFooterViewClass: AnyClass, type: HeaderFooterViewType, configuration: @escaping HeaderFooterViewConfigurationBlock ) -> CGFloat
Parameters
headerFooterViewClass
HeaderFooter class
type
HeaderFooter类型,Header 或者 Footer
configuration
布局 HeaderFooter,内部不会拥有 Block,不需要 __weak
Return Value
HeaderFooter高度
-
获取 HeaderFooter 需要的高度,内部自动处理缓存,缓存标识 section
Declaration
Swift
public func height( headerFooterViewClass: AnyClass, type: HeaderFooterViewType, cacheBy section: Int, configuration: @escaping HeaderFooterViewConfigurationBlock ) -> CGFloat
Parameters
headerFooterViewClass
HeaderFooter class
type
HeaderFooter类型,Header 或者 Footer
section
使用 section 做缓存标识
configuration
布局 HeaderFooter,内部不会拥有 Block,不需要 __weak
Return Value
HeaderFooter高度
-
获取 HeaderFooter 需要的高度,内部自动处理缓存,缓存标识 key
Declaration
Swift
public func height( headerFooterViewClass: AnyClass, type: HeaderFooterViewType, cacheBy key: NSCopying?, configuration: @escaping HeaderFooterViewConfigurationBlock ) -> CGFloat
Parameters
headerFooterViewClass
HeaderFooter class
type
HeaderFooter类型,Header 或者 Footer
key
使用 key 做缓存标识,如数据唯一id,对象hash等
configuration
布局 HeaderFooter,内部不会拥有 Block,不需要 __weak
Return Value
HeaderFooter高度
-
如果用来确定Cell所需高度的View是唯一的,请把此值设置为YES,可提升一定的性能
Declaration
Swift
public var maxYViewFixed: Bool { get set }
-
最大Y视图的底部内边距,可避免新创建View来撑开Cell,默认0
Declaration
Swift
public var maxYViewPadding: CGFloat { get set }
-
最大Y视图是否撑开布局,需布局约束完整。默认NO,无需撑开布局;YES时padding不起作用
Declaration
Swift
public var maxYViewExpanded: Bool { get set }
-
免注册创建UICollectionViewCell,内部自动处理缓冲池,指定reuseIdentifier
Declaration
Swift
public static func cell( collectionView: UICollectionView, indexPath: IndexPath, reuseIdentifier: String? = nil ) -> Base
-
根据配置自动计算view大小,子类可重写
Declaration
Swift
public static func size( collectionView: UICollectionView, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
-
根据配置自动计算view大小,固定宽度,子类可重写
Declaration
Swift
public static func size( collectionView: UICollectionView, width: CGFloat, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
-
根据配置自动计算view大小,固定高度,子类可重写
Declaration
Swift
public static func size( collectionView: UICollectionView, height: CGFloat, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
-
如果用来确定ReusableView所需尺寸的View是唯一的,请把此值设置为YES,可提升一定的性能
Declaration
Swift
public var maxYViewFixed: Bool { get set }
-
最大Y尺寸视图的底部内边距(横向滚动时为X),可避免新创建View来撑开ReusableView,默认0
Declaration
Swift
public var maxYViewPadding: CGFloat { get set }
-
最大Y视图是否撑开布局(横向滚动时为X),需布局约束完整。默认NO,无需撑开布局;YES时padding不起作用
Declaration
Swift
public var maxYViewExpanded: Bool { get set }
-
免注册alloc创建UICollectionReusableView,内部自动处理缓冲池,指定reuseIdentifier
Declaration
Swift
public static func reusableView( collectionView: UICollectionView, kind: String, indexPath: IndexPath, reuseIdentifier: String? = nil ) -> Base
-
根据配置自动计算view大小,子类可重写
Declaration
Swift
public static func size( collectionView: UICollectionView, kind: String, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
-
根据配置自动计算view大小,固定宽度,子类可重写
Declaration
Swift
public static func size( collectionView: UICollectionView, width: CGFloat, kind: String, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
-
根据配置自动计算view大小,固定高度,子类可重写
Declaration
Swift
public static func size( collectionView: UICollectionView, height: CGFloat, kind: String, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
-
手工清空尺寸缓存,用于尺寸发生变化的情况
Declaration
Swift
public func clearSizeCache()
-
指定indexPath设置cell尺寸缓存,设置为zero时清除缓存
Declaration
Swift
public func setCellSizeCache(_ size: CGSize, for indexPath: IndexPath)
-
指定key设置cell尺寸缓存,设置为zero时清除缓存
Declaration
Swift
public func setCellSizeCache(_ size: CGSize, for key: NSCopying)
-
指定indexPath获取cell缓存尺寸,默认值automaticSize
Declaration
Swift
public func cellSizeCache(for indexPath: IndexPath) -> CGSize
-
指定key获取cell缓存尺寸,默认值automaticSize
Declaration
Swift
public func cellSizeCache(for key: NSCopying) -> CGSize
-
指定section设置ReusableView尺寸缓存,设置为zero时清除缓存
Declaration
Swift
public func setReusableViewSizeCache(_ size: CGSize, kind: String, for section: Int)
-
指定key设置ReusableView尺寸缓存,设置为zero时清除缓存
Declaration
Swift
public func setReusableViewSizeCache(_ size: CGSize, kind: String, for key: NSCopying)
-
指定section获取ReusableView缓存尺寸,默认值automaticSize
Declaration
Swift
public func reusableViewSizeCache(_ kind: String, forSection section: Int) -> CGSize
-
指定key获取ReusableView缓存尺寸,默认值automaticSize
Declaration
Swift
public func reusableViewSizeCache(_ kind: String, for key: NSCopying) -> CGSize
-
获取 Cell 需要的尺寸,内部无缓存操作
Declaration
Swift
public func size( cellClass: AnyClass, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
Parameters
cellClass
cell类
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell尺寸
-
获取 Cell 需要的尺寸,固定宽度,内部无缓存操作
Declaration
Swift
public func size( cellClass: AnyClass, width: CGFloat, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
Parameters
cellClass
cell类
width
固定宽度
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell尺寸
-
获取 Cell 需要的尺寸,固定高度,内部无缓存操作
Declaration
Swift
public func size( cellClass: AnyClass, height: CGFloat, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
Parameters
cellClass
cell类
height
固定高度
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell尺寸
-
获取 Cell 需要的尺寸,内部自动处理缓存,缓存标识 indexPath
Declaration
Swift
public func size( cellClass: AnyClass, cacheBy indexPath: IndexPath, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
Parameters
cellClass
cell类
indexPath
使用 indexPath 做缓存标识
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell尺寸
-
获取 Cell 需要的尺寸,固定宽度,内部自动处理缓存,缓存标识 indexPath
Declaration
Swift
public func size( cellClass: AnyClass, width: CGFloat, cacheBy indexPath: IndexPath, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
Parameters
cellClass
cell类
width
固定宽度
indexPath
使用 indexPath 做缓存标识
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell尺寸
-
获取 Cell 需要的尺寸,固定高度,内部自动处理缓存,缓存标识 indexPath
Declaration
Swift
public func size( cellClass: AnyClass, height: CGFloat, cacheBy indexPath: IndexPath, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
Parameters
cellClass
cell类
height
固定高度
indexPath
使用 indexPath 做缓存标识
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell尺寸
-
获取 Cell 需要的尺寸,内部自动处理缓存,缓存标识 key
Declaration
Swift
public func size( cellClass: AnyClass, cacheBy key: NSCopying?, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
Parameters
cellClass
cell类
key
使用 key 做缓存标识,如数据唯一id,对象hash等
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell尺寸
-
获取 Cell 需要的尺寸,固定宽度,内部自动处理缓存,缓存标识 key
Declaration
Swift
public func size( cellClass: AnyClass, width: CGFloat, cacheBy key: NSCopying?, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
Parameters
cellClass
cell类
width
固定宽度
key
使用 key 做缓存标识,如数据唯一id,对象hash等
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell尺寸
-
获取 Cell 需要的尺寸,固定高度,内部自动处理缓存,缓存标识 key
Declaration
Swift
public func size( cellClass: AnyClass, height: CGFloat, cacheBy key: NSCopying?, configuration: @escaping CollectionCellConfigurationBlock ) -> CGSize
Parameters
cellClass
cell类
height
固定高度
key
使用 key 做缓存标识,如数据唯一id,对象hash等
configuration
布局cell句柄,内部不会拥有Block,不需要__weak
Return Value
cell尺寸
-
获取 ReusableView 需要的尺寸,内部无缓存操作
Declaration
Swift
public func size( reusableViewClass: AnyClass, kind: String, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
Parameters
reusableViewClass
ReusableView class
kind
ReusableView类型,Header 或者 Footer
configuration
布局 ReusableView,内部不会拥有 Block,不需要 __weak
Return Value
ReusableView尺寸
-
获取 ReusableView 需要的尺寸,固定宽度,内部无缓存操作
Declaration
Swift
public func size( reusableViewClass: AnyClass, width: CGFloat, kind: String, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
Parameters
reusableViewClass
ReusableView class
width
固定宽度
kind
ReusableView类型,Header 或者 Footer
configuration
布局 ReusableView,内部不会拥有 Block,不需要 __weak
Return Value
ReusableView尺寸
-
获取 ReusableView 需要的尺寸,固定高度,内部无缓存操作
Declaration
Swift
public func size( reusableViewClass: AnyClass, height: CGFloat, kind: String, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
Parameters
reusableViewClass
ReusableView class
height
固定高度
kind
ReusableView类型,Header 或者 Footer
configuration
布局 ReusableView,内部不会拥有 Block,不需要 __weak
Return Value
ReusableView尺寸
-
获取 ReusableView 需要的尺寸,内部自动处理缓存,缓存标识 section
Declaration
Swift
public func size( reusableViewClass: AnyClass, kind: String, cacheBy section: Int, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
Parameters
reusableViewClass
ReusableView class
kind
ReusableView类型,Header 或者 Footer
section
使用 section 做缓存标识
configuration
布局 ReusableView,内部不会拥有 Block,不需要 __weak
Return Value
ReusableView尺寸
-
获取 ReusableView 需要的尺寸,固定宽度,内部自动处理缓存,缓存标识 section
Declaration
Swift
public func size( reusableViewClass: AnyClass, width: CGFloat, kind: String, cacheBy section: Int, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
Parameters
reusableViewClass
ReusableView class
width
固定宽度
kind
ReusableView类型,Header 或者 Footer
section
使用 section 做缓存标识
configuration
布局 ReusableView,内部不会拥有 Block,不需要 __weak
Return Value
ReusableView尺寸
-
获取 ReusableView 需要的尺寸,固定高度,内部自动处理缓存,缓存标识 section
Declaration
Swift
public func size( reusableViewClass: AnyClass, height: CGFloat, kind: String, cacheBy section: Int, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
Parameters
reusableViewClass
ReusableView class
height
固定高度
kind
ReusableView类型,Header 或者 Footer
section
使用 section 做缓存标识
configuration
布局 ReusableView,内部不会拥有 Block,不需要 __weak
Return Value
ReusableView尺寸
-
获取 ReusableView 需要的尺寸,内部自动处理缓存,缓存标识 key
Declaration
Swift
public func size( reusableViewClass: AnyClass, kind: String, cacheBy key: NSCopying?, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
Parameters
reusableViewClass
ReusableView class
kind
ReusableView类型,Header 或者 Footer
key
使用 key 做缓存标识,如数据唯一id,对象hash等
configuration
布局 ReusableView,内部不会拥有 Block,不需要 __weak
Return Value
ReusableView尺寸
-
获取 ReusableView 需要的尺寸,固定宽度,内部自动处理缓存,缓存标识 key
Declaration
Swift
public func size( reusableViewClass: AnyClass, width: CGFloat, kind: String, cacheBy key: NSCopying?, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
Parameters
reusableViewClass
ReusableView class
width
固定宽度
kind
ReusableView类型,Header 或者 Footer
key
使用 key 做缓存标识,如数据唯一id,对象hash等
configuration
布局 ReusableView,内部不会拥有 Block,不需要 __weak
Return Value
ReusableView尺寸
-
获取 ReusableView 需要的尺寸,固定高度,内部自动处理缓存,缓存标识 key
Declaration
Swift
public func size( reusableViewClass: AnyClass, height: CGFloat, kind: String, cacheBy key: NSCopying?, configuration: @escaping ReusableViewConfigurationBlock ) -> CGSize
Parameters
reusableViewClass
ReusableView class
height
固定高度
kind
ReusableView类型,Header 或者 Footer
key
使用 key 做缓存标识,如数据唯一id,对象hash等
configuration
布局 ReusableView,内部不会拥有 Block,不需要 __weak
Return Value
ReusableView尺寸
-
使用NSKeyedArchiver压缩对象
Declaration
Swift
public static func archiveObject(_ object: Any) -> Data?
-
使用NSKeyedUnarchiver解压数据
Declaration
Swift
public func unarchiveObject<T>(_ clazz: T.Type) -> T? where T : NSObject, T : NSCoding
-
保存对象归档
Declaration
Swift
public static func archiveObject(_ object: Any, file: String) -> Bool
-
读取对象归档
Declaration
Swift
public static func unarchiveObject<T>(_ clazz: T.Type, file: String) -> T? where T : NSObject, T : NSCoding
-
当前时间戳,没有设置过返回本地时间戳,可同步设置服务器时间戳,同步后调整手机时间不影响
Declaration
Swift
public static var currentTime: TimeInterval { get set }
-
从字符串初始化日期,自定义格式(默认yyyy-MM-dd HH:mm:ss)和时区(默认当前时区)
Declaration
Swift
public static func date(string: String, format: String = "yyyy-MM-dd HH:mm:ss", timeZone: TimeZone? = nil) -> Date?
-
转化为字符串,默认当前时区,格式:yyyy-MM-dd HH:mm:ss
Declaration
Swift
public var stringValue: String { get }
-
转化为字符串,自定义格式和时区
Declaration
Swift
public func string(format: String, timeZone: TimeZone? = nil) -> String
-
格式化时长,格式"00:00"或"00:00:00"
Declaration
Swift
public static func formatDuration(_ duration: TimeInterval, hasHour: Bool) -> String
-
格式化16位、13位时间戳为10位(秒)
Declaration
Swift
public static func formatTimestamp(_ timestamp: TimeInterval) -> TimeInterval
-
计算多行字符串指定字体、指定属性在指定绘制区域内所占尺寸
Declaration
Swift
public func size(font: UIFont, drawSize: CGSize = CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude), attributes: [NSAttributedString.Key : Any]? = nil) -> CGSize
-
格式化文件大小为".0K/.1M/.1G"
Declaration
Swift
public static func sizeString(_ aFileSize: UInt) -> String
-
是否匹配正则表达式,示例:^[a-zA-Z0-9_\u4e00-\u9fa5]{4,14}$
Declaration
Swift
public func matchesRegex(_ regex: String) -> Bool
-
NSAttributedString对象转换为html字符串
Declaration
Swift
public func htmlString() -> String?
-
计算所占尺寸,需设置Font等
Declaration
Swift
public var textSize: CGSize { get }
-
计算在指定绘制区域内所占尺寸,需设置Font等
Declaration
Swift
public func textSize(drawSize: CGSize) -> CGSize
-
html字符串转换为NSAttributedString对象。如需设置默认字体和颜色,请使用addAttributes方法或附加CSS样式
Declaration
Swift
public static func attributedString(htmlString: String) -> Base?
-
图片转换为NSAttributedString对象,可实现行内图片样式。其中bounds.x会设置为间距,y常用算法:(font.capHeight - image.size.height) / 2.0
Declaration
Swift
public static func attributedString(image: UIImage?, bounds: CGRect) -> NSAttributedString
-
快速创建NSAttributedString,自定义字体和颜色
Declaration
Swift
public static func attributedString(_ string: String, font: UIFont?, textColor: UIColor? = nil) -> Base
-
执行加锁(支持任意对象),等待信号量,自动创建信号量
Declaration
Swift
public func lock()
-
执行解锁(支持任意对象),发送信号量,自动创建信号量
Declaration
Swift
public func unlock()
-
从standard读取对象,支持unarchive对象
Declaration
Swift
public static func object(forKey: String) -> Any?
-
保存对象到standard,支持archive对象
Declaration
Swift
public static func setObject(_ object: Any?, forKey: String)
-
读取对象,支持unarchive对象
Declaration
Swift
public func object(forKey: String) -> Any?
-
保存对象,支持archive对象
Declaration
Swift
public func setObject(_ object: Any?, forKey: String)
-
是否启用键盘管理(自动滚动),默认NO
Declaration
Swift
public var keyboardManager: Bool { get set }
-
设置输入框和键盘的空白间距,默认10.0
Declaration
Swift
public var keyboardDistance: CGFloat { get set }
-
设置输入框和键盘的回弹触发最小距离,默认0始终回弹
Declaration
Swift
public var reboundDistance: CGFloat { get set }
-
是否启用键盘后台关闭处理,退后台时收起键盘,回到前台时恢复键盘,解决系统退后台输入框跳动问题,默认NO
Declaration
Swift
public var keyboardResign: Bool { get set }
-
是否启用点击背景关闭键盘(会继续触发其它点击事件),默认NO
Declaration
Swift
public var touchResign: Bool { get set }
-
指定用于键盘管理滚动的scrollView,默认为nil,通过修改VC.view.frame实现
Declaration
Swift
public weak var keyboardScrollView: UIScrollView? { get set }
-
点击键盘完成按钮是否关闭键盘,默认NO,二选一
Declaration
Swift
public var returnResign: Bool { get set }
-
设置点击键盘完成按钮是否自动切换下一个输入框,二选一
Declaration
Swift
public var returnNext: Bool { get set }
-
设置点击键盘完成按钮的事件句柄
Declaration
Swift
public var returnBlock: ((UITextField) -> Void)? { get set }
-
获取关联的键盘Toolbar对象,可自定义样式
Declaration
Swift
public var keyboardToolbar: UIToolbar { get set }
-
自定义键盘Toolbar上一个按钮,支持图片|字符串等(详见FWBlock),默认朝上的箭头
Declaration
Swift
public var toolbarPreviousButton: Any? { get set }
-
自定义键盘Toolbar下一个按钮,支持图片|字符串等(详见FWBlock),默认朝下的箭头
Declaration
Swift
public var toolbarNextButton: Any? { get set }
-
自定义键盘Toolbar完成按钮,支持图片|字符串等(详见FWBlock),默认Done
Declaration
Swift
public var toolbarDoneButton: Any? { get set }
-
设置Toolbar点击前一个按钮时聚焦的输入框句柄,默认nil
Declaration
Swift
public var previousResponder: ((UITextField) -> UIResponder?)? { get set }
-
设置Toolbar点击下一个按钮时聚焦的输入框句柄,默认nil
Declaration
Swift
public var nextResponder: ((UITextField) -> UIResponder?)? { get set }
-
设置Toolbar点击前一个按钮时聚焦的输入框tag,默认0不生效
Declaration
Swift
public var previousResponderTag: Int { get set }
-
设置Toolbar点击下一个按钮时聚焦的输入框tag,默认0不生效
Declaration
Swift
public var nextResponderTag: Int { get set }
-
自动跳转前一个输入框,优先使用previousResponder,其次根据responderTag查找
Declaration
Swift
public func goPrevious()
-
自动跳转后一个输入框,优先使用nextResponder,其次根据responderTag查找
Declaration
Swift
public func goNext()
-
获取键盘弹出时的高度,对应Key为UIKeyboardFrameEndUserInfoKey
Declaration
Swift
public func keyboardHeight(_ notification: Notification) -> CGFloat
-
执行键盘跟随动画,支持AutoLayout,可通过keyboardHeight:获取键盘高度
Declaration
Swift
public func keyboardAnimate(_ notification: Notification, animations: @escaping () -> Void, completion: ((Bool) -> Void)? = nil)
-
添加Toolbar,指定标题和完成句柄,使用默认按钮
Declaration
Swift
public func addToolbar(title: Any?, doneBlock: ((Any) -> Void)?)
Parameters
title
标题,不能点击
doneBlock
右侧完成按钮句柄,默认收起键盘
-
添加Toolbar,指定居中标题、左侧上一个、下一个按钮和右边按钮
Declaration
Swift
public func addToolbar(titleItem: UIBarButtonItem?, previousItem: UIBarButtonItem?, nextItem: UIBarButtonItem?, doneItem: UIBarButtonItem?)
Parameters
titleItem
居中标题按钮
previousItem
左侧前一个按钮
nextItem
左侧下一个按钮
doneItem
右侧完成按钮
-
是否启用键盘管理(自动滚动),默认NO
Declaration
Swift
public var keyboardManager: Bool { get set }
-
设置输入框和键盘的空白间距,默认10.0
Declaration
Swift
public var keyboardDistance: CGFloat { get set }
-
设置输入框和键盘的回弹触发最小距离,默认0始终回弹
Declaration
Swift
public var reboundDistance: CGFloat { get set }
-
是否启用键盘后台关闭处理,退后台时收起键盘,回到前台时恢复键盘,解决系统退后台输入框跳动问题,默认NO
Declaration
Swift
public var keyboardResign: Bool { get set }
-
是否启用点击背景关闭键盘(会继续触发其它点击事件),默认NO
Declaration
Swift
public var touchResign: Bool { get set }
-
指定用于键盘管理滚动的scrollView,默认为nil,通过修改VC.view.frame实现
Declaration
Swift
public weak var keyboardScrollView: UIScrollView? { get set }
-
点击键盘完成按钮是否关闭键盘,默认NO,二选一。此方法会修改delegate,可使用fwDelegate访问原始delegate
Declaration
Swift
public var returnResign: Bool { get set }
-
设置点击键盘完成按钮是否自动切换下一个输入框,二选一。此方法会修改delegate,可使用fwDelegate访问原始delegate
Declaration
Swift
public var returnNext: Bool { get set }
-
设置点击键盘完成按钮的事件句柄。此方法会修改delegate,可使用fwDelegate访问原始delegate
Declaration
Swift
public var returnBlock: ((UITextView) -> Void)? { get set }
-
调用上面三个方法后会修改delegate,此方法始终访问外部delegate
Declaration
Swift
public weak var delegate: UITextViewDelegate? { get set }
-
获取关联的键盘Toolbar对象,可自定义样式
Declaration
Swift
public var keyboardToolbar: UIToolbar { get set }
-
自定义键盘Toolbar上一个按钮,支持图片|字符串等(详见FWBlock),默认朝上的箭头
Declaration
Swift
public var toolbarPreviousButton: Any? { get set }
-
自定义键盘Toolbar下一个按钮,支持图片|字符串等(详见FWBlock),默认朝下的箭头
Declaration
Swift
public var toolbarNextButton: Any? { get set }
-
自定义键盘Toolbar完成按钮,支持图片|字符串等(详见FWBlock),默认Done
Declaration
Swift
public var toolbarDoneButton: Any? { get set }
-
设置Toolbar点击前一个按钮时聚焦的输入框句柄,默认nil
Declaration
Swift
public var previousResponder: ((UITextView) -> UIResponder?)? { get set }
-
设置Toolbar点击下一个按钮时聚焦的输入框句柄,默认nil
Declaration
Swift
public var nextResponder: ((UITextView) -> UIResponder?)? { get set }
-
设置Toolbar点击前一个按钮时聚焦的输入框tag,默认0不生效
Declaration
Swift
public var previousResponderTag: Int { get set }
-
设置Toolbar点击下一个按钮时聚焦的输入框tag,默认0不生效
Declaration
Swift
public var nextResponderTag: Int { get set }
-
自动跳转前一个输入框,优先使用previousResponder,其次根据responderTag查找
Declaration
Swift
public func goPrevious()
-
自动跳转后一个输入框,优先使用nextResponder,其次根据responderTag查找
Declaration
Swift
public func goNext()
-
获取键盘弹出时的高度,对应Key为UIKeyboardFrameEndUserInfoKey
Declaration
Swift
public func keyboardHeight(_ notification: Notification) -> CGFloat
-
执行键盘跟随动画,支持AutoLayout,可通过keyboardHeight:获取键盘高度
Declaration
Swift
public func keyboardAnimate(_ notification: Notification, animations: @escaping () -> Void, completion: ((Bool) -> Void)? = nil)
-
添加Toolbar,指定标题和完成句柄,使用默认按钮
Declaration
Swift
public func addToolbar(title: Any?, doneBlock: ((Any) -> Void)?)
Parameters
title
标题,不能点击
doneBlock
右侧完成按钮句柄,默认收起键盘
-
添加Toolbar,指定居中标题、左侧上一个、下一个按钮和右边按钮
Declaration
Swift
public func addToolbar(titleItem: UIBarButtonItem?, previousItem: UIBarButtonItem?, nextItem: UIBarButtonItem?, doneItem: UIBarButtonItem?)
Parameters
titleItem
居中标题按钮
previousItem
左侧前一个按钮
nextItem
左侧下一个按钮
doneItem
右侧完成按钮
-
占位文本,默认nil
Declaration
Swift
public var placeholder: String? { get set }
-
占位颜色,默认系统颜色
Declaration
Swift
public var placeholderColor: UIColor? { get set }
-
带属性占位文本,默认nil
Declaration
Swift
public var attributedPlaceholder: NSAttributedString? { get set }
-
自定义占位文本内间距,默认zero与内容一致
Declaration
Swift
public var placeholderInset: UIEdgeInsets { get set }
-
自定义垂直分布方式,会自动修改contentInset,默认Top与系统一致
Declaration
Swift
public var verticalAlignment: UIControl.ContentVerticalAlignment { get set }
-
是否启用自动高度功能,随文字改变高度
Declaration
Swift
public var autoHeightEnabled: Bool { get set }
-
最大高度,默认CGFLOAT_MAX,启用自动高度后生效
Declaration
Swift
public var maxHeight: CGFloat { get set }
-
最小高度,默认0,启用自动高度后生效
Declaration
Swift
public var minHeight: CGFloat { get set }
-
高度改变回调句柄,默认nil,启用自动高度后生效
Declaration
Swift
public var heightDidChange: ((CGFloat) -> Void)? { get set }
-
快捷启用自动高度,并设置最大高度和回调句柄
Declaration
Swift
public func autoHeight(maxHeight: CGFloat, didChange: ((CGFloat) -> Void)?)
-
创建CADisplayLink,使用target-action,自动CommonModes添加到当前的运行循环中,避免ScrollView滚动时不触发
Declaration
Swift
public static func commonDisplayLink(target: Any, selector: Selector) -> CADisplayLink
Parameters
target
目标
selector
方法
Return Value
CADisplayLink
-
创建CADisplayLink,使用block,自动CommonModes添加到当前的运行循环中,避免ScrollView滚动时不触发
Declaration
Swift
public static func commonDisplayLink(block: @escaping (CADisplayLink) -> Void) -> CADisplayLink
Parameters
block
代码块
Return Value
CADisplayLink
-
创建CADisplayLink,使用block,需要调用addToRunLoop:forMode:安排到当前的运行循环中(CommonModes避免ScrollView滚动时不触发)。
示例:[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]
Declaration
Swift
public static func displayLink(block: @escaping (CADisplayLink) -> Void) -> CADisplayLink
Parameters
block
代码块
Return Value
CADisplayLink
-
设置动画开始回调,需要在add之前添加,因为add时会自动拷贝一份对象
Declaration
Swift
public var startBlock: ((CAAnimation) -> Void)? { get set }
-
设置动画停止回调
Declaration
Swift
public var stopBlock: ((CAAnimation, Bool) -> Void)? { get set }
-
设置主题背景色,启用主题订阅后可跟随系统改变,清空时需置为nil
Declaration
Swift
public var themeBackgroundColor: UIColor? { get set }
-
设置主题边框色,启用主题订阅后可跟随系统改变,清空时需置为nil
Declaration
Swift
public var themeBorderColor: UIColor? { get set }
-
设置主题阴影色,启用主题订阅后可跟随系统改变,清空时需置为nil
Declaration
Swift
public var themeShadowColor: UIColor? { get set }
-
设置主题内容图片,启用主题订阅后可跟随系统改变,清空时需置为nil
Declaration
Swift
public var themeContents: UIImage? { get set }
-
设置主题渐变色,启用主题订阅后可跟随系统改变,清空时需置为nil
Declaration
Swift
public var themeColors: [UIColor]? { get set }
-
获取当前主题样式对应静态颜色,主要用于iOS13以下兼容主题切换
Declaration
Swift
public var color: UIColor { get }
-
指定主题样式获取对应静态颜色,iOS13+可跟随系统改变
Declaration
Swift
public func color(forStyle: ThemeStyle) -> UIColor
-
是否是主题颜色,仅支持判断使用fwTheme创建的颜色
Declaration
Swift
public var isThemeColor: Bool { get }
-
动态创建主题色,分别指定浅色和深色
Declaration
Swift
public static func themeLight(_ light: UIColor, dark: UIColor) -> UIColor
-
动态创建主题色,指定提供句柄
Declaration
Swift
public static func themeColor(_ provider: @escaping (ThemeStyle) -> UIColor) -> UIColor
-
动态创建主题色,指定名称,兼容iOS11+系统方式(仅iOS13+支持动态颜色)和手工指定。失败时返回clear防止崩溃
Declaration
Swift
public static func themeNamed(_ name: String) -> UIColor
-
动态创建主题色,指定名称和bundle,兼容iOS11+系统方式(仅iOS13+支持动态颜色)和手工指定。失败时返回clear防止崩溃
Declaration
Swift
public static func themeNamed(_ name: String, bundle: Bundle?) -> UIColor
-
手工单个注册主题色,未配置主题色或者需兼容iOS11以下时可使用本方式
Declaration
Swift
public static func setThemeColor(_ color: UIColor?, forName: String)
-
手工批量注册主题色,未配置主题色或者需兼容iOS11以下时可使用本方式
Declaration
Swift
public static func setThemeColors(_ nameColors: [String : UIColor])
-
获取当前主题样式对应静态图片用于显示,iOS13+可跟随系统改变
Declaration
Swift
public var image: UIImage? { get }
-
指定主题样式获取对应静态图片用于显示,iOS13+可跟随系统改变
Declaration
Swift
public func image(forStyle: ThemeStyle) -> UIImage?
-
是否是主题图片,仅支持判断使用fwTheme创建的图片
Declaration
Swift
public var isThemeImage: Bool { get }
-
快速生成当前图片对应的默认主题图片
Declaration
Swift
public var themeImage: UIImage { get }
-
指定主题颜色,快速生成当前图片对应的主题图片
Declaration
Swift
public func themeImage(color: UIColor) -> UIImage
-
创建主题模拟动态图像,分别指定浅色和深色,不支持动态切换,需重新赋值才会变化
Declaration
Swift
public static func themeLight(_ light: UIImage?, dark: UIImage?) -> UIImage
-
创建主题模拟动态图像,指定提供句柄,不支持动态切换,需重新赋值才会变化
Declaration
Swift
public static func themeImage(_ provider: @escaping (ThemeStyle) -> UIImage?) -> UIImage
-
创建主题模拟动态图像,指定名称,兼容系统方式(仅iOS13+支持动态图像)和手工指定,支持动态切换,需配置any和dark
Declaration
Swift
public static func themeNamed(_ name: String) -> UIImage
-
创建主题模拟动态图像,指定名称和bundle,兼容系统方式(仅iOS13+支持动态图像)和手工指定,支持动态切换,需配置any和dark
Declaration
Swift
public static func themeNamed(_ name: String, bundle: Bundle?) -> UIImage
-
手工单个注册主题图像,未配置主题图像时可使用本方式
Declaration
Swift
public static func setThemeImage(_ image: UIImage?, forName: String)
-
手工批量注册主题图像,未配置主题图像时可使用本方式
Declaration
Swift
public static func setThemeImages(_ nameImages: [String : UIImage])
-
默认主题图片颜色,未设置时为浅色=>黑色,深色=>白色
Declaration
Swift
public static var themeImageColor: UIColor { get set }
-
获取当前主题样式对应静态图片用于显示,iOS13+可跟随系统改变
Declaration
Swift
public var image: UIImage? { get }
-
指定主题样式获取对应静态图片用于显示,iOS13+可跟随系统改变
Declaration
Swift
public func image(forStyle: ThemeStyle) -> UIImage?
-
是否是主题图片资源,仅支持判断使用fwTheme创建的图片资源
Declaration
Swift
public var isThemeAsset: Bool { get }
-
创建主题动态图片资源,分别指定浅色和深色,系统方式,推荐使用
Declaration
Swift
public static func themeLight(_ light: UIImage?, dark: UIImage?) -> UIImageAsset
-
创建主题动态图片资源,指定提供句柄,内部使用FWThemeObject实现
Declaration
Swift
public static func themeAsset(_ provider: @escaping (ThemeStyle) -> UIImage?) -> UIImageAsset
-
订阅主题通知并指定主题上下文(如vc|view),非UITraitEnvironment等需指定后才能响应系统主题
Declaration
Swift
public weak var themeContext: UITraitEnvironment? { get set }
-
添加iOS13主题改变通知回调,返回订阅唯一标志,需订阅后才生效
Declaration
Swift
public func addThemeListener(_ listener: @escaping (ThemeStyle) -> Void) -> String?
-
iOS13根据订阅唯一标志移除主题通知回调
Declaration
Swift
public func removeThemeListener(_ identifier: String?)
-
iOS13移除所有主题通知回调,一般用于cell重用
Declaration
Swift
public func removeAllThemeListeners()
-
iOS13主题改变包装器钩子,如果父类有重写,记得调用super,需订阅后才生效
Declaration
Swift
public func themeChanged(_ style: ThemeStyle)
-
设置主题图片,自动跟随系统改变,清空时需置为nil,二选一
Declaration
Swift
public var themeImage: UIImage? { get set }
-
设置主题图片资源,自动跟随系统改变,清空时需置为nil,二选一
Declaration
Swift
public var themeAsset: UIImageAsset? { get set }
-
读取应用名称
Declaration
Swift
public static var appName: String { get }
-
读取应用显示名称,未配置时读取名称
Declaration
Swift
public static var appDisplayName: String { get }
-
读取应用主版本号,示例:1.0.0
Declaration
Swift
public static var appVersion: String { get }
-
读取应用构建版本号,示例:1.0.0.1
Declaration
Swift
public static var appBuildVersion: String { get }
-
读取应用唯一标识
Declaration
Swift
public static var appIdentifier: String { get }
-
读取应用可执行程序名称
Declaration
Swift
public static var appExecutable: String { get }
-
能否打开URL(NSString|NSURL),需配置对应URL SCHEME到Info.plist才能返回YES
Declaration
Swift
public static func canOpenURL(_ url: Any) -> Bool
-
打开URL,支持NSString|NSURL,完成时回调,即使未配置URL SCHEME,实际也能打开成功,只要调用时已打开过对应App
Declaration
Swift
public static func openURL(_ url: Any, completionHandler: ((Bool) -> Void)? = nil)
-
打开通用链接URL,支持NSString|NSURL,完成时回调。如果是iOS10+通用链接且安装了App,打开并回调YES,否则回调NO
Declaration
Swift
public static func openUniversalLinks(_ url: Any, completionHandler: ((Bool) -> Void)? = nil)
-
判断URL是否是系统链接(如AppStore|电话|设置等),支持NSString|NSURL
Declaration
Swift
public static func isSystemURL(_ url: Any) -> Bool
-
判断URL是否HTTP链接,支持NSString|NSURL
Declaration
Swift
public static func isHttpURL(_ url: Any) -> Bool
-
判断URL是否是AppStore链接,支持NSString|NSURL
Declaration
Swift
public static func isAppStoreURL(_ url: Any) -> Bool
-
打开AppStore下载页
Declaration
Swift
public static func openAppStore(_ appId: String)
-
打开AppStore评价页
Declaration
Swift
public static func openAppStoreReview(_ appId: String)
-
打开应用内评价,有次数限制
Declaration
Swift
public static func openAppReview()
-
打开系统应用设置页
Declaration
Swift
public static func openAppSettings()
-
打开系统邮件App
Declaration
Swift
public static func openMailApp(_ email: String)
-
打开系统短信App
Declaration
Swift
public static func openMessageApp(_ phone: String)
-
打开系统电话App
Declaration
Swift
public static func openPhoneApp(_ phone: String)
-
打开系统分享
Declaration
Swift
public static func openActivityItems(_ activityItems: [Any], excludedTypes: [UIActivity.ActivityType]? = nil)
-
打开内部浏览器,支持NSString|NSURL,点击完成时回调
Declaration
Swift
public static func openSafariController(_ url: Any, completionHandler: (() -> Void)? = nil)
-
打开短信控制器,完成时回调
Declaration
Swift
public static func openMessageController(_ controller: MFMessageComposeViewController, completionHandler: ((Bool) -> Void)? = nil)
-
打开邮件控制器,完成时回调
Declaration
Swift
public static func openMailController(_ controller: MFMailComposeViewController, completionHandler: ((Bool) -> Void)? = nil)
-
打开Store控制器,完成时回调
Declaration
Swift
public static func openStoreController(_ parameters: [String : Any], completionHandler: ((Bool) -> Void)? = nil)
-
打开视频播放器,支持AVPlayerItem|NSURL|NSString
Declaration
Swift
public static func openVideoPlayer(_ url: Any) -> AVPlayerViewController?
-
打开音频播放器,支持NSURL|NSString
Declaration
Swift
public static func openAudioPlayer(_ url: Any) -> AVAudioPlayer?
-
获取当前颜色指定透明度的新颜色
Declaration
Swift
public func color(alpha: CGFloat) -> UIColor
-
读取颜色的十六进制值RGB,不含透明度
Declaration
Swift
public var hexValue: Int { get }
-
读取颜色的透明度值,范围0~1
Declaration
Swift
public var alphaValue: CGFloat { get }
-
读取颜色的十六进制字符串RGB,不含透明度
Declaration
Swift
public var hexString: String { get }
-
读取颜色的十六进制字符串RGBA|ARGB(透明度为1时RGB),包含透明度
Declaration
Swift
public var hexAlphaString: String { get }
-
设置十六进制颜色标准为ARGB|RGBA,启用为ARGB,默认为RGBA
Declaration
Swift
public static var colorStandardARGB: Bool { get set }
-
获取透明度为1.0的RGB随机颜色
Declaration
Swift
public static var randomColor: UIColor { get }
-
从十六进制值初始化,格式:0x20B2AA,透明度默认1.0
Declaration
Swift
public static func color(hex: Int, alpha: CGFloat = 1.0) -> UIColor
-
从十六进制字符串初始化,支持RGB、RGBA|ARGB,格式:@“20B2AA”, @“#FFFFFF",透明度默认1.0,失败时返回clear
Declaration
Swift
public static func color(hexString: String, alpha: CGFloat = 1.0) -> UIColor
-
从颜色字符串初始化,支持十六进制和颜色值,透明度默认1.0,失败时返回clear
Declaration
Swift
public static func color(string: String, alpha: CGFloat = 1.0) -> UIColor
-
全局自定义字体句柄,优先调用
Declaration
Swift
public static var fontBlock: ((CGFloat, UIFont.Weight) -> UIFont)? { get set }
-
是否自动等比例缩放字体,默认NO
Declaration
Swift
public static var autoScale: Bool { get set }
-
返回系统Thin字体
Declaration
Swift
public static func thinFont(ofSize: CGFloat) -> UIFont
-
返回系统Light字体
Declaration
Swift
public static func lightFont(ofSize: CGFloat) -> UIFont
-
返回系统Regular字体
Declaration
Swift
public static func font(ofSize: CGFloat) -> UIFont
-
返回系统Medium字体
Declaration
Swift
public static func mediumFont(ofSize: CGFloat) -> UIFont
-
返回系统Semibold字体
Declaration
Swift
public static func semiboldFont(ofSize: CGFloat) -> UIFont
-
返回系统Bold字体
Declaration
Swift
public static func boldFont(ofSize: CGFloat) -> UIFont
-
创建指定尺寸和weight的系统字体
Declaration
Swift
public static func font(ofSize: CGFloat, weight: UIFont.Weight) -> UIFont
-
从当前图片创建指定透明度的图片
Declaration
Swift
public func image(alpha: CGFloat) -> UIImage?
-
从当前UIImage混合颜色创建UIImage,可自定义模式,默认destinationIn
Declaration
Swift
public func image(tintColor: UIColor, blendMode: CGBlendMode = .destinationIn) -> UIImage?
-
缩放图片到指定大小
Declaration
Swift
public func image(scaleSize: CGSize) -> UIImage?
-
缩放图片到指定大小,指定模式
Declaration
Swift
public func image(scaleSize: CGSize, contentMode: UIView.ContentMode) -> UIImage?
-
按指定模式绘制图片
Declaration
Swift
public func draw(in rect: CGRect, contentMode: UIView.ContentMode, clipsToBounds: Bool)
-
裁剪指定区域图片
Declaration
Swift
public func image(cropRect: CGRect) -> UIImage?
-
指定颜色填充图片边缘
Declaration
Swift
public func image(insets: UIEdgeInsets, color: UIColor?) -> UIImage?
-
拉伸图片(平铺模式),指定端盖区域(不拉伸区域)
Declaration
Swift
public func image(capInsets: UIEdgeInsets) -> UIImage
-
拉伸图片(指定模式),指定端盖区域(不拉伸区域)。Tile为平铺模式,Stretch为拉伸模式
Declaration
Swift
public func image(capInsets: UIEdgeInsets, resizingMode: UIImage.ResizingMode) -> UIImage
-
生成圆角图片
Declaration
Swift
public func image(cornerRadius: CGFloat) -> UIImage?
-
按角度常数(0~360)转动图片,指定图片尺寸是否延伸来适应内容,否则图片尺寸不变,内容被裁剪,默认true
Declaration
Swift
public func image(rotateDegree: CGFloat, fitSize: Bool = true) -> UIImage?
-
生成mark图片
Declaration
Swift
public func image(maskImage: UIImage) -> UIImage?
-
图片合并,并制定叠加图片的起始位置
Declaration
Swift
public func image(mergeImage: UIImage, atPoint: CGPoint) -> UIImage?
-
图片应用CIFilter滤镜处理
Declaration
Swift
public func image(filter: CIFilter) -> UIImage?
-
压缩图片到指定字节,图片太大时会改为JPG格式。不保证图片大小一定小于该大小
Declaration
Swift
public func compressImage(maxLength: Int) -> UIImage?
-
压缩图片到指定字节,图片太大时会改为JPG格式,可设置递减压缩率,默认0.1。不保证图片大小一定小于该大小
Declaration
Swift
public func compressData(maxLength: Int, compressRatio: CGFloat) -> Data?
-
长边压缩图片尺寸,获取等比例的图片
Declaration
Swift
public func compressImage(maxWidth: Int) -> UIImage?
-
通过指定图片最长边,获取等比例的图片size
Declaration
Swift
public func scaleSize(maxWidth: CGFloat) -> CGSize
-
获取原始渲染模式图片,始终显示原色,不显示tintColor。默认自动根据上下文
Declaration
Swift
public var originalImage: UIImage { get }
-
获取模板渲染模式图片,始终显示tintColor,不显示原色。默认自动根据上下文
Declaration
Swift
public var templateImage: UIImage { get }
-
判断图片是否有透明通道
Declaration
Swift
public var hasAlpha: Bool { get }
-
获取当前图片的像素大小,多倍图会放大到一倍
Declaration
Swift
public var pixelSize: CGSize { get }
-
从视图创建UIImage,生成截图,主线程调用
Declaration
Swift
public static func image(view: UIView) -> UIImage?
-
从颜色创建UIImage,尺寸默认1x1
Declaration
Swift
public static func image(color: UIColor) -> UIImage?
-
从颜色创建UIImage,可指定尺寸和圆角,默认圆角0
Declaration
Swift
public static func image(color: UIColor, size: CGSize, cornerRadius: CGFloat = 0) -> UIImage?
-
从block创建UIImage,指定尺寸
Declaration
Swift
public static func image(size: CGSize, block: (CGContext) -> Void) -> UIImage?
-
保存图片到相册,保存成功时error为nil
Declaration
Swift
public func saveImage(completion: ((Error?) -> Void)? = nil)
-
保存视频到相册,保存成功时error为nil。如果视频地址为NSURL,需使用NSURL.path
Declaration
Swift
public static func saveVideo(_ videoPath: String, completion: ((Error?) -> Void)? = nil)
-
顶部纵坐标,frame.origin.y
Declaration
Swift
public var top: CGFloat { get set }
-
底部纵坐标,frame.origin.y + frame.size.height
Declaration
Swift
public var bottom: CGFloat { get set }
-
左边横坐标,frame.origin.x
Declaration
Swift
public var left: CGFloat { get set }
-
右边横坐标,frame.origin.x + frame.size.width
Declaration
Swift
public var right: CGFloat { get set }
-
宽度,frame.size.width
Declaration
Swift
public var width: CGFloat { get set }
-
高度,frame.size.height
Declaration
Swift
public var height: CGFloat { get set }
-
中心横坐标,center.x
Declaration
Swift
public var centerX: CGFloat { get set }
-
中心纵坐标,center.y
Declaration
Swift
public var centerY: CGFloat { get set }
-
起始横坐标,frame.origin.x
Declaration
Swift
public var x: CGFloat { get set }
-
起始纵坐标,frame.origin.y
Declaration
Swift
public var y: CGFloat { get set }
-
起始坐标,frame.origin
Declaration
Swift
public var origin: CGPoint { get set }
-
大小,frame.size
Declaration
Swift
public var size: CGSize { get set }
-
当前生命周期状态,默认Ready
Declaration
Swift
public var visibleState: ViewControllerVisibleState { get }
-
生命周期变化时通知句柄,默认nil
Declaration
Swift
public var visibleStateChanged: ((UIViewController, ViewControllerVisibleState) -> Void)? { get set }
-
自定义完成结果对象,默认nil
Declaration
Swift
public var completionResult: Any? { get set }
-
自定义完成句柄,默认nil,dealloc时自动调用,参数为fwCompletionResult。支持提前调用,调用后需置为nil
Declaration
Swift
public var completionHandler: ((Any?) -> Void)? { get set }
-
自定义侧滑返回手势VC开关句柄,enablePopProxy启用后生效,仅处理边缘返回手势,优先级低,默认nil
Declaration
Swift
public var allowsPopGesture: (() -> Bool)? { get set }
-
自定义控制器返回VC开关句柄,enablePopProxy启用后生效,统一处理返回按钮点击和边缘返回手势,优先级高,默认nil
Declaration
Swift
public var shouldPopController: (() -> Bool)? { get set }
-
单独启用返回代理拦截,优先级高于+enablePopProxy,启用后支持shouldPopController、allowsPopGesture功能,默认NO未启用
Declaration
Swift
public func enablePopProxy()
-
全局启用返回代理拦截,优先级低于-enablePopProxy,启用后支持shouldPopController、allowsPopGesture功能,默认NO未启用
Declaration
Swift
public static func enablePopProxy()
-
设置设备token原始Data,格式化并保存
Declaration
Swift
public static func setDeviceTokenData(_ tokenData: Data?)
-
获取设备Token格式化后的字符串
Declaration
Swift
public static var deviceToken: String? { get }
-
获取设备模型,格式:"iPhone6,1"
Declaration
Swift
public static var deviceModel: String? { get }
-
获取设备IDFV(内部使用),同账号应用全删除后会改变,可通过keychain持久化
Declaration
Swift
public static var deviceIDFV: String? { get }
-
获取设备IDFA(外部使用),重置广告或系统后会改变,需先检测广告追踪权限,启用Tracking子模块后生效
Declaration
Swift
public static var deviceIDFA: String? { get }
-
获取或设置设备UUID,自动keychain持久化。默认获取IDFV(未使用IDFA,避免额外权限),失败则随机生成一个
Declaration
Swift
public static var deviceUUID: String { get set }
-
视图是否可见,视图hidden为NO、alpha>0.01、window存在且size不为0才认为可见
Declaration
Swift
public var isViewVisible: Bool { get }
-
获取响应的视图控制器
Declaration
Swift
public var viewController: UIViewController? { get }
-
设置额外热区(点击区域)
Declaration
Swift
public var touchInsets: UIEdgeInsets { get set }
-
设置自动计算适合高度的frame,需实现sizeThatFits:方法
Declaration
Swift
public var fitFrame: CGRect { get set }
-
计算当前视图适合大小,需实现sizeThatFits:方法
Declaration
Swift
public var fitSize: CGSize { get }
-
计算指定边界,当前视图适合大小,需实现sizeThatFits:方法
Declaration
Swift
public func fitSize(drawSize: CGSize) -> CGSize
-
设置阴影颜色、偏移和半径
Declaration
Swift
public func setShadowColor(_ color: UIColor?, offset: CGSize, radius: CGFloat)
-
绘制四边边框
Declaration
Swift
public func setBorderColor(_ color: UIColor?, width: CGFloat)
-
绘制四边边框和四角圆角
Declaration
Swift
public func setBorderColor(_ color: UIColor?, width: CGFloat, cornerRadius: CGFloat)
-
绘制四角圆角
Declaration
Swift
public func setCornerRadius(_ radius: CGFloat)
-
绘制单边或多边边框Layer。frame必须存在(添加视图后可调用layoutIfNeeded更新frame)
Declaration
Swift
public func setBorderLayer(_ edge: UIRectEdge, color: UIColor?, width: CGFloat)
-
绘制单边或多边边框Layer。frame必须存在(添加视图后可调用layoutIfNeeded更新frame)
Declaration
Swift
public func setBorderLayer(_ edge: UIRectEdge, color: UIColor?, width: CGFloat, leftInset: CGFloat, rightInset: CGFloat)
-
绘制单个或多个边框圆角,frame必须存在(添加视图后可调用layoutIfNeeded更新frame)
Declaration
Swift
public func setCornerLayer(_ corner: UIRectCorner, radius: CGFloat)
-
绘制单个或多个边框圆角和四边边框,frame必须存在(添加视图后可调用layoutIfNeeded更新frame)
Declaration
Swift
public func setCornerLayer(_ corner: UIRectCorner, radius: CGFloat, borderColor: UIColor?, width: CGFloat)
-
绘制单边或多边边框视图。使用AutoLayout
Declaration
Swift
public func setBorderView(_ edge: UIRectEdge, color: UIColor?, width: CGFloat)
-
绘制单边或多边边框。使用AutoLayout
Declaration
Swift
public func setBorderView(_ edge: UIRectEdge, color: UIColor?, width: CGFloat, leftInset: CGFloat, rightInset: CGFloat)
-
开始倒计时,从window移除时自动取消,回调参数为剩余时间
Declaration
Swift
@discardableResult public func startCountDown(_ seconds: Int, block: @escaping (Int) -> Void) -> DispatchSource
-
快速设置attributedText样式,设置后调用setText:会自动转发到setAttributedText:方法
Declaration
Swift
public var textAttributes: [NSAttributedString.Key : Any]? { get set }
-
快速设置文字的行高,优先级低于fwTextAttributes,设置后调用setText:会自动转发到setAttributedText:方法。小于0时恢复默认行高
Declaration
Swift
public var lineHeight: CGFloat { get set }
-
自定义内容边距,未设置时为系统默认。当内容为空时不参与intrinsicContentSize和sizeThatFits:计算,方便自动布局
Declaration
Swift
public var contentInset: UIEdgeInsets { get set }
-
纵向分布方式,默认居中
Declaration
Swift
public var verticalAlignment: UIControl.ContentVerticalAlignment { get set }
-
添加点击手势并自动识别NSLinkAttributeName属性点击时触发回调block
Declaration
Swift
public func addLinkGesture(block: @escaping (Any) -> Void)
-
获取手势触发位置的文本属性,可实现行内点击效果等,allowsSpacing默认为NO空白处不可点击。为了识别更准确,attributedText需指定font
Declaration
Swift
public func attributes(gesture: UIGestureRecognizer, allowsSpacing: Bool) -> [NSAttributedString.Key : Any]
-
快速设置标签并指定文本
Declaration
Swift
public func setFont(_ font: UIFont?, textColor: UIColor?, text: String? = nil)
-
快速创建标签并指定文本
Declaration
Swift
public static func label(font: UIFont?, textColor: UIColor?, text: String? = nil) -> Base
-
自定义按钮禁用时的alpha,如0.5,默认0不生效
Declaration
Swift
public var disabledAlpha: CGFloat { get set }
-
自定义按钮高亮时的alpha,如0.5,默认0不生效
Declaration
Swift
public var highlightedAlpha: CGFloat { get set }
-
快速设置文本按钮
Declaration
Swift
public func setTitle(_ title: String?, font: UIFont?, textColor: UIColor?)
-
快速设置文本
Declaration
Swift
public func setTitle(_ title: String?)
-
快速设置图片
Declaration
Swift
public func setImage(_ image: UIImage?)
-
设置图片的居中边位置,需要在setImage和setTitle之后调用才生效,且button大小大于图片+文字+间距
imageEdgeInsets: 仅有image时相对于button,都有时上左下相对于button,右相对于title titleEdgeInsets: 仅有title时相对于button,都有时上右下相对于button,左相对于image
Declaration
Swift
public func setImageEdge(_ edge: UIRectEdge, spacing: CGFloat)
-
设置状态背景色
Declaration
Swift
public func setBackgroundColor(_ backgroundColor: UIColor?, for state: UIControl.State)
-
快速创建文本按钮
Declaration
Swift
public static func button(title: String?, font: UIFont?, titleColor: UIColor?) -> Base
-
快速创建图片按钮
Declaration
Swift
public static func button(image: UIImage?) -> Base
-
判断当前scrollView内容是否足够滚动
Declaration
Swift
public var canScroll: Bool { get }
-
判断当前的scrollView内容是否足够水平滚动
Declaration
Swift
public var canScrollHorizontal: Bool { get }
-
判断当前的scrollView内容是否足够纵向滚动
Declaration
Swift
public var canScrollVertical: Bool { get }
-
当前scrollView滚动到指定边
Declaration
Swift
public func scroll(to edge: UIRectEdge, animated: Bool = true)
-
是否已滚动到指定边
Declaration
Swift
public func isScroll(to edge: UIRectEdge) -> Bool
-
获取当前的scrollView滚动到指定边时的contentOffset(包含contentInset)
Declaration
Swift
public func contentOffset(of edge: UIRectEdge) -> CGPoint
-
总页数,自动识别翻页方向
Declaration
Swift
public var totalPage: Int { get }
-
当前页数,不支持动画,自动识别翻页方向
Declaration
Swift
public var currentPage: Int { get set }
-
设置当前页数,支持动画,自动识别翻页方向
Declaration
Swift
public func setCurrentPage(_ page: Int, animated: Bool = true)
-
是否是最后一页,自动识别翻页方向
Declaration
Swift
public var isLastPage: Bool { get }
-
自定义圆点大小,默认{10, 10}
Declaration
Swift
public var preferredSize: CGSize { get set }
-
中间圆球的大小,默认zero
Declaration
Swift
public var thumbSize: CGSize { get set }
-
中间圆球的颜色,默认nil
Declaration
Swift
public var thumbColor: UIColor? { get set }
-
自定义尺寸大小,默认{51,31}
Declaration
Swift
public var preferredSize: CGSize { get set }
-
最大字数限制,0为无限制,二选一
Declaration
Swift
public var maxLength: Int { get set }
-
最大Unicode字数限制(中文为1,英文为0.5),0为无限制,二选一
Declaration
Swift
public var maxUnicodeLength: Int { get set }
-
自定义文字改变处理句柄,自动trimString,默认nil
Declaration
Swift
public var textChangedBlock: ((String) -> Void)? { get set }
-
文本长度发生改变,自动检测字数限制,用于代码设置text等场景
Declaration
Swift
public func textLengthChanged()
-
获取满足最大字数限制的过滤后的文本,无需再调用textLengthChanged
Declaration
Swift
public func filterText(_ text: String) -> String
-
设置自动完成时间间隔,默认1秒,和autoCompleteBlock配套使用
Declaration
Swift
public var autoCompleteInterval: TimeInterval { get set }
-
设置自动完成处理句柄,自动trimString,默认nil,注意输入框内容为空时会立即触发
Declaration
Swift
public var autoCompleteBlock: ((String) -> Void)? { get set }
-
最大字数限制,0为无限制,二选一
Declaration
Swift
public var maxLength: Int { get set }
-
最大Unicode字数限制(中文为1,英文为0.5),0为无限制,二选一
Declaration
Swift
public var maxUnicodeLength: Int { get set }
-
自定义文字改变处理句柄,自动trimString,默认nil
Declaration
Swift
public var textChangedBlock: ((String) -> Void)? { get set }
-
文本长度发生改变,自动检测字数限制,用于代码设置text等场景
Declaration
Swift
public func textLengthChanged()
-
获取满足最大字数限制的过滤后的文本,无需再调用textLengthChanged
Declaration
Swift
public func filterText(_ text: String) -> String
-
设置自动完成时间间隔,默认1秒,和autoCompleteBlock配套使用
Declaration
Swift
public var autoCompleteInterval: TimeInterval { get set }
-
设置自动完成处理句柄,默认nil,注意输入框内容为空时会立即触发
Declaration
Swift
public var autoCompleteBlock: ((String) -> Void)? { get set }
-
设置分割线内边距,iOS8+默认15.f,设为UIEdgeInsetsZero可去掉
Declaration
Swift
public var separatorInset: UIEdgeInsets { get set }
-
获取当前所属tableView
Declaration
Swift
public weak var tableView: UITableView? { get }
-
获取当前显示indexPath
Declaration
Swift
public var indexPath: IndexPath? { get }
-
获取当前所属collectionView
Declaration
Swift
public weak var collectionView: UICollectionView? { get }
-
获取当前显示indexPath
Declaration
Swift
public var indexPath: IndexPath? { get }
-
判断当前控制器是否是根控制器。如果是导航栏的第一个控制器或者不含有导航栏,则返回YES
Declaration
Swift
public var isRoot: Bool { get }
-
判断当前控制器是否是子控制器。如果父控制器存在,且不是导航栏或标签栏控制器,则返回YES
Declaration
Swift
public var isChild: Bool { get }
-
判断当前控制器是否是present弹出。如果是导航栏的第一个控制器且导航栏是present弹出,也返回YES
Declaration
Swift
public var isPresented: Bool { get }
-
判断当前控制器是否是iOS13+默认pageSheet弹出样式。该样式下导航栏高度等与默认样式不同
Declaration
Swift
public var isPageSheet: Bool { get }
-
视图是否可见,viewWillAppear后为YES,viewDidDisappear后为NO
Declaration
Swift
public var isViewVisible: Bool { get }
-
是否已经加载完,默认NO,加载完成后可标记为YES,可用于第一次加载时显示loading等判断
Declaration
Swift
public var isLoaded: Bool { get set }