好的,我已经查看了https://developer.apple.com/videos/play/wwdc2013/218/和SO问题同样尝试使用标签栏控制器及其viewcontrollers进行自定义转换,但是在弄清楚这里的主要步骤之后我遇到了混乱。
我需要知道如何(意味着示例代码真的很有帮助)来调用自定义UIView.transition
或在option
中拥有自定义UIView.transition
。我需要使用它来在我的标签栏控制器中的标签之间进行滑动/模态模拟转换。
我能够实现转换的唯一方法是使用以下函数(这使它们解散):
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if selectedViewController == nil || viewController == selectedViewController {
return false
}
let fromView = selectedViewController!.view
let toView = viewController.view
UIView.transition(from: fromView!, to: toView!, duration: 0.3, options: [.transitionCrossDissolve], completion: nil)
return true
}
在这里手动调用它,我以编程方式为我的标签控制器设置*selectedIndex*
:
//SWITCHES BUTTON -------------------------------------------
func switchTab(index: Int)
{
//transition
self.tabBarController(self, shouldSelect: (viewControllers?[index])!)
我已阅读并尝试制作自定义类UIViewControllerAnimatedTransitioning
,但不知道这在程序上是如何适合的 -
我尝试将标签栏控制器以及toView
和fromView
传递到自定义类中,导致没有任何事情发生/动画化。这就是为什么Ive在这里使用UIView.transition。
如何制作自定义UIView.transition
?我能在这做什么?
答案 0 :(得分:0)
您应该符合UITabBarControllerDelegate 并创建一个customTransition类并按如下方式传递它:
func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
let animator = TabAnimationManager()
return animator
}
Class TabAnimationManager应该是UIPercentDrivenInteractiveTransition的子类,并且符合UIViewControllerAnimatedTransitioning协议。您可以在该课程中添加自定义动画。