UIView

@_spi(FW) extension UIView
@objc extension UIView: ReusableViewProtocol
@objc extension UIView: StatisticalViewProtocol
  • 转场添加到指定控制器(pinEdges占满父视图),返回父容器视图。VC.tabBarController.view > VC.navigationController.view > VC.view

    Declaration

    Swift

    @discardableResult
    public func fw_transition(to viewController: UIViewController, pinEdges: Bool = true) -> UIView
  • 包装到转场控制器(pinEdges占满父视图),返回创建的控制器

    Declaration

    Swift

    public func fw_wrappedTransitionController(_ pinEdges: Bool = true) -> UIViewController
  • 自定义视图模拟present系统转场(蒙层渐变,内容向上动画)

    Declaration

    Swift

    public func fw_setPresentTransition(_ transitionType: AnimatedTransitionType, contentView: UIView?, completion: ((Bool) -> Void)? = nil)
  • 自定义视图模拟alert缩放转场(蒙层渐变,内容缩放动画)

    Declaration

    Swift

    public func fw_setAlertTransition(_ transitionType: AnimatedTransitionType, completion: ((Bool) -> Void)? = nil)
  • 自定义视图模拟fade渐变转场(蒙层和内容渐变动画)

    Declaration

    Swift

    public func fw_setFadeTransition(_ transitionType: AnimatedTransitionType, completion: ((Bool) -> Void)? = nil)

BadgeView

DrawerView

  • 抽屉拖拽视图,绑定抽屉拖拽效果后才存在

    Declaration

    Swift

    public var fw_drawerView: DrawerView? { get set }
  • 设置抽屉拖拽效果。如果view为滚动视图,自动处理与滚动视图pan手势冲突的问题

    @param direction 拖拽方向,如向上拖动视图时为Up,默认向上 @param positions 抽屉位置,至少两级,相对于view父视图的originY位置 @param kickbackHeight 回弹高度,拖拽小于该高度执行回弹 @param positionChanged 抽屉视图位移回调,参数为相对父视图的origin位置和是否拖拽完成的标记 @return 抽屉拖拽视图

    Declaration

    Swift

    @discardableResult
    public func fw_drawerView(_ direction: UISwipeGestureRecognizer.Direction, positions: [CGFloat], kickbackHeight: CGFloat, positionChanged: ((CGFloat, Bool) -> Void)? = nil) -> DrawerView

ReusableViewPool

  • 初始化可重用视图,默认调用init(frame:)

    Declaration

    Swift

    open class func reusableViewInitialize(reuseIdentifier: String) -> Self
  • 即将回收视图,默认清空viewHolder,必须调用super

    Declaration

    Swift

    open func reusableViewWillRecycle()
  • 即将重用视图,默认重用次数+1,必须调用super

    Declaration

    Swift

    open func reusableViewWillReuse()
  • 视图持有者对象,弱引用

    Declaration

    Swift

    public weak var fw_viewHolder: NSObject? { get set }
  • 重用唯一标志,默认nil

    Declaration

    Swift

    public var fw_reuseIdentifier: String? { get set }
  • 视图已重用次数,默认0

    Declaration

    Swift

    public var fw_reusedTimes: Int { get set }
  • 标记重用准备中(true),准备中的视图在完成(false)之前都不会被dequeue,默认false

    Declaration

    Swift

    public var fw_reusePreparing: Bool { get set }
  • 标记重用失效,将自动从缓存池移除

    Declaration

    Swift

    public var fw_reuseInvalid: Bool { get set }
  • 按需预加载下一个可重用视图,仅当前视图可重用时生效

    Declaration

    Swift

    public func fw_preloadReusableView()

UIKit+SkeletonLayout

StatisticalViewProtocol

  • 默认实现绑定点击事件方法,返回绑定结果,子类可重写,勿直接调用

    Declaration

    Swift

    open func statisticalViewWillBindClick(_ containerView: UIView?) -> Bool
  • 可统计视图绑定曝光事件方法,返回绑定结果,子类可重写,勿直接调用

    Declaration

    Swift

    open func statisticalViewWillBindExposure(_ containerView: UIView?) -> Bool
  • 可统计视图子视图列表方法,返回nil时不处理,一般container实现(批量曝光),子类可重写

    Declaration

    Swift

    open func statisticalViewChildViews() -> [UIView]?
  • 可统计视图可见indexPaths方法,返回nil时不处理,一般container实现(批量曝光),子类可重写

    Declaration

    Swift

    open func statisticalViewVisibleIndexPaths() -> [IndexPath]?
  • 可统计视图容器视图方法,返回nil时不处理,一般cell实现,子类可重写

    Declaration

    Swift

    open func statisticalViewContainerView() -> UIView?
  • 可统计视图索引位置方法,返回nil时不处理,一般cell(批量曝光)和container(单曝光)实现,子类可重写

    Declaration

    Swift

    open func statisticalViewIndexPath() -> IndexPath?

Click

  • 设置并尝试自动绑定点击事件统计

    Declaration

    Swift

    public var fw_statisticalClick: StatisticalEvent? { get set }
  • 设置统计点击事件触发时自定义监听器,默认nil

    Declaration

    Swift

    public var fw_statisticalClickListener: ((StatisticalEvent) -> Void)? { get set }
  • 手工绑定点击事件统计,可指定容器视图,自动绑定失败时可手工调用

    Declaration

    Swift

    @discardableResult
    public func fw_statisticalBindClick(_ containerView: UIView? = nil) -> Bool
  • 触发视图点击事件统计,仅绑定statisticalClick后生效

    Declaration

    Swift

    @discardableResult
    public func fw_statisticalTrackClick(indexPath: IndexPath? = nil, event: StatisticalEvent? = nil) -> Bool

