GitHub 中的 SwipeNavigationController 框架如何实现

SwipeNavigationController framework from GitHub how to implement

所以我今天的问题是如何添加类似于 Snapchat 的视图,您可以在其中使用手势滑动到其他视图:左、上、下、右。我正在尝试使用这个 framework 但我不确定如何真正实现它,因为他们没有提供示例项目。我的应用程序的布局是我有一个 signup/login 视图控制器,我希望它从那里转到另一个视图(蓝色),这就是我想要具有上述不同手势的视图。 `导入 UIKit 导入 SwipeNavigationController

class BlueViewController: UIViewController {


let orangeVC = OrangeView()

let pinkVC = PinkView()
let greenVC = GreenView()
let purpleVC = PurpleView()



override func viewDidLoad() {



    let swipeNavigationController = SwipeNavigationController(centerViewController: self)
    swipeNavigationController.topViewController = self.pinkVC
    swipeNavigationController.bottomViewController = self.purpleVC
    swipeNavigationController.leftViewController = self.greenVC
    swipeNavigationController.rightViewController = self.orangeVC





    view.backgroundColor = UIColor.facebookBlueColor
   }
}'

我也没有在这个项目中使用故事板。

SwipeNavigationController 是一个 UIViewController,可以像其他任何 UIViewController 一样被推入堆栈或呈现。无论您在何处创建和呈现 BlueViewController,您都应该创建 SwipeNavigationController 作为包含 BlueViewController 和所有方向视图控制器的顶级对象。 BlueViewController 和所有其他方向应该不知道关于 SwipeViewController 的任何信息。 BlueViewController 和所有其他方向不应该相互了解。 SwipeNavigationController 是顶级视图控制器,所有与方向关联的视图控制器都是它的子视图控制器。我假设您在流程中的某处有一个导航控制器来推动 SwipeNavigationController。在那种情况下,您将以任何您想要触发推送的方法得到类似的东西。我将其命名为 nextTapped,但我相信它在您的代码中会有所不同:

func nextTapped() {
    let swipeNavigationController = SwipeNavigationController(centerViewController: BlueViewController())
    swipeNavigationController.topViewController = PinkViewController()
    swipeNavigationController.bottomViewController = PurpleViewController()
    swipeNavigationController.leftViewController = GreenViewController()
    swipeNavigationController.rightViewController = OrangeViewController()

    navigationController?.pushViewController(swipeNavigationController, animated: true)
}

然后删除 BlueViewControllerviewDidLoad 的所有内容,除了设置背景颜色的行。这将创建带有所有定向视图控制器的 SwipeNavigationController,将 BlueViewController 保持为中心,然后将其推送到视图控制器堆栈。如果在 SwipeNavigationController 之前显示的视图控制器中没有 UINavigationController,则可以通过将最后一行替换为以下内容来以模态方式呈现它:

present(swipeNavigationController, animated: true, completion: nil)