gpt4 book ai didi

ios - Segue 动画不能完全正常工作

转载 作者:行者123 更新时间:2023-11-28 15:19:11 27 4
gpt4 key购买 nike

所以我有 2 个 View Controller 和一个导航 Controller 。单击屏幕时,第 1 个 VC 转到第 2 个 VC,并且有一个后退按钮可以让 segue 展开以返回到第 1 个 VC。

我不喜欢 segues 的垂直动画,所以(在一些帮助下)我创建了自定义的水平动画。

第一个 VC 非常适合从右向左滑动的动画。但是一旦完成,第二个 VC 就不想放松(第二个 VC 应该从左到右)。

我确实收到了这个警告..

警告:尝试在 TestApp.HomeViewController:0x7fce20410030 上呈现 UINavigationController:0x7fce2082b000,其 View 不在窗口层次结构中!

此外,如果我从第一个 VC segue 中获取脚本,那么我就可以从第二个 VC 中解脱出来并使用适当的动画。

这是转场的代码:

第一风投

@IBAction func performSegue(_ sender: Any) {

if shouldPerformSegue(withIdentifier: "segue", sender: Any?.self) {

performSegue(withIdentifier: "segue", sender: nil)
}
}

@IBAction func unwindToHomeView(segue: UIStoryboardSegue) {

}

override func unwind(for unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) {
let segue = SegueFromLeft(identifier: unwindSegue.identifier, source: unwindSegue.source, destination: unwindSegue.destination)
segue.perform()
}

从右到左动画

    let dst = self.destination
let src = self.source

let containerView = src.view.superview

dst.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)

containerView?.addSubview(dst.view)

UIView.animate(withDuration: 0.25, delay: 0.0, options: UIViewAnimationOptions.curveEaseInOut, animations: {
dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
}, completion: { success in
src.present(dst, animated: false, completion: nil)
})

从左到右动画

    let dst = self.destination
let src = self.source

src.view.superview?.insertSubview(dst.view, at: 0)

UIView.animate(withDuration: 0.25, delay: 0.0, options: UIViewAnimationOptions.curveEaseInOut, animations: {
src.view.transform = CGAffineTransform(translationX: -src.view.frame.size.width, y: 0)
}, completion: { success in
src.dismiss(animated: false, completion: nil)
})

如有任何帮助,我们将不胜感激。

最佳答案

您可以简单地将 viewcontroller 推送到导航 Controller ,而无需显式处理左右动画。在 VC1 中,navigationController?.pushViewController(VC2, animated: true) 将使用方便的后退按钮简单地从右到左为 VC2 设置动画,这可用于为 VC2 从左到右显示 VC1 设置动画。

关于ios - Segue 动画不能完全正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46309134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com