Exposure

  • 设置并尝试自动绑定曝光事件统计。如果对象发生变化(indexPath|name|object),也会触发

    Declaration

    Swift

    public var fw_statisticalExposure: StatisticalEvent? { get set }
  • 设置统计曝光事件触发时自定义监听器,默认nil

    Declaration

    Swift

    public var fw_statisticalExposureListener: ((StatisticalEvent) -> Void)? { get set }
  • 手工绑定曝光事件统计,可指定容器视图,自动绑定失败时可手工调用

    Declaration

    Swift

    @discardableResult
    public func fw_statisticalBindExposure(_ containerView: UIView? = nil) -> Bool
  • 触发视图曝光事件统计,仅绑定statisticalExposure后生效

    Declaration

    Swift

    @discardableResult
    public func fw_statisticalTrackExposure(indexPath: IndexPath? = nil, isFinished: Bool = false, event: StatisticalEvent? = nil) -> Bool
  • 检查并更新视图曝光状态,用于自定义场景

    Declaration

    Swift

    public func fw_statisticalCheckExposure()

UIView+AlertPlugin

UIView+EmptyPlugin

UIView+ImagePlugin

UIViewController+ImagePickerPlugin

  • 从Camera选取单张图片(简单版)

    Declaration

    Swift

    public func fw_showImageCamera(allowsEditing: Bool, completion: @escaping (UIImage?, Bool) -> Void)

    Parameters

    allowsEditing

    是否允许编辑

    completion

    完成回调,主线程。参数1为图片,2为是否取消

  • 从Camera选取单张图片(详细版)

    Declaration

    Swift

    public func fw_showImageCamera(filterType: ImagePickerFilterType, allowsEditing: Bool, customBlock: ((Any) -> Void)? = nil, completion: @escaping (Any?, Any?, Bool) -> Void)

    Parameters

    filterType

    过滤类型,默认0同系统

    allowsEditing

    是否允许编辑

    customBlock

    自定义配置句柄,默认nil

    completion

    完成回调,主线程。参数1为对象(UIImage|PHLivePhoto|NSURL),2为结果信息,3为是否取消

  • 从图片库选取单张图片(简单版)

    Declaration

    Swift

    public func fw_showImagePicker(allowsEditing: Bool, completion: @escaping (UIImage?, Bool) -> Void)

    Parameters

    allowsEditing

    是否允许编辑

    completion

    完成回调,主线程。参数1为图片,2为是否取消

  • 从图片库选取多张图片(简单版)

    Declaration

    Swift

    public func fw_showImagePicker(selectionLimit: Int, allowsEditing: Bool, completion: @escaping ([UIImage], [Any], Bool) -> Void)

    Parameters

    selectionLimit

    最大选择数量

    allowsEditing

    是否允许编辑

    completion

    完成回调,主线程。参数1为图片数组,2为结果数组,3为是否取消

  • 从图片库选取多张图片(详细版)

    Declaration

    Swift

    public func fw_showImagePicker(filterType: ImagePickerFilterType, selectionLimit: Int, allowsEditing: Bool, customBlock: ((Any) -> Void)? = nil, completion: @escaping ([Any], [Any], Bool) -> Void)

    Parameters

    filterType

    过滤类型,默认0同系统

    selectionLimit

    最大选择数量

    allowsEditing

    是否允许编辑

    customBlock

    自定义配置句柄,默认nil

    completion

    完成回调,主线程。参数1为对象数组(UIImage|PHLivePhoto|NSURL),2位结果数组,3为是否取消

UIViewController+ImagePreviewPlugin

  • 显示图片预览(简单版)

    Declaration

    Swift

    public func fw_showImagePreview(imageURLs: [Any], imageInfos: [Any]? = nil, currentIndex: Int = 0, sourceView: ((Int) -> Any?)? = nil)

    Parameters

    imageURLs

    预览图片列表,支持NSString|UIImage|PHLivePhoto|AVPlayerItem类型

    imageInfos

    自定义图片信息数组

    currentIndex

    当前索引,默认0

    sourceView

    来源视图,可选,支持UIView|NSValue.CGRect,默认nil

  • 显示图片预览(详细版)

    Declaration

    Swift

    public func fw_showImagePreview(imageURLs: [Any], imageInfos: [Any]?, currentIndex: Int, sourceView: ((Int) -> Any?)?, placeholderImage: ((Int) -> UIImage?)?, renderBlock: ((UIView, Int) -> Void)? = nil, customBlock: ((Any) -> Void)? = nil)

    Parameters

    imageURLs

    预览图片列表,支持NSString|UIImage|PHLivePhoto|AVPlayerItem类型

    imageInfos

    自定义图片信息数组

    currentIndex

    当前索引,默认0

    sourceView

    来源视图句柄,支持UIView|NSValue.CGRect,默认nil

    placeholderImage

    占位图或缩略图句柄,默认nil

    renderBlock

    自定义渲染句柄,默认nil

    customBlock

    自定义句柄,默认nil

UIView+ToastPlugin

  • 自定义吐司插件,未设置时自动从插件池加载

    Declaration

    Swift

    public var fw_toastPlugin: ToastPlugin! { get set }
  • 设置吐司外间距,默认zero

    Declaration

    Swift

    public var fw_toastInsets: UIEdgeInsets { get set }
  • 显示加载吐司,默认需手工隐藏,指定cancelBlock时点击会自动隐藏并调用之,支持String和AttributedString

    Declaration

    Swift

    public func fw_showLoading(text: AttributedStringParameter? = nil, cancelBlock: (() -> Void)? = nil, customBlock: ((Any) -> Void)? = nil)
  • 隐藏加载吐司,可指定延迟隐藏从而实现连续的加载效果

    Declaration

    Swift

    public func fw_hideLoading(delayed: Bool = false)
  • 获取正在显示的加载吐司视图

    Declaration

    Swift

    public var fw_showingLoadingView: UIView? { get }
  • 是否正在显示加载吐司

    Declaration

    Swift

    public var fw_isShowingLoading: Bool { get }
  • 显示进度条吐司,默认需手工隐藏,指定cancelBlock时点击会自动隐藏并调用之,支持String和AttributedString

    Declaration

    Swift

    public func fw_showProgress(_ progress: CGFloat, text: AttributedStringParameter? = nil, cancelBlock: (() -> Void)? = nil, customBlock: ((Any) -> Void)? = nil)
  • 隐藏进度条吐司

    Declaration

    Swift

    public func fw_hideProgress()
  • 获取正在显示的进度条吐司视图

    Declaration

    Swift

    public var fw_showingProgressView: UIView? { get }
  • 是否正在显示进度条吐司

    Declaration

    Swift

    public var fw_isShowingProgress: Bool { get }
  • 显示错误消息吐司,自动隐藏,自动隐藏完成后回调

    Declaration

    Swift

    public func fw_showMessage(error: Error?, completion: (() -> Void)? = nil)
  • 显示指定样式消息吐司,自动隐藏,自动隐藏完成后回调,支持String和AttributedString

    Declaration

    Swift

    public func fw_showMessage(text: AttributedStringParameter?, style: ToastStyle = .default, completion: (() -> Void)? = nil)
  • 显示指定样式消息吐司,可设置自动隐藏和允许交互,自动隐藏完成后回调,支持String和AttributedString

    Declaration

    Swift

    public func fw_showMessage(text: AttributedStringParameter?, style: ToastStyle, autoHide: Bool, interactive: Bool, completion: (() -> Void)? = nil, customBlock: ((Any) -> Void)? = nil)
  • 隐藏消息吐司

    Declaration

    Swift

    public func fw_hideMessage()
  • 获取正在显示的消息吐司视图

    Declaration

    Swift

    public var fw_showingMessageView: UIView? { get }
  • 是否正在显示消息吐司

    Declaration

    Swift

    public var fw_isShowingMessage: Bool { get }

