ZoomTransitioning provides a custom transition with image zooming animation and swiping the screen edge.
ZoomTransitioning
Overview
ZoomTransitioning provides a custom transition with image zooming animation.
When you use this library with UINavigationController, you can pop view controller with edge swiping.

Demo
Run the demo project in the Demo directory withoutcarthage update or pod install.
Usage
Refer to the example project for details.import ZoomTransitioning
Adopt ZoomTransitionSourceDelegate to source view controller
extension ImageListViewController: ZoomTransitionSourceDelegate {
func transitionSourceImageView() -> UIImageView { return selectedImageView }
func transitionSourceImageViewFrame(forward forward: Bool) -> CGRect { return selectedImageView.convertRect(selectedImageView.bounds, toView: view) }
func transitionSourceWillBegin() { selectedImageView.hidden = true }
func transitionSourceDidEnd() { selectedImageView.hidden = false }
func transitionSourceDidCancel() { selectedImageView.hidden = false } }
Adopt ZoomTransitionDestinationDelegate to destination view controller
extension ImageDetailViewController: ZoomTransitionDestinationDelegate {
func transitionDestinationImageViewFrame(forward forward: Bool) -> CGRect { if forward { let x: CGFloat = 0.0 let y = topLayoutGuide.length let width = view.frame.width let height = width * 2.0 / 3.0 return CGRect(x: x, y: y, width: width, height: height) } else { return largeImageView.convertRect(largeImageView.bounds, toView: view) } }
func transitionDestinationWillBegin() { largeImageView.hidden = true }
func transitionDestinationDidEnd(transitioningImageView imageView: UIImageView) { largeImageView.hidden = false largeImageView.image = imageView.image }
func transitionDestinationDidCancel() { largeImageView.hidden = false } }
set delegate property of UINavigationController
import ZoomTransitioning
class NavigationController: UINavigationController {
private let zoomNavigationControllerDelegate = ZoomNavigationControllerDelegate()
required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder)
delegate = zoomNavigationControllerDelegate } }
Requirements
- Swift 4.0
- iOS 9.0 or later
Installation
Carthage
ZoomTransitioning is available through Carthage. To install it, simply add the following line to your Cartfile:github "WorldDownTown/ZoomTransitioning"
CocoaPods
ZoomTransitioning is available through CocoaPods. To install it, simply add the following line to your Podfile:pod 'ZoomTransitioning'
Manually
- Download and drop
folder in your project./ZoomTransitioning - Congratulations!