[英]iOS: Container view - animate push transition when changing child view controllers
Apple discusses how to have a container view controller transition between two child view controllers in this document . Apple讨论了如何在本文档中的两个子视图控制器之间进行容器视图控制器转换。 I would like to animate a simple push vertical slide up identical to
UIModalTransitionStyleCoverVertical
in UIModalTransitionStyle
. 我想在
UIModalTransitionStyleCoverVertical
中UIModalTransitionStyle
与UIModalTransitionStyleCoverVertical
相同的简单垂直向上滑动。 However, transitionFromViewController
only allows use of UIViewAnimationOptions
, not transition styles. 但是,
transitionFromViewController
只允许使用UIViewAnimationOptions
,而不允许使用过渡样式。 So how would one animate sliding a view up? 那么如何动画滑动视图呢?
It's odd that to transition between child view controllers you can't call a simple push method similar in UINavigationController
to animate the transition. 奇怪的是,要在子视图控制器之间进行转换,您无法调用类似于
UINavigationController
的简单推送方法来为转换设置动画。
Load child view, set frame with origin.y under bottom screen. 加载子视图,在底部屏幕下使用origin.y设置框架。 After change it to 0 in animation block.
在动画块中将其更改为0后。 Example:
例:
enum Animation {
case LeftToRight
case RightToLeft
}
func animationForLoad(fromvc: UIViewController, tovc: UIViewController, with animation: Animation) {
self.addChildViewController(tovc)
self.container.addSubview(tovc.view)
self.currentVC = tovc
var endOriginx: CGFloat = 0
if animation == Animation.LeftToRight {
tovc.view.frame.origin.x = -self.view.bounds.width
endOriginx += fromvc.view.frame.width
} else {
tovc.view.frame.origin.x = self.view.bounds.width
endOriginx -= fromvc.view.frame.width
}
self.transition(from: fromvc, to: tovc, duration: 0.35, options: UIViewAnimationOptions.beginFromCurrentState, animations: {
tovc.view.frame = fromvc.view.frame
fromvc.view.frame.origin.x = endOriginx
}, completion: { (finish) in
tovc.didMove(toParentViewController: self)
fromvc.view.removeFromSuperview()
fromvc.removeFromParentViewController()
})
}
Above code is transition between 2 child view with push and pop horizontal animation. 上面的代码是2个子视图之间的过渡和弹出水平动画。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.