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)
}
然后删除 BlueViewController
中 viewDidLoad
的所有内容,除了设置背景颜色的行。这将创建带有所有定向视图控制器的 SwipeNavigationController
,将 BlueViewController
保持为中心,然后将其推送到视图控制器堆栈。如果在 SwipeNavigationController 之前显示的视图控制器中没有 UINavigationController
,则可以通过将最后一行替换为以下内容来以模态方式呈现它:
present(swipeNavigationController, animated: true, completion: nil)
所以我今天的问题是如何添加类似于 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)
}
然后删除 BlueViewController
中 viewDidLoad
的所有内容,除了设置背景颜色的行。这将创建带有所有定向视图控制器的 SwipeNavigationController
,将 BlueViewController
保持为中心,然后将其推送到视图控制器堆栈。如果在 SwipeNavigationController 之前显示的视图控制器中没有 UINavigationController
,则可以通过将最后一行替换为以下内容来以模态方式呈现它:
present(swipeNavigationController, animated: true, completion: nil)