From 3d3747bb054695b4111345987aee35eecbb00e29 Mon Sep 17 00:00:00 2001 From: timglorioso Date: Thu, 7 Sep 2017 20:20:37 -0400 Subject: [PATCH 1/2] remove snapshot view on controller dismissal --- CardStackController/Classes/CardStackController.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CardStackController/Classes/CardStackController.swift b/CardStackController/Classes/CardStackController.swift index e47495a..8143589 100644 --- a/CardStackController/Classes/CardStackController.swift +++ b/CardStackController/Classes/CardStackController.swift @@ -133,6 +133,16 @@ public class CardStackController: UIViewController { imageView.pinEdgesToSuperviewEdges() } + public override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(false) + + guard !view.subviews.isEmpty else { return } + + if let imageView = view.subviews[0] as? UIImageView { + imageView.removeFromSuperview() + } + } + public override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() From eefbcd0355107c523bfeefb8ca7504a6c98ed6ff Mon Sep 17 00:00:00 2001 From: timglorioso Date: Wed, 7 Feb 2018 22:29:35 -0500 Subject: [PATCH 2/2] store reference to current snapshot view --- .../Classes/CardStackController.swift | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CardStackController/Classes/CardStackController.swift b/CardStackController/Classes/CardStackController.swift index 8143589..7d87e2f 100644 --- a/CardStackController/Classes/CardStackController.swift +++ b/CardStackController/Classes/CardStackController.swift @@ -91,6 +91,7 @@ public class CardStackController: UIViewController { fileprivate var isPresentingCard = false fileprivate var initialDraggingPoint = CGPoint.zero fileprivate var stackCompletionBlock: CompletionBlock? + fileprivate var backgroundSnapshotView: UIImageView? fileprivate var previousViewController: UIViewController? { let previousCardIndex = viewControllers.count - 2 @@ -127,20 +128,19 @@ public class CardStackController: UIViewController { super.viewWillAppear(false) guard isBeingPresented else { return } - let screenShotImage = drawWindowHierarchy(afterScreenUpdates: false) - let imageView = UIImageView(image: screenShotImage) - view.insertSubview(imageView, at: 0) - imageView.pinEdgesToSuperviewEdges() + + let backgroundSnapshot = drawWindowHierarchy(afterScreenUpdates: false) + backgroundSnapshotView = UIImageView(image: backgroundSnapshot) + + view.insertSubview(backgroundSnapshotView!, at: 0) + backgroundSnapshotView!.pinEdgesToSuperviewEdges() } public override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(false) + super.viewWillDisappear(animated) - guard !view.subviews.isEmpty else { return } - - if let imageView = view.subviews[0] as? UIImageView { - imageView.removeFromSuperview() - } + backgroundSnapshotView?.removeFromSuperview() + backgroundSnapshotView = nil } public override func viewDidLayoutSubviews() {