代码之家  ›  专栏  ›  技术社区  ›  Jaqueline

github中的swipenavigationcontroller框架如何实现

  •  0
  • Jaqueline  · 技术社区  · 7 年前

    因此,我今天的问题是,如何添加一个类似于Snapchat的视图,在该视图中,您可以使用手势滑动到其他视图:左、上、下、右。我想用这个 framework 但我不知道如何真正实现它,因为他们没有提供一个样本项目。我的应用程序的布局是我有一个注册/登录视图控制器,从那里我希望它转到另一个视图(蓝色),这是我希望具有上述不同手势的视图。`导入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
       }
    }'
    

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   Sean Kladek    7 年前

    这个 SwipeNavigationController 是一个 UIViewController 可以被推到一个堆栈上,也可以像其他任何堆栈一样显示 uiview控制器 .无论你在哪里创作和展示 BlueViewController ,而是应该创建 开关控制器 作为包含 蓝视控制器 以及所有的方向视图控制器。 蓝视控制器 所有其他方向都不应该知道 SwipeViewController 是的。 蓝视控制器 其他方向都不应该互相了解。这个 开关控制器 是顶层视图控制器,与方向关联的所有视图控制器都是其子视图控制器。我假设你的流程中有一个导航控制器,可以推动 开关控制器 是的。在这种情况下,无论你想用什么方法触发推送,你都会有这样的结果。我叫它 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)
    }
    

    然后从 viewDidLoad 在里面 蓝视控制器 除了设置背景色的线。这将创建 开关控制器 使用所有的方向视图控制器,保持 蓝视控制器 作为中心,然后将其推到视图控制器堆栈上。如果你没有 UINavigationController 在swipenavigationcontroller之前显示的视图控制器中,您可以通过将最后一行替换为以下内容以进行模式显示:

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