Releases: HeroTransitions/Hero
Unwind Support & Snapshot Type Modifiers
0.1.4
- fix a bug where changing orientation doesn't affect previous VC. #60
- fix a bug where the presented view controller has incorrect frame. #63, #56
- New snapshot type modifiers:
-
useOptimizedSnapshot
With this modifier, Hero will create snapshot optimized for different view type when animating.
For custom views or views with masking, useOptimizedSnapshot might create snapshots
that appear differently than the actual view.
In that case, use .useNormalSnapshot or .useSlowRenderSnapshot to disable the optimization. -
useNormalSnapshot
Create snapshot using snapshotView(afterScreenUpdates:).
-
useLayerRenderSnapshot
Create snapshot using layer.render(in: currentContext).
This is slower than .useNormalSnapshot but gives more accurate snapshot for some views (eg. UIStackView). -
useNoSnapshot
Force Hero to not create any snapshot when animating this view. Hence Hero will animate on the view directly.
This will mess up the view hierarchy. Therefore, view controllers have to rebuild its view structure after the transition finishes.
-
- New navigation extension on UIViewController (mainly to support unwinding):
-
func hero_dismissViewController()
Dismiss the current view controller with animation. Will perform a navigationController.popViewController
if the current view controller is contained inside a navigationController. -
func hero_replaceViewController(with:UIViewController)
Replace the current view controller with another VC on the navigation/modal stack.
-
func hero_unwindToRootViewController()
Unwind to the root view controller using Hero.
-
func hero_unwindToViewController(_ toViewController:)
Unwind to a specific view controller using Hero.
-
func hero_unwindToViewController(withSelector: Selector)
Unwind to a view controller that responds to the given selector using Hero.
-
func hero_unwindToViewController(withClass: AnyClass)
Unwind to a view controller with given class using Hero.
-
func hero_unwindToViewController(withMatchBlock: (UIViewController) -> Bool)
Unwind to a view controller that the match block returns true on.
-
Local coordinate space support + new Apple Homepage Transition example
-
Support local coordinate space.
Global coordinate space Local (parent's) coordinate space Animating views are not affected by parent views' attributes Animating views are affected by parent views' attributes When parent view moves, subviews that have its own modifiers do not move with the parent view. I.e. they are being taken out of the view hierarchy. When parent view moves, subviews that have its own modifiers move along with the parent view. I.e. similar to how a view behave when its parent view moves. Used for matched views & views with source
modifier. Global is the default prior to 0.1.3Local is the default coordinate space after 0.1.3 -
New useGlobalCoordinateSpace modifier. Force the view to use global coordinate space. I.e. won't move with its parent view.
Bug fixes
0.1.1
HUGE Update. Revamped Hero Modifier implementation. Bug fixes.
-
add HeroModifier class and HeroTargetState struct
- HeroModifier is a swift enum-like class that provides the same functionality of the original string-based heroModifiers.
- HeroTargetState is a struct that holds view state informations. It can be build from [HeroModifier]. Mostly used internally and for building HeroPlugin.
-
change the original
heroModifiers:String?
toheroModifierString:String?
(breaking change!) -
add
heroModifiers:[HeroModifier]?
to UIView -
add a shared singleton
Hero
object for controlling the interactive transition. Which can be accessed byHero.shared
-
few changes to the protocols
-
protocol HeroAnimator
func temporarilySet(view:UIView, to modifiers:HeroModifiers) // to func temporarilySet(view:UIView, targetState:HeroTargetState)
-
protocol HeroViewControllerDelegate
@objc optional func wantInteractiveHeroTransition(context:HeroInteractiveContext) -> Bool // to @objc optional func wantInteractiveHeroTransition() -> Bool
-
remove HeroInteractiveContext protocol
-
-
update HeroPlugin to conform to the new protocols definitions.
-
rename a few modifiers:
- curve → timingFunction
- sourceID → source
- clearSubviewModifiers → ignoreSubviewModifiers
-
fix a bug with
heroReplaceViewController
API. PR 30 -
fix a bug with UIStackView not animating correctly. PR 22
-
add recursive
ignoreSubviewModifiers
modifier -
add radial & inverseRadial cascade:
To migrate from previous versions:
Do a whole-project find & replace(cmd+option+shift+F) for:
-
heroModifiers → heroModifierString
-
curve → timingFunction
-
sourceID → source
-
clearSubviewModifiers → ignoreSubviewModifiers
Remember to also replace these inside the storyboard. In code, please migrate to the new type-safe
heroModifiers
. It provides better type-checking and more functionality.
Bug fixes
Carthage Support
Not much in this update. just adding Carthage support.
0.0.3 Stable
- Cleaner resume animation after an interactive transition.
- plugin API:
seekTo(progress:Double)
changed toseekTo(timePassed:TimeInterval)
- plugin API:
resume(progress:Double, reverse:Bool)
changed toresume(timePassed:TimeInterval, reverse:Bool)
- provides dynamic duration by default.
material design(duration & timing)
0.0.2
- rename
clearSubviewClasses
toclearSubviewModifiers
. was a naming mistake. - set default animation to be CABasicAnimation with the Standard Curve from material design (easing).
- add the new arc effect from material design (movement).
- add arc effect to Basic, Menu, & ListToGrid examples.
- add the ability to show arc path in the Debug Plugin.
- ignore
HeroModifiers
for source view when matched with a target view with the sameHeroID
- some small optimization & bug fixes
Initial Beta!
0.0.1 fix errors