我已经阅读了有关segue的其他帖子,但没有一个解决我的问题。
简而言之,我的ViewController
是有序的,就像一本书一样。我希望向后过渡(例如:从第9页到第8页)始终存在(从左向右滑动)。我希望向前过渡(从第9页到第10页)显示从右到左。
是的,如果您逐页翻页,则我的导航 Controller 后退按钮(左上角)将显示为这样。但是,如果您从索引跳入,则导航 Controller 上的后退功能会将您带回到索引。
我的目标是,如果用户从索引跳到第9页(例如),然后向右滑动,它将向右轻拂该页面并显示第8页。一旦进入第8页,如果他们向左滑动滑到左侧,它们将再次出现在第9页上。
默认情况下,我所有的ViewController
都是从右向左滑动来显示的。
例子:
把它想像成一本书,如果我使用索引跳到第4章,然后向右轻扫并从堆栈中弹出 View ,我将回到索引。但是,如果您在第394页的第4章,并且向右轻扫,则不想返回索引!您想转到第3章的最后一页,第393页!因此,导航堆栈对我没有帮助。
结束范例
细节:
1.我在按钮上使用新的Xcode“Show”在ViewController之间切换。
我读过那里有动画代码。我已经阅读了可以使用的深度程序化转换。似乎很疯狂,没有一种简单的方法可以只从左侧选择我要呈现的片段,并轻松地反转动画。
谢谢!
尝试记录:
I tried DCDC's code:
UIView.transitionWithView(self.window!, duration: 0.5, options:.TransitionFlipFromLeft, animations: { () -> Void in
self.window!.rootViewController = mainVC
}, completion:nil)
当我将DCDC的代码插入
IBAction
进行回扫时,将返回此错误 最佳答案
这是我不需要导航 Controller 即可达到的效果的方式。尝试以下方法:
swift 4:
import UIKit
class SegueFromLeft: UIStoryboardSegue {
override func perform() {
let src = self.source
let dst = self.destination
src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
dst.view.transform = CGAffineTransform(translationX: -src.view.frame.size.width, y: 0)
UIView.animate(withDuration: 0.25,
delay: 0.0,
options: .curveEaseInOut,
animations: {
dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
},
completion: { finished in
src.present(dst, animated: false, completion: nil)
}
)
}
}
swift 3:
import UIKit
class SegueFromLeft: UIStoryboardSegue
{
override func perform()
{
let src = self.sourceViewController
let dst = self.destinationViewController
src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
dst.view.transform = CGAffineTransformMakeTranslation(-src.view.frame.size.width, 0)
UIView.animateWithDuration(0.25,
delay: 0.0,
options: UIViewAnimationOptions.CurveEaseInOut,
animations: {
dst.view.transform = CGAffineTransformMakeTranslation(0, 0)
},
completion: { finished in
src.presentViewController(dst, animated: false, completion: nil)
}
)
}
}
然后在 Storyboard 中,单击要更改的segue。在属性检查器中,将类型更改为“自定义”,并将类更改为“SegueFromLeft”