D.C*_*.C. 5 uiviewcontroller uiviewanimationtransition ios swift
我正在尝试学习一些新的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
}
}
Run Code Online (Sandbox Code Playgroud)
新的转换API将如何改善这一点?据我所知,如果您正在滚动自己的容器视图控制器,这些API使用起来会更加复杂(请参阅自定义容器视图控制器转换.
转换API中的值主要用于交互式转换吗?
谢谢你的澄清
我认为新的转换API(UIViewControllerTransitioningDelegate和朋友)只是控制器之间视图转换概括的最后一步.
在UIKit的第一个版本中,我们不得不破解系统转换代码以获得任何自定义转换.多年以后,我们获得了控制器控制功能,可以将视图控制器作为一等公民进行管理,并创建我们自己的交互式过渡.最后一步是为您可以实现的任何转换提供功能齐全的通用系统API - 这是新的转换API.
新的API可以将转换提取到独立的类中.反过来,这使得最终可以从GitHub下载转换库并将其作为简单的转换委托插入到现有代码中.无需从某个特定的超类派生您的视图控制器,无需使用第三方控制器容器,无需向UIKit类添加扩展.现在转型终于成为UIKit的一流公民.
| 归档时间: |
|
| 查看次数: |
545 次 |
| 最近记录: |