From 17c3b5306564421d55f0f17a62ca342a17a75012 Mon Sep 17 00:00:00 2001 From: Marcin Suszczewicz Date: Wed, 30 Mar 2016 17:46:05 +0200 Subject: [PATCH 1/4] Activity indicator added to PreviewViewController --- .../InstaPreview/Sample/Base.lproj/Main.storyboard | 12 +++++++++--- .../InstaPreview/Sample/PreviewViewController.swift | 10 +++------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/examples/InstaPreview/Sample/Base.lproj/Main.storyboard b/examples/InstaPreview/Sample/Base.lproj/Main.storyboard index 98a5e7d..12ec8c2 100644 --- a/examples/InstaPreview/Sample/Base.lproj/Main.storyboard +++ b/examples/InstaPreview/Sample/Base.lproj/Main.storyboard @@ -1,8 +1,8 @@ - + - + @@ -56,17 +56,23 @@ + + + + + - + + diff --git a/examples/InstaPreview/Sample/PreviewViewController.swift b/examples/InstaPreview/Sample/PreviewViewController.swift index 14c6794..b8c0126 100644 --- a/examples/InstaPreview/Sample/PreviewViewController.swift +++ b/examples/InstaPreview/Sample/PreviewViewController.swift @@ -10,7 +10,8 @@ import UIKit class PreviewViewController: UIViewController { - var imageView = UIImageView() + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var activityIndicator: UIActivityIndicatorView! var image: UIImage? { didSet { @@ -20,16 +21,11 @@ class PreviewViewController: UIViewController { } } - override func viewWillLayoutSubviews() { - super.viewWillLayoutSubviews() - imageView.frame = self.view.bounds - } - override func viewDidLoad() { super.viewDidLoad() self.title = "Amsterdam" imageView.image = image - self.view.addSubview(imageView) + activityIndicator.startAnimating() } } From ef1b5603aca6bce7857810c0f3aa4d491a74a936 Mon Sep 17 00:00:00 2001 From: Marcin Suszczewicz Date: Wed, 30 Mar 2016 17:51:19 +0200 Subject: [PATCH 2/4] made optional imageView while setting an image --- examples/InstaPreview/Sample/PreviewViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/InstaPreview/Sample/PreviewViewController.swift b/examples/InstaPreview/Sample/PreviewViewController.swift index b8c0126..ffa34fb 100644 --- a/examples/InstaPreview/Sample/PreviewViewController.swift +++ b/examples/InstaPreview/Sample/PreviewViewController.swift @@ -16,7 +16,7 @@ class PreviewViewController: UIViewController { var image: UIImage? { didSet { if let image = image { - imageView.image = image + imageView?.image = image } } } From ff5b860b78b478206a1f1b26377a39ccd5f461dc Mon Sep 17 00:00:00 2001 From: Marcin Suszczewicz Date: Wed, 30 Mar 2016 18:19:51 +0200 Subject: [PATCH 3/4] added targetViewController's view instead of a screenshot --- PeekPop/PeekPopManager.swift | 2 +- PeekPop/PeekPopView.swift | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/PeekPop/PeekPopManager.swift b/PeekPop/PeekPopManager.swift index e9cd5c2..f33ddec 100644 --- a/PeekPop/PeekPopManager.swift +++ b/PeekPop/PeekPopManager.swift @@ -54,7 +54,7 @@ class PeekPopManager { // Take target view controller screenshot targetVC.view.frame = viewController.view.bounds - peekPopView?.targetViewControllerScreenshot = targetVC.view.screenshotView(false) + peekPopView?.targetViewControllerView = targetVC.view targetViewController = targetVC return true diff --git a/PeekPop/PeekPopView.swift b/PeekPop/PeekPopView.swift index 92e8c5e..61446fd 100644 --- a/PeekPop/PeekPopView.swift +++ b/PeekPop/PeekPopView.swift @@ -28,6 +28,8 @@ class PeekPopView: UIView { blurredScreenshots.removeAll() } } + + var targetViewControllerView: UIView? = nil var targetViewControllerScreenshot: UIImage? = nil var sourceViewScreenshot: UIImage? var blurredScreenshots = [UIImage]() @@ -85,6 +87,7 @@ class PeekPopView: UIView { targetPreviewView.frame.size = sourceViewRect.size targetPreviewView.imageViewFrame = self.bounds targetPreviewView.imageView.image = targetViewControllerScreenshot + targetPreviewView.viewControllerView = targetViewControllerView sourceImageView.frame = sourceViewRect sourceImageView.image = sourceViewScreenshot @@ -151,6 +154,16 @@ class PeekPopTargetPreviewView: UIView { var imageContainer = UIImageView() var imageView = UIImageView() var imageViewFrame = CGRect.zero + + var viewControllerView: UIView? = nil{ + willSet{ + viewControllerView?.removeFromSuperview() + } + didSet{ + imageContainer.insertSubview(viewControllerView!, belowSubview: imageView) + setNeedsLayout() + } + } override init(frame: CGRect) { super.init(frame: frame) @@ -167,6 +180,8 @@ class PeekPopTargetPreviewView: UIView { imageContainer.frame = self.bounds imageView.frame = imageViewFrame imageView.center = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2) + viewControllerView?.frame = imageViewFrame + viewControllerView?.center = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2) } func setup() { From aa7ffa16f7f97cab2e318fec0999c61ea9fd0e12 Mon Sep 17 00:00:00 2001 From: Marcin Suszczewicz Date: Wed, 30 Mar 2016 18:23:42 +0200 Subject: [PATCH 4/4] adding targetViewController's screenshot (above targetViewControllerView) just before commiting PeekPop (to have better transition animation) --- PeekPop/PeekPopManager.swift | 1 + PeekPop/PeekPopView.swift | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/PeekPop/PeekPopManager.swift b/PeekPop/PeekPopManager.swift index f33ddec..ed67047 100644 --- a/PeekPop/PeekPopManager.swift +++ b/PeekPop/PeekPopManager.swift @@ -115,6 +115,7 @@ class PeekPopManager { guard let targetViewController = targetViewController, context = context else { return } + peekPopView?.targetViewControllerScreenshot = targetViewController.view.screenshotView(false) context.delegate.previewingContext(context, commitViewController: targetViewController) peekPopEnded() } diff --git a/PeekPop/PeekPopView.swift b/PeekPop/PeekPopView.swift index 61446fd..fd84b64 100644 --- a/PeekPop/PeekPopView.swift +++ b/PeekPop/PeekPopView.swift @@ -30,7 +30,12 @@ class PeekPopView: UIView { } var targetViewControllerView: UIView? = nil - var targetViewControllerScreenshot: UIImage? = nil + var targetViewControllerScreenshot: UIImage? = nil{ + didSet{ + targetPreviewView.imageView.image = targetViewControllerScreenshot + } + } + var sourceViewScreenshot: UIImage? var blurredScreenshots = [UIImage]()