UIScrollView
@_spi(FW) extension UIScrollView
滚动视图纵向手势冲突无缝滑动分类,需允许同时识别多个手势
-
外部滚动视图是否位于顶部固定位置,在顶部时不能滚动
Declaration
Swift
public var fw_drawerSuperviewFixed: Bool { get set }
-
外部滚动视图scrollViewDidScroll调用,参数为固定的位置
Declaration
Swift
public func fw_drawerSuperviewDidScroll(_ position: CGFloat)
-
内嵌滚动视图scrollViewDidScroll调用,参数为外部滚动视图
Declaration
Swift
public func fw_drawerSubviewDidScroll(_ superview: UIScrollView)
-
滚动事件代理,需手工设置delegate生效
Declaration
Swift
public var fw_scrollDelegate: ScrollViewDelegate { get set }
-
空界面代理,默认nil。DZNEmptyDataSet
Declaration
Swift
public weak var fw_emptyViewDelegate: EmptyViewDelegate? { get set }
-
刷新空界面
Declaration
Swift
public func fw_reloadEmptyView()
-
当前数据总条数,默认自动调用tableView和collectionView的dataSource,支持自定义覆盖(优先级高,小于0还原)
注意:此处为当前数据源总数,并非当前cell总数,即使tableView未reloadData也会返回新总数
Declaration
Swift
public var fw_totalDataCount: Int { get set }
-
滚动视图自定义浮层,用于显示空界面等,兼容UITableView|UICollectionView
Declaration
Swift
public var fw_overlayView: UIView { get }
-
是否显示自定义浮层
Declaration
Swift
public var fw_hasOverlayView: Bool { get }
-
显示自定义浮层,默认不执行渐变动画,自动添加到滚动视图顶部、表格视图底部
Declaration
Swift
public func fw_showOverlayView(animated: Bool = false)
-
隐藏自定义浮层,自动从滚动视图移除
Declaration
Swift
public func fw_hideOverlayView()
-
自定义刷新插件,未设置时自动从插件池加载
Declaration
Swift
public var fw_refreshPlugin: RefreshPlugin! { get set }
-
是否正在刷新中
Declaration
Swift
public var fw_isRefreshing: Bool { get }
-
是否显示刷新组件
Declaration
Swift
public var fw_shouldRefreshing: Bool { get set }
-
配置下拉刷新句柄
Declaration
Swift
public func fw_setRefreshing(block: @escaping () -> Void, customBlock: ((Any) -> Void)? = nil)
-
配置下拉刷新事件
Declaration
Swift
public func fw_setRefreshing(target: Any, action: Selector, customBlock: ((Any) -> Void)? = nil)
-
开始下拉刷新
Declaration
Swift
public func fw_beginRefreshing()
-
结束下拉刷新
Declaration
Swift
public func fw_endRefreshing()
-
结束下拉刷新并标记是否加载完成,需在reloadData之后调用
Declaration
Swift
public func fw_endRefreshing(finished: Bool)
-
是否正在追加中
Declaration
Swift
public var fw_isLoading: Bool { get }
-
是否显示追加组件
Declaration
Swift
public var fw_shouldLoading: Bool { get set }
-
是否已加载完成,不能继续追加,需在reloadData之后调用
Declaration
Swift
public var fw_loadingFinished: Bool { get set }
-
配置上拉追加句柄
Declaration
Swift
public func fw_setLoading(block: @escaping () -> Void, customBlock: ((Any) -> Void)? = nil)
-
配置上拉追加事件
Declaration
Swift
public func fw_setLoading(target: Any, action: Selector, customBlock: ((Any) -> Void)? = nil)
-
开始上拉追加
Declaration
Swift
public func fw_beginLoading()
-
结束上拉追加
Declaration
Swift
public func fw_endLoading()
-
结束上拉追加并标记是否加载完成,需在reloadData之后调用
Declaration
Swift
public func fw_endLoading(finished: Bool)
-
Undocumented
Declaration
Swift
public func fw_addPullRefresh(block: @escaping () -> Void)
-
Undocumented
Declaration
Swift
public func fw_addPullRefresh(target: Any, action: Selector)
-
Undocumented
Declaration
Swift
public func fw_triggerPullRefresh()
-
Undocumented
Declaration
Swift
public var fw_pullRefreshView: PullRefreshView? { get set }
-
Undocumented
Declaration
Swift
public var fw_showPullRefresh: Bool { get set }
-
Undocumented
Declaration
Swift
public func fw_addInfiniteScroll(block: @escaping () -> Void)
-
Undocumented
Declaration
Swift
public func fw_addInfiniteScroll(target: Any, action: Selector)
-
Undocumented
Declaration
Swift
public func fw_triggerInfiniteScroll()
-
Undocumented
Declaration
Swift
public var fw_infiniteScrollView: InfiniteScrollView? { get set }
-
Undocumented
Declaration
Swift
public var fw_showInfiniteScroll: Bool { get set }
-
Undocumented
Declaration
Swift
public var fw_infiniteScrollFinished: Bool { get set }
-
判断当前scrollView内容是否足够滚动
Declaration
Swift
public var fw_canScroll: Bool { get }
-
判断当前的scrollView内容是否足够水平滚动
Declaration
Swift
public var fw_canScrollHorizontal: Bool { get }
-
判断当前的scrollView内容是否足够纵向滚动
Declaration
Swift
public var fw_canScrollVertical: Bool { get }
-
当前scrollView滚动到指定边
Declaration
Swift
public func fw_scroll(to edge: UIRectEdge, animated: Bool = true)
-
是否已滚动到指定边
Declaration
Swift
public func fw_isScroll(to edge: UIRectEdge) -> Bool
-
获取当前的scrollView滚动到指定边时的contentOffset(包含contentInset)
Declaration
Swift
public func fw_contentOffset(of edge: UIRectEdge) -> CGPoint
-
总页数,自动识别翻页方向
Declaration
Swift
public var fw_totalPage: Int { get }
-
当前页数,不支持动画,自动识别翻页方向
Declaration
Swift
public var fw_currentPage: Int { get set }
-
设置当前页数,支持动画,自动识别翻页方向
Declaration
Swift
public func fw_setCurrentPage(_ page: Int, animated: Bool = true)
-
是否是最后一页,自动识别翻页方向
Declaration
Swift
public var fw_isLastPage: Bool { get }
-
快捷设置contentOffset.x
Declaration
Swift
public var fw_contentOffsetX: CGFloat { get set }
-
快捷设置contentOffset.y
Declaration
Swift
public var fw_contentOffsetY: CGFloat { get set }
-
滚动视图完整图片截图
Declaration
Swift
public var fw_contentSnapshot: UIImage? { get }
-
内容视图,子视图需添加到本视图,布局约束完整时可自动滚动
当启用等比例缩放布局、且scrollView和contentView都固定高度时, 为防止浮点数误差导致scrollView拖拽时出现纵向可滚动的兼容问题,解决方案如下:
- 设置scrollView属性isDirectionalLockEnabled为true
- 设置布局高度为固定ceil高度,如:FW.fixed(ceil(FW.relative(40)))
Declaration
Swift
public var fw_contentView: UIView { get }
-
设置自动布局视图悬停到指定父视图固定位置,在scrollViewDidScroll:中调用即可
@param view 需要悬停的视图,须占满fromSuperview @param fromSuperview 起始的父视图,须是scrollView的子视图 @param toSuperview 悬停的目标视图,须是scrollView的父级视图,一般控制器self.view @param toPosition 需要悬停的目标位置,相对于toSuperview的originY位置 @return 相对于悬浮位置的距离,可用来设置导航栏透明度等
Declaration
Swift
@discardableResult public func fw_hoverView(_ view: UIView, fromSuperview: UIView, toSuperview: UIView, toPosition: CGFloat) -> CGFloat
-
是否开始识别pan手势
Declaration
Swift
public var fw_shouldBegin: ((UIGestureRecognizer) -> Bool)? { get set }
-
是否允许同时识别多个手势
Declaration
Swift
public var fw_shouldRecognizeSimultaneously: ((UIGestureRecognizer, UIGestureRecognizer) -> Bool)? { get set }
-
是否另一个手势识别失败后,才能识别pan手势
Declaration
Swift
public var fw_shouldRequireFailure: ((UIGestureRecognizer, UIGestureRecognizer) -> Bool)? { get set }
-
是否pan手势识别失败后,才能识别另一个手势
Declaration
Swift
public var fw_shouldBeRequiredToFail: ((UIGestureRecognizer, UIGestureRecognizer) -> Bool)? { get set }