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)
-
显示右上角提醒灯,上右偏移指定距离(正外负内)
Declaration
Swift
public func fw_showBadgeView(_ badgeView: UIView & BadgeViewProtocol, badgeValue: String? = nil)
-
隐藏提醒灯
Declaration
Swift
public func fw_hideBadgeView()
-
抽屉拖拽视图,绑定抽屉拖拽效果后才存在
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
-
初始化可重用视图,默认调用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()
-
显示骨架屏,指定布局代理
Declaration
Swift
public func fw_showSkeleton(delegate: SkeletonViewDelegate?)
-
显示骨架屏,指定布局句柄
Declaration
Swift
public func fw_showSkeleton(block: ((SkeletonLayout) -> Void)?)
-
显示骨架屏,默认布局代理为self
Declaration
Swift
public func fw_showSkeleton()
-
隐藏骨架屏
Declaration
Swift
public func fw_hideSkeleton()
-
是否正在显示骨架屏
Declaration
Swift
public var fw_hasSkeleton: Bool { get }
-
默认实现绑定点击事件方法,返回绑定结果,子类可重写,勿直接调用
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?
-
设置并尝试自动绑定点击事件统计
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
-
设置并尝试自动绑定曝光事件统计。如果对象发生变化(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()
-
显示错误警告框
Declaration
Swift
public func fw_showAlert( error: Error?, cancel: AttributedStringParameter? = nil, cancelBlock: (() -> Void)? = nil )
Parameters
error
错误对象
cancel
取消按钮标题,默认关闭
cancelBlock
取消按钮事件
-
显示警告框(简单版)
Declaration
Swift
public func fw_showAlert( title: AttributedStringParameter?, message: AttributedStringParameter?, style: AlertStyle = .default, cancel: AttributedStringParameter? = nil, cancelBlock: (() -> Void)? = nil )
Parameters
title
警告框标题
message
警告框消息
style
警告框样式
cancel
取消按钮标题,默认关闭
cancelBlock
取消按钮事件
-
显示警告框(详细版)
Declaration
Swift
public func fw_showAlert( title: AttributedStringParameter?, message: AttributedStringParameter?, style: AlertStyle = .default, cancel: AttributedStringParameter?, actions: [AttributedStringParameter]?, actionBlock: ((Int) -> Void)?, cancelBlock: (() -> Void)? = nil )
Parameters
title
警告框标题
message
警告框消息
style
警告框样式
cancel
取消按钮标题,默认单按钮关闭,多按钮取消
actions
动作按钮标题列表
actionBlock
动作按钮点击事件,参数为索引index
cancelBlock
取消按钮事件
-
显示确认框(简单版)
Declaration
Swift
public func fw_showConfirm( title: AttributedStringParameter?, message: AttributedStringParameter?, confirmBlock: (() -> Void)?, cancelBlock: (() -> Void)? = nil )
Parameters
title
确认框标题
message
确认框消息
confirmBlock
确认按钮事件
cancelBlock
取消按钮事件
-
显示确认框(详细版)
Declaration
Swift
public func fw_showConfirm( title: AttributedStringParameter?, message: AttributedStringParameter?, cancel: AttributedStringParameter?, confirm: AttributedStringParameter?, confirmBlock: (() -> Void)?, cancelBlock: (() -> Void)? = nil )
Parameters
title
确认框标题
message
确认框消息
cancel
取消按钮文字,默认取消
confirm
确认按钮文字,默认确定
confirmBlock
确认按钮事件
cancelBlock
取消按钮事件
-
显示输入框(简单版)
Declaration
Swift
public func fw_showPrompt( title: AttributedStringParameter?, message: AttributedStringParameter?, cancel: AttributedStringParameter?, confirm: AttributedStringParameter?, promptBlock: ((UITextField) -> Void)? = nil, confirmBlock: ((String) -> Void)?, cancelBlock: (() -> Void)? = nil )
Parameters
title
输入框标题
message
输入框消息
cancel
取消按钮文字,默认取消
confirm
确认按钮文字,默认确定
promptBlock
输入框初始化事件,参数为输入框
confirmBlock
确认按钮事件,参数为输入值
cancelBlock
取消按钮事件
-
显示输入框(详细版)
Declaration
Swift
public func fw_showPrompt( title: AttributedStringParameter?, message: AttributedStringParameter?, cancel: AttributedStringParameter?, confirm: AttributedStringParameter?, promptCount: Int, promptBlock: ((UITextField, Int) -> Void)?, confirmBlock: (([String]) -> Void)?, cancelBlock: (() -> Void)? = nil )
Parameters
title
输入框标题
message
输入框消息
cancel
取消按钮文字,默认取消
confirm
确认按钮文字,默认确定
promptCount
输入框数量
promptBlock
输入框初始化事件,参数为输入框和索引index
confirmBlock
确认按钮事件,参数为输入值数组
cancelBlock
取消按钮事件
-
fw_showAlert(title:
message: style: cancel: actions: promptCount: promptBlock: actionBlock: cancelBlock: customBlock: ) 显示弹出框(完整版)
Declaration
Swift
public func fw_showAlert( title: AttributedStringParameter?, message: AttributedStringParameter?, style: AlertStyle = .default, cancel: AttributedStringParameter?, actions: [AttributedStringParameter]?, promptCount: Int = 0, promptBlock: ((UITextField, Int) -> Void)? = nil, actionBlock: (([String], Int) -> Void)?, cancelBlock: (() -> Void)?, customBlock: ((Any) -> Void)? )
Parameters
title
弹出框标题
message
弹出框消息
style
弹出框样式
cancel
取消按钮标题,默认Alert单按钮关闭,Alert多按钮或Sheet取消
actions
动作按钮标题列表
promptCount
输入框数量,默认0
promptBlock
输入框初始化事件,参数为输入框和索引index,默认nil
actionBlock
动作按钮点击事件,参数为输入值数组和索引index
cancelBlock
取消按钮事件
customBlock
自定义弹出框事件
-
显示操作表(无动作)
Declaration
Swift
public func fw_showSheet( title: AttributedStringParameter?, message: AttributedStringParameter?, cancel: AttributedStringParameter?, cancelBlock: (() -> Void)? = nil )
Parameters
title
操作表标题
message
操作表消息
cancel
取消按钮标题,默认取消
cancelBlock
取消按钮事件
-
显示操作表(简单版)
Declaration
Swift
public func fw_showSheet( title: AttributedStringParameter?, message: AttributedStringParameter?, actions: [AttributedStringParameter]?, actionBlock: ((Int) -> Void)?, cancelBlock: (() -> Void)? = nil )
Parameters
title
操作表标题
message
操作表消息
actions
动作按钮标题列表
actionBlock
动作按钮点击事件,参数为索引index
cancelBlock
取消按钮事件
-
显示操作表(详细版)
Declaration
Swift
public func fw_showSheet( title: AttributedStringParameter?, message: AttributedStringParameter?, cancel: AttributedStringParameter?, actions: [AttributedStringParameter]?, currentIndex: Int = -1, actionBlock: ((Int) -> Void)?, cancelBlock: (() -> Void)? = nil )
Parameters
title
操作表标题
message
操作表消息
cancel
取消按钮标题,默认取消
actions
动作按钮标题列表
currentIndex
当前选中动作索引,默认-1
actionBlock
动作按钮点击事件,参数为索引index
cancelBlock
取消按钮事件
-
显示弹出框(完整版)
Declaration
Swift
public func fw_showSheet( title: AttributedStringParameter?, message: AttributedStringParameter?, cancel: AttributedStringParameter?, actions: [AttributedStringParameter]?, currentIndex: Int = -1, actionBlock: ((Int) -> Void)?, cancelBlock: (() -> Void)?, customBlock: ((Any) -> Void)? )
Parameters
title
操作表标题
message
操作表消息
cancel
取消按钮标题,默认Alert单按钮关闭,Alert多按钮或Sheet取消
actions
动作按钮标题列表
currentIndex
当前选中动作索引,默认-1
actionBlock
动作按钮点击事件,参数为输入值数组和索引index
cancelBlock
取消按钮事件
customBlock
自定义弹出框事件
-
手工隐藏弹出框,完成后回调
Declaration
Swift
public func fw_hideAlert( animated: Bool, completion: (() -> Void)? = nil )
Parameters
animated
是否执行动画
completion
完成回调
-
判断是否正在显示弹出框
Declaration
Swift
public var fw_isShowingAlert: Bool { get }
-
自定义空界面插件,未设置时自动从插件池加载
Declaration
Swift
public var fw_emptyPlugin: EmptyPlugin! { get set }
-
设置空界面外间距,默认zero
Declaration
Swift
public var fw_emptyInsets: UIEdgeInsets { get set }
-
获取正在显示的空界面视图
Declaration
Swift
public var fw_showingEmptyView: UIView? { get }
-
是否显示空界面
Declaration
Swift
public var fw_hasEmptyView: Bool { get }
-
显示空界面加载视图
Declaration
Swift
public func fw_showEmptyLoading()
-
显示错误空界面
Declaration
Swift
public func fw_showEmptyView(error: Error?, action: AttributedStringParameter? = nil, block: ((Any) -> Void)? = nil)
-
显示空界面,指定文本、详细文本、图片和动作按钮
Declaration
Swift
public func fw_showEmptyView(text: AttributedStringParameter? = nil, detail: AttributedStringParameter? = nil, image: UIImage? = nil, action: AttributedStringParameter? = nil, block: ((Any) -> Void)? = nil)
-
显示空界面,指定文本、详细文本、图片、是否显示加载视图和动作按钮
Declaration
Swift
public func fw_showEmptyView(text: AttributedStringParameter?, detail: AttributedStringParameter?, image: UIImage?, loading: Bool, action: AttributedStringParameter?, block: ((Any) -> Void)?, customBlock: ((Any) -> Void)? = nil)
-
显示空界面,指定文本、详细文本、图片、是否显示加载视图和最多两个动作按钮
Declaration
Swift
public func fw_showEmptyView(text: AttributedStringParameter?, detail: AttributedStringParameter?, image: UIImage?, loading: Bool, actions: [AttributedStringParameter]?, block: ((Int, Any) -> Void)?, customBlock: ((Any) -> Void)? = nil)
-
隐藏空界面
Declaration
Swift
public func fw_hideEmptyView()
-
自定义图片插件,未设置时自动从插件池加载
Declaration
Swift
public var fw_imagePlugin: ImagePlugin! { get set }
-
当前正在加载的网络图片URL
Declaration
Swift
public var fw_imageURL: URL? { get }
-
加载网络图片内部方法,支持占位、选项、图片句柄、回调和进度,优先加载插件,默认使用框架网络库
Declaration
Swift
public func fw_setImage(url: URLParameter?, placeholderImage: UIImage?, options: WebImageOptions, context: [ImageCoderOptions : Any]?, setImageBlock: ((UIImage?) -> Void)?, completion: ((UIImage?, Error?) -> Void)?, progress: ((Double) -> Void)?)
-
取消加载网络图片请求
Declaration
Swift
public func fw_cancelImageRequest()
-
加载指定URL的本地缓存图片
Declaration
Swift
public func fw_loadImageCache(url: URLParameter?) -> UIImage?
-
是否隐藏全局图片加载指示器,默认false,仅全局图片指示器开启时生效
Declaration
Swift
public var fw_hidesImageIndicator: Bool { get set }
-
从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为是否取消
-
显示图片预览(简单版)
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
-
fw_showImagePreview(imageURLs:
imageInfos: currentIndex: sourceView: placeholderImage: renderBlock: customBlock: ) 显示图片预览(详细版)
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
-
自定义吐司插件,未设置时自动从插件池加载
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 }
-
自定义视图插件,未设置时自动从插件池加载
Declaration
Swift
public var fw_viewPlugin: ViewPlugin! { get set }
-
统一进度视图工厂方法
Declaration
Swift
public func fw_progressView(style: ProgressViewStyle) -> UIView & ProgressViewPlugin
-
统一指示器视图工厂方法
Declaration
Swift
public func fw_indicatorView(style: IndicatorViewStyle) -> UIView & IndicatorViewPlugin
-
统一进度视图工厂方法
Declaration
Swift
public static func fw_progressView(style: ProgressViewStyle) -> UIView & ProgressViewPlugin
-
统一指示器视图工厂方法
Declaration
Swift
public static func fw_indicatorView(style: IndicatorViewStyle) -> UIView & IndicatorViewPlugin
-
是否自动等比例缩放方式设置transform,默认NO
Declaration
Swift
public var fw_autoScaleTransform: Bool { get set }
-
是否启用自动布局适配RTL,启用后自动将Left|Right转换为Leading|Trailing,默认NO
如果项目兼容阿拉伯语等,需要启用RTL从右向左布局,开启此开关即可,无需修改布局代码 手工切换视图左右布局方法:[UIView appearance].semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
Declaration
Swift
public static var fw_autoLayoutRTL: Bool
-
自定义全局自动等比例缩放适配句柄,默认nil
启用全局等比例缩放后,所有offset值都会调用该句柄,需注意可能产生的影响。 启用后注意事项如下:
- 屏幕宽度约束不能使用screenWidth约束,需要使用375设计标准
- 尽量不使用screenWidth固定屏幕宽度方式布局,推荐相对于父视图布局
- 只会对offset值生效,其他属性不受影响
- 某个视图如需固定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()
-
设置水平方向抗压缩优先级
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 }
-
设置视图是否收缩,默认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()
-
父视图居中,可指定偏移距离
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
布局约束
-
与父视图四条边属性相同,可指定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
布局约束
-
父视图安全区域居中,可指定偏移距离。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
布局约束
-
设置宽高尺寸
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
布局约束
-
与指定视图属性偏移指定距离,指定关系
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
布局约束
-
获取添加的与父视图属性的约束,指定关系
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()
-
链式布局对象
Declaration
Swift
public var fw_layoutChain: LayoutChain { get }
-
链式布局闭包
Declaration
Swift
public func fw_layoutMaker(_ closure: (_ make: LayoutChain) -> Void)
-
自动布局调试开关,默认调试打开,正式关闭
Declaration
Swift
public static var fw_autoLayoutDebug: Bool { get set }
-
布局调试Key
Declaration
Swift
public var fw_layoutKey: String? { get set }
-
获取当前视图添加的第一个点击手势,默认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()
-
计算动态布局视图指定宽度时的高度。使用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
尺寸
-
绘制形状路径,需要在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
-
添加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 )
-
是否启用拖动,默认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 }
-
链式布局对象
Declaration
Swift
public var chain: LayoutChain { get }
-
顶部纵坐标,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 }
-
视图是否可见,视图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()