diff --git a/PeekPop/PeekPopManager.swift b/PeekPop/PeekPopManager.swift index e9cd5c2..ed67047 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 @@ -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 92e8c5e..fd84b64 100644 --- a/PeekPop/PeekPopView.swift +++ b/PeekPop/PeekPopView.swift @@ -28,7 +28,14 @@ class PeekPopView: UIView { blurredScreenshots.removeAll() } } - var targetViewControllerScreenshot: UIImage? = nil + + var targetViewControllerView: UIView? = nil + var targetViewControllerScreenshot: UIImage? = nil{ + didSet{ + targetPreviewView.imageView.image = targetViewControllerScreenshot + } + } + var sourceViewScreenshot: UIImage? var blurredScreenshots = [UIImage]() @@ -85,6 +92,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 +159,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 +185,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() { 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..ffa34fb 100644 --- a/examples/InstaPreview/Sample/PreviewViewController.swift +++ b/examples/InstaPreview/Sample/PreviewViewController.swift @@ -10,26 +10,22 @@ import UIKit class PreviewViewController: UIViewController { - var imageView = UIImageView() + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var activityIndicator: UIActivityIndicatorView! var image: UIImage? { didSet { if let image = image { - imageView.image = image + imageView?.image = image } } } - 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() } }