Swift:自定义UIView.transition的问题?

时间:2017-08-29 00:40:28

标签: ios swift swift3 uiview uiviewanimationtransition

好的,我已经查看了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,但不知道这在程序上是如何适合的 -

我尝试将标签栏控制器以及toViewfromView传递到自定义类中,导致没有任何事情发生/动画化。这就是为什么Ive在这里使用UIView.transition。

如何制作自定义UIView.transition?我能在这做什么?

1 个答案:

答案 0 :(得分:0)

您应该符合UITabBarControllerDelegate 并创建一个customTransition类并按如下方式传递它:

 func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        let animator = TabAnimationManager()
        return    animator

    }

Class TabAnimationManager应该是UIPercentDrivenInteractiveTransition的子类,并且符合UIViewControllerAnimatedTransitioning协议。您可以在该课程中添加自定义动画。