如何在自定义展开动画中显示演示视图

时间:2019-04-15 16:26:29

标签: ios swift segue

我目前正在尝试实现传统的从右到左的搭配和从左到右的放松搭配。

对于从右到左的搜索,我遵循了答案here,并且我尝试对放松的搜索执行相同的操作。直到我查看了内存使用情况之后,一切似乎都可以正常工作,每次我进行segue和unsease segue时,内存使用量都在增加。

我可以看到它的来源,例如在放开镜头时,我正在插入目的地(呈现视图)作为动画的同级。因此,从某种意义上讲,我一直在不断堆叠相同的呈现视图。

import UIKit

// unwind segue
class SegueBackToLogin: UIStoryboardSegue {
    override func perform() {
        let src = self.source
        let dst = self.destination

        // insert the presenting view below the presented one as a sibling
        src.view.superview?.insertSubview(dst.view, belowSubview: src.view)

        UIView.animate(
            withDuration: 0.25,
            delay: 0.0,
            options: UIView.AnimationOptions.curveEaseInOut,
            animations: {
                // slide presented view away 
                src.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)
            },
            completion: { finished in
                // dismiss the presented view
                src.dismiss(animated: false, completion: nil)
            }
        )
    }
}

所以我的第二个尝试是不插入dst.view作为子视图,因为根据我在前进方向上所做的操作,在已呈现视图的下面应该已经有一个呈现视图。但是,在过渡时,呈现视图将显示为黑屏,并且仅在关闭呈现的视图后(即动画结束时)才呈现该视图。我该怎么解决这个问题?

0 个答案:

没有答案