Skip to content

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SPM supported

DAExpandAnimation

A custom modal transition that presents a controller with an expanding effect while sliding out the presenter remnants.

Screenshot

DAExpandAnimation

Installation

Simply copy the Sources/DAExpandAnimation/DAExpandAnimation.swift file into your project.

Swift Package Manager

DAExpandAnimation is also available through Swift Package Manager.

.package(url:"https://github.com/ifitdoesntwork/DAExpandAnimation.git", from:"1.0.0")

Usage

Try the example project!

Have your view controller conform to UIViewControllerTransitioningDelegate. Optionally set the collapsedViewFrame, the expandedViewFrame, the slidingPart and the animationDuration.

privateletanimationController=DAExpandAnimation()overridefunc prepare(for segue:UIStoryboardSegue, sender:Any?){guardlet selectedCell = sender as?UITableViewCellelse{return}lettoViewController= segue.destination
toViewController.transitioningDelegate =self
toViewController.modalPresentationStyle =.custom
toViewController.view.backgroundColor = selectedCell.backgroundColor
animationController.collapsedViewFrame ={
selectedCell.frame
}
animationController.animationDuration =Constants.demoAnimationDuration()}func animationController(forPresented presented:UIViewController, presenting:UIViewController, source:UIViewController)->UIViewControllerAnimatedTransitioning?{
animationController
}func animationController(forDismissed dismissed:UIViewController)->UIViewControllerAnimatedTransitioning?{
animationController
}

Protocols

Adopting DAExpandAnimationPresentingViewAdapter provides the following optional delegate methods for tailoring the presenter's UX.

/// Determines whether the animations include sliding the presenter's view apart.
/// Defaults to `true`.
varshouldSlideApart:Bool{get}
/// Notifies the presenter's view adapter that animations are about to occur.
func animationsWillBegin(in view:UIView, presenting isPresentation:Bool)
/// Notifies the presenter's view adapter that animations are just completed.
func animationsDidEnd(presenting isPresentation:Bool)

Adopting DAExpandAnimationPresentedViewAdapter provides the following optional delegate methods for tailoring the presentation of a new view controller.

/// Gives the presented view adapter a chance to prepare
/// the expanding `view` before the animations.
func prepare(expanding view:UIView)
/// Gives the presented view adapter ability to change
/// properties of the expanding `view` alongside the animations.
func animate(expanding view:UIView)
/// Gives the presented view adapter ability to clean the expanded `view` up
/// after the animations are performed.
func cleanup(expanding view:UIView)
/// Gives the presented view adapter a chance to prepare
/// the collapsing `view` before the animations.
func prepare(collapsing view:UIView)
/// Gives the presented view adapter ability to change
/// properties of the collapsing `view` alongside the animations.
func animate(collapsing view:UIView)
/// Gives the presented view adapter ability to clean the collapsed `view`
/// up after the animations are performed.
func cleanup(collapsing view:UIView)

About

A custom modal transition that presents a controller with an expanding effect while sliding out the presenter remnants.

Topics

Resources

Stars

580 stars

Watchers

13 watching

Forks

Releases

Used by

Contributors

Languages