【发布时间】:2017-06-26 04:24:07
【问题描述】:
我有以下 2 个函数来添加和删除从容器视图控制器触发的子视图控制器:
@discardableResult func addChildViewController(withChildViewController childViewController: UIViewController) -> UIViewController {
// Add Child View Controller
addChildViewController(childViewController)
childViewController.beginAppearanceTransition(true, animated: true)
// Add Child View as Subview
view.addSubview(childViewController.view)
// Configure Child View
childViewController.view.frame = view.bounds
childViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
// Notify Child View Controller
childViewController.didMove(toParentViewController: self)
return childViewController
}
@discardableResult func removeChildViewController(withChildViewController childViewController: UIViewController) -> UIViewController {
// Notify Child View Controller
childViewController.willMove(toParentViewController: nil)
childViewController.beginAppearanceTransition(false, animated: true)
// Remove Child View From Superview
childViewController.view.removeFromSuperview()
// Notify Child View Controller
childViewController.removeFromParentViewController()
return childViewController
}
上面的函数是 UIViewController 的扩展,所以我所做的只是父视图控制器上的 self.addChildViewController() 和 self.removeChildViewController()。
如何为退出时移除的视图和进入时添加的视图设置动画?
【问题讨论】:
-
您有多个子控制器并尝试在它们之间切换还是只有一个?
-
我有多个子视图控制器,但在任何给定时间,我都会添加一个并删除最后一个。
-
添加子视图控制器时你想要哪个动画?
-
任何作品作为例子。让我们使用淡入淡出——所以被移除的子 VC 会淡出,而添加的子 VC 会淡入。
标签: ios swift animation uiviewcontroller uiviewanimation