【问题标题】:How to change animation direction on pushViewController on leftBarButtonItem?如何在 leftBarButtonItem 上的 pushViewController 上更改动画方向?
【发布时间】:2019-05-12 11:11:30
【问题描述】:

我已将 leftBarButtonItem 添加到 NavigationBar(与 NavigationController 一起)。 leftBarButtonItem 位于 ViewController 的顶部。

当我使用 pushViewController func 进入下一个 ViewController 时,动画是从右到左的,与按下导航栏右侧的按钮时相同。

如何将动画方向更改为从左到右,例如在 Tinder 中按下导航栏上的左键时?

代码如下:

let profileButton = UIBarButtonItem(image: #imageLiteral(resourceName: "profile"), style: .plain, target: self, action: #selector(self.showProfile))
    self.navigationItem.leftBarButtonItem = profileButton

@objc func showProfile() {
    let profileViewController = storyboard?.instantiateViewController(withIdentifier: "profile") as! ProfileViewController
    self.navigationController?.pushViewController(profileViewController, animated: true)
}

【问题讨论】:

    标签: swift navigation uinavigationbar uibarbuttonitem swift4.2


    【解决方案1】:

    要在推送到另一个 viewController 时进行动画处理,您可以使用 CATransition

    @objc func showProfile() {
        let profileViewController = storyboard?.instantiateViewController(withIdentifier: "profile") as! ProfileViewController
        let transition = CATransition()
        transition.duration = 0.5
        transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
        transition.type = CATransitionType.push
        transition.subtype = CATransitionSubtype.fromLeft       
        navigationController?.view.layer.add(transition, forKey: kCATransition)
        self.navigationController?.pushViewController(profileViewController, animated: true)
    }
    

    您可以将动画方向更改为fromRight, fromTopfromBottom

    【讨论】:

      【解决方案2】:

      你不能改变 UINavigationController 的方向。 为了实现这一点,您必须自己创建它。 如果你想实现一个菜单,你可以查看SideMenu

      【讨论】:

      • Sidemenu 提示赞赏!如果我要手动创建过渡,我将如何实现所需的动画?
      • 假设你想要一个rootViewController,右边有一个,左边有另一个。总共 3 个 ViewController。我会使用UIScrollView 并将这三个 ViewController 添加到其中,调整它们的框架,使它们一个接一个地放置(y = 0,x = {screenWidth * positionIndex},将滚动视图的paging 属性设置为true,最后将内容大小设置为 viewControllers 的大小。
      • 也许这个教程对你来说是一个好的开始:medium.com/@anitaa_1990/…
      • 找到另一个可能有帮助的 git repo。 github.com/fortmarek/SwipeViewController
      • 使用 UIPageViewController developer.apple.com/documentation/uikit/uipageviewcontroller 会采用不同的方法
      猜你喜欢
      • 1970-01-01
      • 2012-10-11
      • 2020-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多