ios – 了解UIViewController转换的值

前端之家收集整理的这篇文章主要介绍了ios – 了解UIViewController转换的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试学习一些新的iOS编程模式.我已经阅读了一些关于在iOS 7中添加的UIViewController转换API的内容.它们看起来很酷但是对于看起来更简单的任务也感觉非常沉重.

考虑这个用例:
我有一个管理“幻灯片”的自定义容器视图控制器.它包含一系列幻灯片视图控制器,用户可以通过点击按钮向前和向后移动它们.

我可以按如下方式实现此过渡:

private func transitionToViewController(viewController: UIViewController,direction: TransitionDirection = .Forward,animated: Bool = true) {
    currentViewController.willMove(toParentViewController: nil)
    addChildViewController(viewController)
    // ... set up frames,other animation prep ...
    contentContainerView.addSubview(comingView)
    UIView.animate(duration: 0.5,animations: { 
        // do the animations
    }) { (finished) in
        leavingView.removeFromSuperview()
        self.currentViewController.removeFromParentViewController()
        viewController.didMove(toParentViewController: self)
        // final clean up
    } 
}

新的转换API将如何改善这一点?据我所知,如果您正在滚动自己的容器视图控制器,这些API使用起来会更加复杂(参见custom-container view controller transitions.

转换API中的值主要用于交互式转换吗?

谢谢你的澄清

解决方法

我认为新的转换API(UIViewControllerTransitioningDelegate和朋友)只是控制器之间视图转换概括的最后一步.

在UIKit的第一个版本中,我们必须使用hack the system transition code才能获得任何自定义转换.多年以后,我们获得了控制器控制功能,可以将视图控制器作为一等公民和create our own interactive transitions进行管理.最后一步是为您可以实现的任何转换提供功能齐全的通用系统API – 这是新的转换API.

新的API可以将转换提取到独立的类中.反过来,这使得最终可以从GitHub下载转换库并将其作为简单的转换委托插入到现有代码中.无需从某个特定的超类派生您的视图控制器,无需使用第三方控制器容器,无需向UIKit类添加扩展.现在转型终于成为UIKit的一流公民.

猜你在找的iOS相关文章