【发布时间】:2020-03-11 18:54:20
【问题描述】:
我正在尝试加快视图控制器之间的转场和展开转场。如果我做错了什么,请告诉我,或者我是否需要上传更多代码以获取上下文。
这是一个错误的 youtube 演示:https://www.youtube.com/watch?v=VZsAg0L-W5g&feature=youtu.be
基本上,当我单击“查看 AR”时,进入 AR 视图控制器需要一点时间
其次,当我尝试展开到“CollectionView 控制器”时,再次展开到前一个控制器的时间太长了。
我还必须记住内存,因为这是一个非常占用内存的应用程序。
欢迎任何帮助!!!!
这是第一个视图控制器的转场:
@objc private func ViewAR(_ sender: UIButton) {
imagesOne = nil
imagesTwo = nil
imagesThree = nil
imagesFour = nil
imagesFive = nil
//goToAR
self.performSegue(withIdentifier: "goToAR", sender: self)
}
正如您在上面看到的,我将图像设置为 nil 以用于存储目的,然后转到 AR 视图控制器
这是第二个视图控制器的展开转场:
@objc private func closeController(_ sender: UIButton) {
DispatchQueue.main.async {
self.sceneView.removeFromSuperview()
self.performSegue(withIdentifier: "unwindToSwipe", sender: self)
}
}
【问题讨论】:
-
您应该能够使用自定义 segue(即
UIStoryboardSegue的子类)来完成此操作,这使您可以完全控制过渡的完成方式以及过渡动画需要多长时间(甚至根本不使用动画)。 -
@Rudedog 感谢您的回复!我想知道这会解决这个问题还是这个问题更多地与要在 segue 之前执行的代码有关?
-
延迟几乎肯定不是因为“segue”——而是因为你正在设置新的视图控制器。要进行测试,添加一个新的普通视图控制器并将您的
performSegue(withIdentifier: "goToAR", sender: self)更改为performSegue(withIdentifier: "goToTest", sender: self)看看会发生什么。很有可能,它会很快。 -
@DonMag 是的,速度更快。所以问题在于我的代码在 segue 之前做了什么?
-
@mick1996 - 听起来像。您可能想要做的是找出准备 AR VC 所需的最小值,并显示某种类型的进度/活动指示器...然后,在
viewDidAppear()中,您可以运行使该 VC 正常运行所需的实际代码。
标签: ios swift segue dealloc unwind-segue