UIView+ViewPlugin

UIView+Adaptive

  • 是否自动等比例缩放方式设置transform,默认NO

    Declaration

    Swift

    public var fw_autoScaleTransform: Bool { get set }

AutoLayout

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

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

    Declaration

    Swift

    public static var fw_autoLayoutRTL: Bool
  • 自定义全局自动等比例缩放适配句柄,默认nil

    启用全局等比例缩放后,所有offset值都会调用该句柄,需注意可能产生的影响。 启用后注意事项如下:

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

    Declaration

    Swift

    public static var fw_autoScaleBlock: ((CGFloat) -> CGFloat)?
  • 快捷启用全局自动等比例缩放布局,自动设置默认autoScaleBlock

    框架仅BadgeView和ToolbarView默认关闭等比例缩放布局,采用固定值布局; 其余使用AutoLayout的场景统一使用全局等比例缩放布局开关设置

    Declaration

    Swift

    public static var fw_autoScaleLayout: Bool { get set }
  • 是否启用全局自动像素取整布局,默认false

    Declaration

    Swift

    public static var fw_autoFlatLayout: Bool
  • 视图是否自动等比例缩放布局,默认未设置时检查autoScaleBlock

    框架仅BadgeView和ToolbarView默认关闭等比例缩放布局,采用固定值布局; 其余使用AutoLayout的场景统一使用全局等比例缩放布局开关设置

    Declaration

    Swift

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

    Declaration

    Swift

    public func fw_autoLayoutSubviews()

Compression

  • 设置水平方向抗压缩优先级

    Declaration

    Swift

    public var fw_compressionHorizontal: UILayoutPriority { get set }
  • 设置垂直方向抗压缩优先级

    Declaration

    Swift

    public var fw_compressionVertical: UILayoutPriority { get set }
  • 设置水平方向抗拉伸优先级

    Declaration

    Swift

    public var fw_huggingHorizontal: UILayoutPriority { get set }
  • 设置垂直方向抗拉伸优先级

    Declaration

    Swift

    public var fw_huggingVertical: UILayoutPriority { get set }

Collapse

  • 设置视图是否收缩,默认NO为原始值,YES时为收缩值

    Declaration

    Swift

    public var fw_isCollapsed: Bool { get set }
  • 设置视图是否自动收缩,如image为nil,text为nil、@“"时自动收缩,默认NO

    Declaration

    Swift

    public var fw_autoCollapse: Bool { get set }
  • 设置视图是否隐藏时自动收缩、显示时自动展开,默认NO

    Declaration

    Swift

    public var fw_hiddenCollapse: Bool { get set }
  • 添加视图的偏移收缩约束,必须先添加才能生效

    Declaration

    Swift

    public func fw_addCollapseConstraint(_ constraint: NSLayoutConstraint, offset: CGFloat? = nil)
  • 添加视图的有效性收缩约束,必须先添加才能生效

    Declaration

    Swift

    public func fw_addCollapseActiveConstraint(_ constraint: NSLayoutConstraint, active: Bool? = nil)
  • 添加视图的优先级收缩约束,必须先添加才能生效

    Declaration

    Swift

    public func fw_addCollapsePriorityConstraint(_ constraint: NSLayoutConstraint, priority: UILayoutPriority? = nil)
  • 移除指定的视图收缩约束

    Declaration

    Swift

    public func fw_removeCollapseConstraint(_ constraint: NSLayoutConstraint)
  • 移除所有的视图收缩约束

    Declaration

    Swift

    public func fw_removeAllCollapseConstraints()

Axis

  • 父视图居中,可指定偏移距离

    Declaration

    Swift

    @discardableResult
    public func fw_alignCenter(toSuperview offset: CGPoint = .zero) -> [NSLayoutConstraint]

    Parameters

    offset

    偏移距离,默认zero

    Return Value

    约束数组

  • 父视图属性居中,可指定偏移距离

    Declaration

    Swift

    @discardableResult
    public func fw_alignAxis(toSuperview axis: NSLayoutConstraint.Attribute, offset: CGFloat = 0) -> NSLayoutConstraint

    Parameters

    axis

    居中属性

    offset

    偏移距离,默认0

    Return Value

    布局约束

  • 与另一视图居中相同,可指定偏移距离

    Declaration

    Swift

    @discardableResult
    public func fw_alignAxis(_ axis: NSLayoutConstraint.Attribute, toView: Any, offset: CGFloat = 0) -> NSLayoutConstraint

    Parameters

    axis

    居中属性

    toView

    另一视图或UILayoutGuide,下同

    offset

    偏移距离,默认0

    Return Value

    布局约束

  • 与另一视图居中指定比例

    Declaration

    Swift

    @discardableResult
    public func fw_alignAxis(_ axis: NSLayoutConstraint.Attribute, toView: Any, multiplier: CGFloat) -> NSLayoutConstraint

    Parameters

    axis

    居中属性

    toView

    另一视图

    multiplier

    指定比例

    Return Value

    布局约束

