如何在 leftBarButtonItem 上的 pushViewController 上更改动画方向?
Posted
技术标签:
【中文标题】如何在 leftBarButtonItem 上的 pushViewController 上更改动画方向?【英文标题】:How to change animation direction on pushViewController on leftBarButtonItem? 【发布时间】: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)
【问题讨论】:
【参考方案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 会采用不同的方法以上是关于如何在 leftBarButtonItem 上的 pushViewController 上更改动画方向?的主要内容,如果未能解决你的问题,请参考以下文章
设置leftBarButtonItem后如何在UINavigationController中启用后退/左滑手势?