我正在尝试在两个加载到容器视图中的子控制器之间滑动。我发现了CATransition中的滑动效果。但是,它并没有像我想要的那样滑动。如果我从右向左滑动,我希望当前控制器也向左滑动。因此,它基本上使用滑动创建滚动效果。我怎样才能做到这一点?这是我目前的代码。
var transition = CATransition();
transition.duration = 0.25;
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut);
transition.type = kCATransitionPush
if source.prevItem > source.pageControl.currentPage {
transition.subtype = kCATransitionFromLeft
} else {
transition.subtype = kCATransitionFromRight
}
dest.view.layer.addAnimation(transition, forKey: kCATransition)
source.transitionFromViewController(
source.currentChildController!,
toViewController: dest,
duration: 0.5,
options: UIViewAnimationOptions.CurveEaseInOut,
animations: nil,
completion: { finished in
source.currentChildController?.removeFromParentViewController()
dest.didMoveToParentViewController(source)
source.currentChildController = dest
}
);
此实现仅使目标控制器通过当前控制器,即使推送转换的documentation指出:“图层内容在滑动到位时推送任何现有内容。”公共转换子类型“用于这种转变。“