Edge

  • 与父视图四条边属性相同,可指定insets距离

    Declaration

    Swift

    @discardableResult
    public func fw_pinEdges(toSuperview insets: UIEdgeInsets = .zero) -> [NSLayoutConstraint]

    Parameters

    insets

    指定距离insets,默认zero

    Return Value

    约束数组

  • 与父视图三条边属性距离指定距离

    Declaration

    Swift

    @discardableResult
    public func fw_pinEdges(toSuperview insets: UIEdgeInsets = .zero, excludingEdge: NSLayoutConstraint.Attribute) -> [NSLayoutConstraint]

    Parameters

    insets

    指定距离insets

    excludingEdge

    排除的边

    Return Value

    约束数组

  • 与父视图水平方向两条边属性相同,可指定偏移距离

    Declaration

    Swift

    @discardableResult
    public func fw_pinHorizontal(toSuperview inset: CGFloat = .zero) -> [NSLayoutConstraint]

    Parameters

    inset

    偏移距离

    Return Value

    约束数组

  • 与父视图垂直方向两条边属性相同,可指定偏移距离

    Declaration

    Swift

    @discardableResult
    public func fw_pinVertical(toSuperview inset: CGFloat = .zero) -> [NSLayoutConstraint]

    Parameters

    inset

    偏移距离

    Return Value

    约束数组

  • 与父视图边属性相同,可指定偏移距离和关系

    Declaration

    Swift

    @discardableResult
    public func fw_pinEdge(toSuperview edge: NSLayoutConstraint.Attribute, inset: CGFloat = .zero, relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> NSLayoutConstraint

    Parameters

    edge

    指定边属性

    inset

    偏移距离,默认0

    relation

    约束关系,默认相等

    priority

    约束优先级,默认required

    Return Value

    布局约束

  • 与指定视图边属性相同,可指定偏移距离和关系

    Declaration

    Swift

    @discardableResult
    public func fw_pinEdge(_ edge: NSLayoutConstraint.Attribute, toEdge: NSLayoutConstraint.Attribute, ofView: Any, offset: CGFloat = 0, relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> NSLayoutConstraint

    Parameters

    edge

    指定边属性

    toEdge

    另一视图边属性

    ofView

    另一视图

    offset

    偏移距离,默认0

    relation

    约束关系,默认相等

    priority

    约束优先级,默认required

    Return Value

    布局约束

SafeArea

  • 父视图安全区域居中,可指定偏移距离。iOS11以下使用Superview实现,下同

    Declaration

    Swift

    @discardableResult
    public func fw_alignCenter(toSafeArea offset: CGPoint) -> [NSLayoutConstraint]

    Parameters

    offset

    偏移距离

    Return Value

    约束数组

  • 父视图安全区域属性居中,可指定偏移距离

    Declaration

    Swift

    @discardableResult
    public func fw_alignAxis(toSafeArea axis: NSLayoutConstraint.Attribute, offset: CGFloat = .zero) -> NSLayoutConstraint

    Parameters

    axis

    居中属性

    offset

    偏移距离,默认0

    Return Value

    布局约束

  • 与父视图安全区域四条边属性相同,可指定距离insets

    Declaration

    Swift

    @discardableResult
    public func fw_pinEdges(toSafeArea insets: UIEdgeInsets) -> [NSLayoutConstraint]

    Parameters

    insets

    指定距离insets

    Return Value

    约束数组

  • 与父视图安全区域三条边属性距离指定距离

    Declaration

    Swift

    @discardableResult
    public func fw_pinEdges(toSafeArea insets: UIEdgeInsets, excludingEdge: NSLayoutConstraint.Attribute) -> [NSLayoutConstraint]

    Parameters

    insets

    指定距离insets

    excludingEdge

    排除的边

    Return Value

    约束数组

  • 与父视图安全区域水平方向两条边属性相同,可指定偏移距离

    Declaration

    Swift

    @discardableResult
    public func fw_pinHorizontal(toSafeArea inset: CGFloat) -> [NSLayoutConstraint]

    Parameters

    inset

    偏移距离

    Return Value

    约束数组

  • 与父视图安全区域垂直方向两条边属性相同,可指定偏移距离

    Declaration

    Swift

    @discardableResult
    public func fw_pinVertical(toSafeArea inset: CGFloat) -> [NSLayoutConstraint]

    Parameters

    inset

    偏移距离

    Return Value

    约束数组

  • 与父视图安全区域边属性相同,可指定偏移距离和关系

    Declaration

    Swift

    @discardableResult
    public func fw_pinEdge(toSafeArea edge: NSLayoutConstraint.Attribute, inset: CGFloat = .zero, relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> NSLayoutConstraint

    Parameters

    edge

    指定边属性

    inset

    偏移距离,默认0

    relation

    约束关系,默认相等

    priority

    约束优先级,默认required

    Return Value

    布局约束

Dimension

  • 设置宽高尺寸

    Declaration

    Swift

    @discardableResult
    public func fw_setDimensions(_ size: CGSize) -> [NSLayoutConstraint]

    Parameters

    size

    尺寸大小

    Return Value

    约束数组

  • 设置某个尺寸,可指定关系

    Declaration

    Swift

    @discardableResult
    public func fw_setDimension(_ dimension: NSLayoutConstraint.Attribute, size: CGFloat, relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> NSLayoutConstraint

    Parameters

    dimension

    尺寸属性

    size

    尺寸大小

    relation

    约束关系,默认相等

    priority

    约束优先级,默认required

    Return Value

    布局约束

  • 与视图自身尺寸属性指定比例,指定关系

    Declaration

    Swift

    @discardableResult
    public func fw_matchDimension(_ dimension: NSLayoutConstraint.Attribute, toDimension: NSLayoutConstraint.Attribute, multiplier: CGFloat, relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> NSLayoutConstraint

    Parameters

    dimension

    尺寸属性

    toDimension

    目标尺寸属性

    multiplier

    指定比例

    relation

    约束关系

    priority

    约束优先级,默认required

    Return Value

    布局约束

  • 与指定视图尺寸属性相同,可指定相差大小和关系

    Declaration

    Swift

    @discardableResult
    public func fw_matchDimension(_ dimension: NSLayoutConstraint.Attribute, toDimension: NSLayoutConstraint.Attribute, ofView: Any, offset: CGFloat = .zero, relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> NSLayoutConstraint

    Parameters

    dimension

    尺寸属性

    toDimension

    目标尺寸属性

    ofView

    目标视图

    offset

    相差大小,默认0

    relation

    约束关系,默认相等

    priority

    约束优先级,默认required

    Return Value

    布局约束

  • 与指定视图尺寸属性指定比例,可指定关系

    Declaration

    Swift

    @discardableResult
    public func fw_matchDimension(_ dimension: NSLayoutConstraint.Attribute, toDimension: NSLayoutConstraint.Attribute, ofView: Any, multiplier: CGFloat, relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> NSLayoutConstraint

    Parameters

    dimension

    尺寸属性

    toDimension

    目标尺寸属性

    ofView

    目标视图

    multiplier

    指定比例

    relation

    约束关系,默认相等

    priority

    约束优先级,默认required

    Return Value

    布局约束

Constrain

  • 与指定视图属性偏移指定距离,指定关系

    Declaration

    Swift

    @discardableResult
    public func fw_constrainAttribute(_ attribute: NSLayoutConstraint.Attribute, toAttribute: NSLayoutConstraint.Attribute, ofView: Any?, offset: CGFloat = .zero, relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> NSLayoutConstraint

    Parameters

    attribute

    指定属性

    toAttribute

    目标视图属性

    ofView

    目标视图

    offset

    偏移距离

    relation

    约束关系

    priority

    约束优先级,默认required

    Return Value

    布局约束

  • 与指定视图属性指定比例,指定关系

    Declaration

    Swift

    @discardableResult
    public func fw_constrainAttribute(_ attribute: NSLayoutConstraint.Attribute, toAttribute: NSLayoutConstraint.Attribute, ofView: Any?, multiplier: CGFloat, offset: CGFloat = .zero, relation: NSLayoutConstraint.Relation = .equal, priority: UILayoutPriority = .required) -> NSLayoutConstraint

    Parameters

    attribute

    指定属性

    toAttribute

    目标视图属性

    ofView

    目标视图

    multiplier

    指定比例

    offset

    偏移距离

    relation

    约束关系

    priority

    约束优先级,默认required

    Return Value

    布局约束

Constraint

  • 获取添加的与父视图属性的约束,指定关系

    Declaration

    Swift

    public func fw_constraint(toSuperview attribute: NSLayoutConstraint.Attribute, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint?

    Parameters

    attribute

    指定属性

    relation

    约束关系

    Return Value

    布局约束

  • 获取添加的与父视图安全区域属性的约束,指定关系

    Declaration

    Swift

    public func fw_constraint(toSafeArea attribute: NSLayoutConstraint.Attribute, relation: NSLayoutConstraint.Relation = .equal) -> NSLayoutConstraint?

    Parameters

    attribute

    指定属性

    relation

    约束关系

    Return Value

    布局约束

  • 获取添加的与指定视图属性的约束,指定关系

    Declaration

    Swift

    public func fw_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 fw_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 fw_constraint(identifier: String?) -> NSLayoutConstraint?

    Parameters

    identifier

    唯一标志

    Return Value

    布局约束

  • 最近一批添加或更新的布局约束

    Declaration

    Swift

    public var fw_lastConstraints: [NSLayoutConstraint] { get set }
  • 获取当前所有约束

    Declaration

    Swift

    public private(set) var fw_allConstraints: [NSLayoutConstraint] { get set }
  • 移除当前指定约束数组

    Declaration

    Swift

    public func fw_removeConstraints(_ constraints: [NSLayoutConstraint]?)

    Parameters

    constraints

    布局约束数组

  • 移除当前所有约束

    Declaration

    Swift

    public func fw_removeAllConstraints()

UIView+LayoutChain

AutoLayout+Debug

  • 自动布局调试开关,默认调试打开,正式关闭

    Declaration

    Swift

    public static var fw_autoLayoutDebug: Bool { get set }
  • 布局调试Key

    Declaration

    Swift

    public var fw_layoutKey: String? { get set }

UIView+Block

  • 获取当前视图添加的第一个点击手势,默认nil

    Declaration

    Swift

    public var fw_tapGesture: UITapGestureRecognizer? { get }
  • 添加点击手势事件,可自定义点击高亮句柄等

    Declaration

    Swift

    public func fw_addTapGesture(target: Any, action: Selector, customize: ((TapGestureRecognizer) -> Void)? = nil)
  • 添加点击手势句柄,可自定义点击高亮句柄等

    Declaration

    Swift

    @discardableResult
    public func fw_addTapGesture(block: @escaping (Any) -> Void, customize: ((TapGestureRecognizer) -> Void)? = nil) -> String
  • 根据监听唯一标志移除点击手势句柄,返回是否成功

    Declaration

    Swift

    @discardableResult
    public func fw_removeTapGesture(identifier: String) -> Bool
  • 移除所有点击手势

    Declaration

    Swift

    public func fw_removeAllTapGestures()

UIView+DynamicLayout

  • 计算动态布局视图指定宽度时的高度。使用AutoLayout必须约束完整,不使用AutoLayout会调用view的sizeThatFits:方法。注意UILabel可使用preferredMaxLayoutWidth限制多行文本自动布局时的最大宽度

    Declaration

    Swift

    public func fw_layoutHeight(width: CGFloat) -> CGFloat
  • 计算动态布局视图指定高度时的宽度。使用AutoLayout必须约束完整,不使用AutoLayout会调用view的sizeThatFits:方法

    Declaration

    Swift

    public func fw_layoutWidth(height: CGFloat) -> CGFloat
  • 计算动态AutoLayout布局视图指定宽度时的高度。

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

    Declaration

    Swift

    public func fw_dynamicHeight(
        width: CGFloat,
        maxYViewExpanded: Bool = false,
        maxYViewPadding: CGFloat = 0,
        maxYView: UIView? = nil
    ) -> CGFloat

    Parameters

    width

    指定宽度

    maxYViewExpanded

    最大Y视图是否撑开布局,需布局约束完整。默认false,无需撑开布局

    maxYViewPadding

    最大Y视图的底部内边距,maxYViewExpanded为true时不起作用,默认0

    maxYView

    指定最大Y视图,默认nil

    Return Value

    高度

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

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

    Declaration

    Swift

    public func fw_dynamicWidth(
        height: CGFloat,
        maxYViewExpanded: Bool = false,
        maxYViewPadding: CGFloat = 0,
        maxYView: UIView? = nil
    ) -> CGFloat

    Parameters

    height

    指定高度

    maxYViewExpanded

    最大Y视图是否撑开布局(横向时为X),需布局约束完整。默认false,无需撑开布局

    maxYViewPadding

    最大Y视图的底部内边距(横向时为X),maxYViewExpanded为true时不起作用,默认0

    maxYView

    指定最大Y视图(横向时为X),默认nil

    Return Value

    宽度

  • 获取动态布局视图类的尺寸,可固定宽度或高度

    Declaration

    Swift

    public func fw_dynamicSize<T: UIView & DynamicLayoutViewProtocol>(
        viewClass: T.Type,
        viewIdentifier: String,
        width fixedWidth: CGFloat = 0,
        height fixedHeight: CGFloat = 0,
        configuration: (T) -> Void
    ) -> CGSize

    Parameters

    viewClass

    视图类

    viewIdentifier

    视图标记

    fixedWidth

    固定宽度,默认0不固定

    fixedHeight

    固定高度,默认0不固定

    configuration

    布局cell句柄,内部不会持有Block,不需要weak

    Return Value

    尺寸

UIView+QuartzCore

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

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

    Declaration

    Swift

    public func fw_drawBezierPath(
        _ bezierPath: UIBezierPath,
        strokeWidth: CGFloat,
        strokeColor: UIColor,
        fillColor: UIColor?
    )
  • 绘制渐变颜色,需要在drawRect中调用,支持四个方向,默认向下Down

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

    Declaration

    Swift

    public func fw_drawLinearGradient(
        _ rect: CGRect,
        colors: [Any],
        locations: UnsafePointer<CGFloat>?,
        direction: UISwipeGestureRecognizer.Direction
    )
  • 绘制渐变颜色,需要在drawRect中调用

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

    Declaration

    Swift

    public func fw_drawLinearGradient(
        _ rect: CGRect,
        colors: [Any],
        locations: UnsafePointer<CGFloat>?,
        startPoint: CGPoint,
        endPoint: CGPoint
    )
  • 添加渐变Layer

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

    Declaration

    Swift

    @discardableResult
    public func fw_addGradientLayer(
        _ frame: CGRect,
        colors: [Any],
        locations: [NSNumber]?,
        startPoint: CGPoint,
        endPoint: CGPoint
    ) -> CAGradientLayer
  • 添加虚线Layer

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

    Declaration

    Swift

    @discardableResult
    public func fw_addDashLayer(
        _ rect: CGRect,
        lineLength: CGFloat,
        lineSpacing: CGFloat,
        lineColor: UIColor
    ) -> CALayer

Animation

  • 添加UIView动画,使用默认动画参数 @note 如果动画过程中需要获取进度,可通过添加CADisplayLink访问self.layer.presentationLayer获取,下同

    @param block 动画代码块 @param duration 持续时间 @param options 动画选项,默认7<<16 @param completion 完成事件

    Declaration

    Swift

    public func fw_addAnimation(
        block: @escaping () -> Void,
        duration: TimeInterval,
        options: UIView.AnimationOptions? = nil,
        completion: ((Bool) -> Void)? = nil
    )
  • 添加UIView动画

    @param curve 动画速度 @param transition 动画类型 @param duration 持续时间,默认0.2 @param animations 动画句柄 @param completion 完成事件

    Declaration

    Swift

    public func fw_addAnimation(
        curve: UIView.AnimationOptions,
        transition: UIView.AnimationOptions,
        duration: TimeInterval,
        animations: (() -> Void)? = nil,
        completion: ((Bool) -> Void)? = nil
    )
  • 添加CABasicAnimation动画

    @param keyPath 动画路径 @param fromValue 开始值 @param toValue 结束值 @param duration 持续时间,0为默认(0.25秒) @param completion 完成事件 @return CABasicAnimation

    Declaration

    Swift

    @discardableResult
    public func fw_addAnimation(
        keyPath: String,
        fromValue: Any,
        toValue: Any,
        duration: CFTimeInterval,
        completion: ((Bool) -> Void)? = nil
    ) -> CABasicAnimation
  • 添加转场动画,可指定animationsEnabled,一般用于window切换rootViewController

    @param options 动画选项 @param block 动画代码块 @param duration 持续时间 @param animationsEnabled 是否启用动画,默认true @param completion 完成事件

    Declaration

    Swift

    public func fw_addTransition(
        options: UIView.AnimationOptions = [],
        block: @escaping () -> Void,
        duration: TimeInterval,
        animationsEnabled: Bool = true,
        completion: ((Bool) -> Void)? = nil
    )
  • 添加CATransition转场动画 备注:移除动画可调用[self fwRemoveAnimation]

    @param type 动画类型 @param subtype 子类型 @param timingFunction 动画速度 @param duration 持续时间,0为默认(0.25秒) @param completion 完成事件 @return CATransition

    Declaration

    Swift

    @discardableResult
    public func fw_addTransition(
        type: CATransitionType,
        subtype: CATransitionSubtype?,
        timingFunction: CAMediaTimingFunction?,
        duration: CFTimeInterval,
        completion: ((Bool) -> Void)? = nil
    ) -> CATransition
  • 移除单个框架视图动画

    Declaration

    Swift

    public func fw_removeAnimation()
  • 移除所有视图动画

    Declaration

    Swift

    public func fw_removeAllAnimations()
  • 绘制动画

    @param layer CAShapeLayer层 @param duration 持续时间 @param completion 完成回调 @return CABasicAnimation

    Declaration

    Swift

    @discardableResult
    public func fw_stroke(
        layer: CAShapeLayer,
        duration: TimeInterval,
        completion: ((Bool) -> Void)? = nil
    ) -> CABasicAnimation
  • 水平摇摆动画

    @param times 摇摆次数,默认10 @param delta 摇摆宽度,默认5 @param duration 单次时间,默认0.03 @param completion 完成回调

    Declaration

    Swift

    public func fw_shake(
        times: Int,
        delta: CGFloat,
        duration: TimeInterval,
        completion: ((Bool) -> Void)? = nil
    )
  • 渐显隐动画

    @param alpha 透明度 @param duration 持续时长 @param completion 完成回调

    Declaration

    Swift

    public func fw_fade(
        alpha: CGFloat,
        duration: TimeInterval,
        completion: ((Bool) -> Void)? = nil
    )
  • 渐变代码块动画

    @param block 动画代码块,比如调用imageView.setImage:方法 @param duration 持续时长,建议0.5 @param completion 完成回调

    Declaration

    Swift

    public func fw_fade(
        block: @escaping () -> Void,
        duration: TimeInterval,
        completion: ((Bool) -> Void)? = nil
    )
  • 旋转动画

    @param degree 旋转度数,备注:逆时针需设置-179.99。使用CAAnimation无此问题 @param duration 持续时长 @param completion 完成回调

    Declaration

    Swift

    public func fw_rotate(
        degree: CGFloat,
        duration: TimeInterval,
        completion: ((Bool) -> Void)? = nil
    )
  • 缩放动画

    @param scaleX X轴缩放率 @param scaleY Y轴缩放率 @param duration 持续时长 @param completion 完成回调

    Declaration

    Swift

    public func fw_scale(
        scaleX: CGFloat,
        scaleY: CGFloat,
        duration: TimeInterval,
        completion: ((Bool) -> Void)? = nil
    )
  • 移动动画

    @param point 目标点 @param duration 持续时长 @param completion 完成回调

    Declaration

    Swift

    public func fw_move(
        point: CGPoint,
        duration: TimeInterval,
        completion: ((Bool) -> Void)? = nil
    )
  • 移动变化动画

    @param frame 目标区域 @param duration 持续时长 @param completion 完成回调

    Declaration

    Swift

    public func fw_move(
        frame: CGRect,
        duration: TimeInterval,
        completion: ((Bool) -> Void)? = nil
    )
  • 取消动画效果执行block

    @param block 动画代码块 @param completion 完成事件

    Declaration

    Swift

    public static func fw_animateNone(
        block: @escaping () -> Void,
        completion: (() -> Void)? = nil
    )
  • 执行block动画完成后执行指定回调

    @param block 动画代码块 @param completion 完成事件

    Declaration

    Swift

    public static func fw_animate(
        block: () -> Void,
        completion: (() -> Void)? = nil
    )

Drag

  • 是否启用拖动,默认NO

    Declaration

    Swift

    public var fw_dragEnabled: Bool { get set }
  • 拖动手势,延迟加载

    Declaration

    Swift

    public var fw_dragGesture: UIPanGestureRecognizer { get }
  • 设置拖动限制区域,默认CGRectZero,无限制

    Declaration

    Swift

    public var fw_dragLimit: CGRect { get set }
  • 设置拖动动作有效区域,默认self.frame

    Declaration

    Swift

    public var fw_dragArea: CGRect { get set }
  • 是否允许横向拖动(X),默认true

    Declaration

    Swift

    public var fw_dragHorizontal: Bool { get set }
  • 是否允许纵向拖动(Y),默认true

    Declaration

    Swift

    public var fw_dragVertical: Bool { get set }
  • 开始拖动回调

    Declaration

    Swift

    public var fw_dragStartedBlock: ((UIView) -> Void)? { get set }
  • 拖动移动回调

    Declaration

    Swift

    public var fw_dragMovedBlock: ((UIView) -> Void)? { get set }
  • 结束拖动回调

    Declaration

    Swift

    public var fw_dragEndedBlock: ((UIView) -> Void)? { get set }

AutoLayout+Shortcut

  • 链式布局对象

    Declaration

    Swift

    public var chain: LayoutChain { get }

UIView+Toolkit

  • 顶部纵坐标,frame.origin.y

    Declaration

    Swift

    public var fw_top: CGFloat { get set }
  • 底部纵坐标,frame.origin.y + frame.size.height

    Declaration

    Swift

    public var fw_bottom: CGFloat { get set }
  • 左边横坐标,frame.origin.x

    Declaration

    Swift

    public var fw_left: CGFloat { get set }
  • 右边横坐标,frame.origin.x + frame.size.width

    Declaration

    Swift

    public var fw_right: CGFloat { get set }
  • 宽度,frame.size.width

    Declaration

    Swift

    public var fw_width: CGFloat { get set }
  • 高度,frame.size.height

    Declaration

    Swift

    public var fw_height: CGFloat { get set }
  • 中心横坐标,center.x

    Declaration

    Swift

    public var fw_centerX: CGFloat { get set }
  • 中心纵坐标,center.y

    Declaration

    Swift

    public var fw_centerY: CGFloat { get set }
  • 起始横坐标,frame.origin.x

    Declaration

    Swift

    public var fw_x: CGFloat { get set }
  • 起始纵坐标,frame.origin.y

    Declaration

    Swift

    public var fw_y: CGFloat { get set }
  • 起始坐标,frame.origin

    Declaration

    Swift

    public var fw_origin: CGPoint { get set }
  • 大小,frame.size

    Declaration

    Swift

    public var fw_size: CGSize { get set }

UIView+UIKit

  • 视图是否可见,视图hidden为NO、alpha>0.01、window存在且size不为0才认为可见

    Declaration

    Swift

    public var fw_isViewVisible: Bool { get }
  • 获取响应的视图控制器

    Declaration

    Swift

    public var fw_viewController: UIViewController? { get }
  • 设置额外热区(点击区域)

    Declaration

    Swift

    public var fw_touchInsets: UIEdgeInsets { get set }
  • 设置视图是否允许检测子视图pointInside,默认false

    Declaration

    Swift

    public var fw_pointInsideSubviews: Bool { get set }
  • 设置视图是否可穿透(子视图响应)

    Declaration

    Swift

    public var fw_isPenetrable: Bool { get set }
  • 设置自动计算适合高度的frame,需实现sizeThatFits:方法

    Declaration

    Swift

    public var fw_fitFrame: CGRect { get set }
  • 计算当前视图适合大小,需实现sizeThatFits:方法

    Declaration

    Swift

    public var fw_fitSize: CGSize { get }
  • 计算指定边界,当前视图适合大小,需实现sizeThatFits:方法

    Declaration

    Swift

    public func fw_fitSize(drawSize: CGSize) -> CGSize
  • 根据tag查找subview,仅从subviews中查找

    Declaration

    Swift

    public func fw_subview(tag: Int) -> UIView?
  • 设置阴影颜色、偏移和半径

    Declaration

    Swift

    public func fw_setShadowColor(_ color: UIColor?, offset: CGSize, radius: CGFloat)
  • 绘制四边边框

    Declaration

    Swift

    public func fw_setBorderColor(_ color: UIColor?, width: CGFloat)
  • 绘制四边边框和四角圆角

    Declaration

    Swift

    public func fw_setBorderColor(_ color: UIColor?, width: CGFloat, cornerRadius: CGFloat)
  • 绘制四角圆角

    Declaration

    Swift

    public func fw_setCornerRadius(_ radius: CGFloat)
  • 绘制单边或多边边框Layer。frame必须存在(添加视图后可调用layoutIfNeeded更新frame)

    Declaration

    Swift

    public func fw_setBorderLayer(_ edge: UIRectEdge, color: UIColor?, width: CGFloat)
  • 绘制单边或多边边框Layer。frame必须存在(添加视图后可调用layoutIfNeeded更新frame)

    Declaration

    Swift

    public func fw_setBorderLayer(_ edge: UIRectEdge, color: UIColor?, width: CGFloat, leftInset: CGFloat, rightInset: CGFloat)
  • 绘制四边虚线边框和四角圆角。frame必须存在(添加视图后可调用layoutIfNeeded更新frame)

    Declaration

    Swift

    public func fw_setDashBorderLayer(color: UIColor?, width: CGFloat, cornerRadius: CGFloat, lineLength: CGFloat, lineSpacing: CGFloat)
  • 绘制单个或多个边框圆角,frame必须存在(添加视图后可调用layoutIfNeeded更新frame)

    Declaration

    Swift

    public func fw_setCornerLayer(_ corner: UIRectCorner, radius: CGFloat)
  • 绘制单个或多个边框圆角和四边边框,frame必须存在(添加视图后可调用layoutIfNeeded更新frame)

    Declaration

    Swift

    public func fw_setCornerLayer(_ corner: UIRectCorner, radius: CGFloat, borderColor: UIColor?, width: CGFloat)
  • 绘制单边或多边边框视图。使用AutoLayout

    Declaration

    Swift

    public func fw_setBorderView(_ edge: UIRectEdge, color: UIColor?, width: CGFloat)
  • 绘制单边或多边边框。使用AutoLayout

    Declaration

    Swift

    public func fw_setBorderView(_ edge: UIRectEdge, color: UIColor?, width: CGFloat, leftInset: CGFloat, rightInset: CGFloat)
  • 开始倒计时,从window移除时自动取消,回调参数为剩余时间

    Declaration

    Swift

    @discardableResult
    public func fw_startCountDown(_ seconds: Int, block: @escaping (Int) -> Void) -> DispatchSourceTimer
  • 设置毛玻璃效果,使用UIVisualEffectView。内容需要添加到UIVisualEffectView.contentView

    Declaration

    Swift

    @discardableResult
    public func fw_setBlurEffect(_ style: UIBlurEffect.Style) -> UIVisualEffectView?
  • 移除所有子视图

    Declaration

    Swift

    public func fw_removeAllSubviews()
  • 递归查找指定子类的第一个子视图(含自身)

    Declaration

    Swift

    public func fw_subview(of clazz: AnyClass) -> UIView?
  • 递归查找指定条件的第一个子视图(含自身)

    Declaration

    Swift

    public func fw_subview(block: @escaping (UIView) -> Bool) -> UIView?
  • 递归查找指定父类的第一个父视图(含自身)

    Declaration

    Swift

    public func fw_superview(of clazz: AnyClass) -> UIView?
  • 递归查找指定条件的第一个父视图(含自身)

    Declaration

    Swift

    public func fw_superview(block: @escaping (UIView) -> Bool) -> UIView?
  • 图片截图

    Declaration

    Swift

    public var fw_snapshotImage: UIImage? { get }
  • Pdf截图

    Declaration

    Swift

    public var fw_snapshotPdf: Data? { get }
  • 将要设置的frame按照view的anchorPoint(.5, .5)处理后再设置,而系统默认按照(0, 0)方式计算

    Declaration

    Swift

    public var fw_frameApplyTransform: CGRect { get set }
  • 自定义视图排序索引,需结合sortSubviews使用,默认0不处理

    Declaration

    Swift

    public var fw_sortIndex: Int { get set }
  • 根据sortIndex排序subviews,需结合sortIndex使用

    Declaration

    Swift

    public func fw_sortSubviews()
  • 是否显示灰色视图,仅支持iOS13+

    Declaration

    Swift

    public var fw_hasGrayView: Bool { get }
  • 显示灰色视图,仅支持iOS13+

    Declaration

    Swift

    public func fw_showGrayView()
  • 隐藏灰色视图,仅支持iOS13+

    Declaration

    Swift

    public func fw_hideGrayView()