Jak*_*san 7 objective-c ios segue swift
是否有一种简单的方法来指定"show"segue(以前称为"push"segue)的方向(从左,右,顶部或底部)?
默认的"show"segue从左到右,但我希望它从下到上.
我不相信有一种内置的实现方法,但是你可以使用iOS7中引入的自定义转换.有很多很棒的教程,我在下面添加了一些链接和一些示例代码,演示了如何从顶部向下滑动新的视图控制器.
要检查的网站:
(注:该方式UIViewController的view在第三和第四教程是过时的访问相反的,toViewController.view你应该使用transitionContext.viewForKey(UITransitionContextToViewKey))
一个例子:
首先,你需要设置你的故事板,我假设你已经完成了.
其次,您需要一个NSObject符合的子类UIViewControllerAnimatedTransitioning.这将用于控制从一个视图控制器到下一个视图控制器的转换.
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) })
}
}
Run Code Online (Sandbox Code Playgroud)
如 RayWenderlich:如何制作视图控制器转换动画一样,在Ping应用教程中,您需要设置一个您UINavigationController的委托.以下NavigationControllerDelegate类将用于返回执行TransitionManagerpush segue 的实例:
class NavigationControllerDelegate: NSObject, UINavigationControllerDelegate {
let transitionManager = TransitionManager()
func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
if operation == .Push {
return transitionManager
}
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
这应该是它!为了扩展这一点,我建议你看一下Interactive Transitions.
| 归档时间: |
|
| 查看次数: |
9808 次 |
| 最近记录: |