- 支持拖动、自动吸附、吸附后部分隐藏
- 支持自定义可吸附的 edges
- 支持自定义水平和纵向吸附的优先级
- 支持自定义开始吸附的最小距离
- 支持自定义悬浮视图可到达区域
- 支持自定义添加到
UIView
子类或者本库提供的keyWindow
上
在Podfile
添加:
pod 'FloatingViewProtocol'
遵守FloatingViewProtocol
协议
实现component
属性
调用addFloatingPanGestureRecognir()
方法添加拖动手势
此时悬浮视图已经支持拖动和自动吸附。水平默认超过屏幕中点,纵向默认距离屏幕边缘小于 100 时即可吸附。
在简单运用的基础上,可在悬浮视图中重写各种属性:
classFloatingView:UIView,FloatingViewProtocol{ /// 是否可以拖拽varisDraggable=true /// 是否自动吸附varisAutoAdsorb=true /// 可自动吸附的方向varadsorbableEdges:FloatingAdsorbableEdges=[.left,.right] /// 水平方向吸附和垂直方向吸附的优先级varadsorbPriority:FloatingAdsorbPriority=.equal /// 吸附动画时间varadsorbAnimationDuration:TimeInterval=0.35 /// 停止拖拽后,最小距离 floatingEdge 边缘多少可以自动吸附varminAdsorbableSpacings:UIEdgeInsets=UIEdgeInsets(top:100, left:50, bottom:100, right:50) /// 吸附在边缘后是否自动地部分隐藏varisAutoPartiallyHide=true /// 隐藏的百分比varpartiallyHidePercent:CGFloat=0.3 /// 部分隐藏动画时长varpartiallyHideAnimationDuration:TimeInterval=0.35 /// 悬浮视图可到达区域,距离父视图各边的缩进varfloatingEdgeInsets:UIEdgeInsets=UIEdgeInsets(top:10, left:10, bottom:10, right:10)}
此外当悬浮视图已经添加到父视图后,还可以对悬浮视图对象的属性直接赋值修改以上特性。
悬浮视图可以直接添加到普通的UIView
子类中,也可以添加到新建的keyWindow
中。
添加到普通UIView
子类:
navigationController?.view.addSubview(floatingView)
添加到新建的keyWindow
:
floatingView.makeFloatingWindowKeyAndVisible()
对于直接添加到keyWindow
中的悬浮视图,可以动态更改keyWindow
根视图的状态栏样式:
floatingView.updateFloatingWindowStatusBarStyle(to: default)
在悬浮视图开始拖动、结束拖动、拖动中和完成部分隐藏动画时,分别有以下代理方法:
func floatingViewDidBeginDragging(panGestureRecognizer:UIPanGestureRecognizer)func floatingViewDidEndDragging(panGestureRecognizer:UIPanGestureRecognizer)func floatingViewDidMove(panGestureRecognizer:UIPanGestureRecognizer)func floatingViewFinishedPartiallyHideAnimation()