BJDraggable 1.4

BJDraggable 1.4

维护者:Badhan Ganesh.



  • 作者:
  • BadhanGanesh

BJDraggable

一个简单的协议(无需子类化,无需自己实现方法和属性。只需将 BJDraggable 文件放入您的项目中即可)利用强大的 UIKitDynamics API,使任何 UIView 只通过一个方法调用的方式在边界视图中可拖动,边界视图作为碰撞体。

BJDraggable Demo

安装

使用 pod 'BJDraggable'

将源文件夹中的 BJDraggable.swift 文件(位于仓库的源文件夹中)拖放到您的 Xcode 项目中。

使用方法

  • 只需在您的视图中调用 addDraggability 方法,并传递一个边界视图,这样就完成了
override func viewDidLoad() {
    super.viewDidLoad()
    self.loginView.addDraggability(withinView: self.view)
    self.omegaView.addDraggability(withinView: self.omegaContainerView)
    self.omegaContainerView.addDraggability(withinView: self.view)
    self.signupButton.addDraggability(withinView: self.view)
}
  • 您也可以通过传递一个 UIEdgeInsets 参数为边界视图添加边距
self.loginView.addDraggability(withinView: self.view, withMargin: UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10))
  • 要禁用拖动能力,只需调用 removeDraggability 方法
@IBAction func removeDraggabilityButtonTouched(_ sender: UIButton) {
    self.loginView.removeDraggability()
    self.omegaView.removeDraggability()
    self.omegaContainerView.removeDraggability()
    self.signupButton.removeDraggability()
}

注意:如果您认为与 UIViewControllerUIView 完成,在 deinit 中调用 removeDraggability()。这将清理使用过的内存和其他变量。

可选使用

  • 如果您想在移除可拖动性后(如上面的示例 GIF 所示)使视图回到其原始位置(尊重其自动布局约束),请将 shouldResetViewPositionAfterRemovingDraggability 属性设置为 true。默认值是 false

  • 为了在视觉上突出显示拖动将发生的边界线,您可以设置 isDraggableDebugModeEnabled 属性为 true。有效边界(应用了边距后)将以红色突出显示。在下一个或后续提交中指定自己的颜色。

限制

  • 目前,由于实现方式的特点,可拖动性与圆角视图的组合不佳,因为用于模拟边界条件的 invisible walls 以类似 leftrighttopbottom 的方式分别绘制在父视图周围。
  • 可以通过消除使用想象中的特殊视图,改用路径的实际边界来克服这一点。但是,这种方法有一个小小的缺点,那就是您正在拖动的视图不会与墙壁滑动,而是会粘附在墙壁上。

许可证

此代码分发受 MIT 许可证的条款和条件约束。