ZoomTransitioning
provides a custom transition with image zooming animation.
When you use this library with UINavigationController
, you can pop view controller with edge swiping.
Run the demo project in the Demo directory without carthage update
or pod install
.
Refer to the example project for details.
import ZoomTransitioning
ZoomTransitionSourceDelegate
to source view controllerextension 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
}
}
ZoomTransitionDestinationDelegate
to destination view controllerextension 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
}
}
delegate
property of UINavigationController
import ZoomTransitioning
class NavigationController: UINavigationController {
private let zoomNavigationControllerDelegate = ZoomNavigationControllerDelegate()
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
delegate = zoomNavigationControllerDelegate
}
}
If you use Swift 2.2, use 1.3.0
ZoomTransitioning is available through Carthage. To install it, simply add the following line to your Cartfile:
github "WorldDownTown/ZoomTransitioning"
ZoomTransitioning is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'ZoomTransitioning'
/ZoomTransitioning
folder in your project. WorldDownTown, WorldDownTown@gmail.com
ZoomTransitioning is available under the MIT license. See the LICENSE file for more info.