WorldDownTown
ZoomTransitioning
Swift

ZoomTransitioning provides a custom transition with image zooming animation and swiping the screen edge.

Last updated Mar 17, 2026
670
Stars
54
Forks
3
Issues
0
Stars/day
Attention Score
48
Language breakdown
Swift 89.0%
Ruby 7.4%
Objective-C 3.6%
โ–ธ Files click to expand
README

ZoomTransitioning

Join the chat at https://gitter.im/WorldDownTown/ZoomTransitioning

License Swift Carthage compatible CocoaPods compatible CocoaPods Awesome

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 without carthage 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
If you use Swift 2.2, use 1.3.0

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
    /ZoomTransitioning
    folder in your project.
  • Congratulations!

Author

WorldDownTown, WorldDownTown@gmail.com

License

ZoomTransitioning is available under the MIT license. See the LICENSE file for more info.

ยฉ 2026 GitRepoTrend ยท WorldDownTown/ZoomTransitioning ยท Updated daily from GitHub