指定"显示"的方向(推)segue

时间:2015-05-30 22:17:19

标签: ios objective-c swift segue

是否有一种简单的方法来指定" show"的方向(从左,右,上或下)。 segue(之前称为" push" segue)?

默认"显示" segue从左到右,但我希望它从下到上。

1 个答案:

答案 0 :(得分:8)

我不相信有一种内置的实现方法,但是你可以使用iOS7中引入的自定义转换。有很多很棒的教程,我在下面添加了一些链接和一些示例代码,演示了如何从顶部向下滑动新的视图控制器。

要检查的网站:

(注意:在第三和第四个教程中访问UIViewController的{​​{1}}的方式已过时。而不是view您应该使用toViewController.view

示例:

首先,你需要设置你的故事板,我假设你已经完成了。

其次,您需要一个符合transitionContext.viewForKey(UITransitionContextToViewKey)的{​​{1}}子类。这将用于控制从一个视图控制器到下一个视图控制器的转换。

NSObject

RayWenderlich: How To Make A View Controller Transition Animation Like in the Ping App教程中所述,您需要设置UIViewControllerAnimatedTransitioning的代理人。当执行push segue时,以下class TransitionManager : NSObject, UIViewControllerAnimatedTransitioning { let animationDuration = 0.5 func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval { return animationDuration } func animateTransition(transitionContext: UIViewControllerContextTransitioning) { let containerView = transitionContext.containerView() let toView = transitionContext.viewForKey(UITransitionContextToViewKey)! containerView.addSubview(toView) let finalFrame = containerView.bounds let initalFrame = CGRect(x: 0, y: -finalFrame.height, width: finalFrame.width, height: finalFrame.height) toView.frame = initalFrame UIView.animateWithDuration(animationDuration, animations: { toView.frame = finalFrame }, completion: { _ in transitionContext.completeTransition(true) }) } } 类将用于返回UINavigationController的实例:

NavigationControllerDelegate

那应该是它!为了扩展这一点,我建议你看一下Interactive Transitions。