【问题标题】:Speed up segues and Unwind segues加速转场和放松转场
【发布时间】: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


【解决方案1】:

大家好,在 cmets 的帮助下,我了解到问题不在于 segue,而在于代码本身。

我必须使用 viewWillAppear 之类的代码

来源:https://developer.apple.com/documentation/uikit/uiviewcontroller/1621510-viewwillappear

【讨论】:

    【解决方案2】:

    停止使用 segues , 开始使用 self.NavigationController.push(vc) 这确实是最好的导航方式。

    【讨论】:

    • 通过代码使用.push(vc)比使用segues更好...如果您查看OP链接的视频,他正在使用present ,而不是推...即使他正在推入导航控制器堆栈,编码.push而不是使用segue对他的问题的影响为零。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多