gpt4 book ai didi

ios - 并不可怕的Segues

转载 作者:搜寻专家 更新时间:2023-11-01 05:43:47 25 4
gpt4 key购买 nike

在我的主菜单上,我有一个简单的按钮布局和几个在背景中移动的 Sprite ,以使其更具交互性。当我第一次运行它时,一切都很好, Sprite 移动得很顺利,如果我点击菜单的一个按钮,一个自定义的 segue 就会被调用,下一个 View Controller 就会按照我想要的方式呈现。然后我可以按下后退按钮,再次显示菜单,一切(大部分)都很好。

但是,如果我重复此过程(向导航系统发送垃圾邮件),转场仍然有效,但最终菜单页面上的 Sprite 开始滞后并以急剧跳跃而不是平滑滑动的方式移动。所以我认为我的 segue 实现有问题

示例代码:

class SegueFromLeft: UIStoryboardSegue {
override func perform() {
let src = self.source
let dst = self.destination

if let c = src as? LSViewController {
if let d = dst as? LSViewController {
d.page = (c.page + c.header.count - 1) % c.header.count
}
}

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: UIViewAnimationOptions.curveEaseInOut,
animations: {
dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
},
completion: { finished in
src.present(dst, animated: false, completion: nil) }
)
}
}

我处理过渡的方式有问题吗,或者问题出在其他地方(如果是,可能的原因是什么)?

更新:所以我将 SKScenes 附加到每个 View Controller 。这就是我附加 Sprite 的地方。我认为这与它有关...

最佳答案

这里的问题是您没有在转场之前关闭 SKScenes。他们实际上只是在后台继续运行。要解决此问题,请在 segue 期间的某处调用以下代码:

        scene.removeFromParent()
scene.view?.presentScene(nil)

这将关闭场景并实际上停止 Sprite 。

关于ios - 并不可怕的Segues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44523832/

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