HeroModifier

public final class HeroModifier
extension HeroModifier: HeroStringConvertible

Undocumented

  • Undocumented

    Declaration

    Swift

    public init(applyFunction: @escaping (inout HeroTargetState) -> Void)
  • Apply modifiers directly to the view at the start of the transition. The modifiers supplied here won’t be animated. For source views, modifiers are set directly at the beginning of the animation. For destination views, they replace the target state (final appearance).

    Declaration

    Swift

    public static func beginWith(_ modifiers: [HeroModifier]) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func beginWith(modifiers: [HeroModifier]) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func beginWith(_ modifiers: HeroModifier...) -> HeroModifier
  • Use global coordinate space.

    When using global coordinate space. The view become a independent view that is not a subview of any view. It won’t move when its parent view moves, and won’t be affected by parent view’s attributes.

    When a view is matched, this is automatically enabled. The source modifier will also enable this.

    Global coordinate space is default for all views prior to version 0.1.3

    Declaration

    Swift

    public static var useGlobalCoordinateSpace: HeroModifier
  • ignore all heroModifiers attributes for a view’s direct subviews.

    Declaration

    Swift

    public static var ignoreSubviewModifiers: HeroModifier
  • ignore all heroModifiers attributes for a view’s subviews.

    • recursive: if false, will only ignore direct subviews’ modifiers. default false.

    Declaration

    Swift

    public static func ignoreSubviewModifiers(recursive: Bool = false) -> HeroModifier
  • Will create snapshot optimized for different view type. 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.

    This modifier actually does nothing by itself since .useOptimizedSnapshot is the default.

    Declaration

    Swift

    public static var useOptimizedSnapshot: HeroModifier
  • Create snapshot using snapshotView(afterScreenUpdates:).

    Declaration

    Swift

    public static var useNormalSnapshot: HeroModifier
  • Create snapshot using layer.render(in: currentContext). This is slower than .useNormalSnapshot but gives more accurate snapshot for some views (eg. UIStackView).

    Declaration

    Swift

    public static var useLayerRenderSnapshot: HeroModifier
  • Force Hero to not create any snapshot when animating this view. This will mess up the view hierarchy, therefore, view controllers have to rebuild its view structure after the transition finishes.

    Declaration

    Swift

    public static var useNoSnapshot: HeroModifier
  • Force the view to animate.

    By default, Hero will not animate if the view is outside the screen bounds or if there is no animatable hero modifier, unless this modifier is used.

    Declaration

    Swift

    public static var forceAnimate: HeroModifier
  • Force Hero use scale based size animation. This will convert all .size modifier into .scale modifier. This is to help Hero animate layers that doesn’t support bounds animation. Also gives better performance.

    Declaration

    Swift

    public static var useScaleBasedSizeChange: HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func from(node: ExprNode) -> HeroModifier?
  • Fade the view during transition

    Declaration

    Swift

    public static var fade: HeroModifier
  • Force don’t fade view during transition

    Declaration

    Swift

    public static var forceNonFade: HeroModifier
  • Set the position for the view to animate from/to.

    • position: position for the view to animate from/to

    Declaration

    Swift

    public static func position(_ position: CGPoint) -> HeroModifier
  • Set the size for the view to animate from/to.

    • size: size for the view to animate from/to

    Declaration

    Swift

    public static func size(_ size: CGSize) -> HeroModifier
  • Set the transform for the view to animate from/to. Will override previous perspective, scale, translate, & rotate modifiers

    • t: the CATransform3D object

    Declaration

    Swift

    public static func transform(_ t: CATransform3D) -> HeroModifier
  • Set the perspective on the transform. use in combination with the rotate modifier.

    • perspective: set the camera distance of the transform

    Declaration

    Swift

    public static func perspective(_ perspective: CGFloat) -> HeroModifier
  • Scale 3d

    • x: scale factor on x axis, default 1
    • y: scale factor on y axis, default 1
    • z: scale factor on z axis, default 1

    Declaration

    Swift

    public static func scale(x: CGFloat = 1, y: CGFloat = 1, z: CGFloat = 1) -> HeroModifier
  • Scale in x & y axis

    • xy: scale factor in both x & y axis

    Declaration

    Swift

    public static func scale(_ xy: CGFloat) -> HeroModifier
  • Translate 3d

    • x: translation distance on x axis in display pixel, default 0
    • y: translation distance on y axis in display pixel, default 0
    • z: translation distance on z axis in display pixel, default 0

    Declaration

    Swift

    public static func translate(x: CGFloat = 0, y: CGFloat = 0, z: CGFloat = 0) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func translate(_ point: CGPoint, z: CGFloat = 0) -> HeroModifier
  • Rotate 3d

    • x: rotation on x axis in radian, default 0
    • y: rotation on y axis in radian, default 0
    • z: rotation on z axis in radian, default 0

    Declaration

    Swift

    public static func rotate(x: CGFloat = 0, y: CGFloat = 0, z: CGFloat = 0) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func rotate(_ point: CGPoint, z: CGFloat = 0) -> HeroModifier
  • Rotate 2d

    • z: rotation in radian

    Declaration

    Swift

    public static func rotate(_ z: CGFloat) -> HeroModifier

UIKit

  • Set the backgroundColor for the view to animate from/to.

    • backgroundColor: backgroundColor for the view to animate from/to

    Declaration

    Swift

    public static func backgroundColor(_ backgroundColor: UIColor) -> HeroModifier
  • Set the borderColor for the view to animate from/to.

    • borderColor: borderColor for the view to animate from/to

    Declaration

    Swift

    public static func borderColor(_ borderColor: UIColor) -> HeroModifier
  • Set the shadowColor for the view to animate from/to.

    • shadowColor: shadowColor for the view to animate from/to

    Declaration

    Swift

    public static func shadowColor(_ shadowColor: UIColor) -> HeroModifier
  • Create an overlay on the animating view.

    • color: color of the overlay
    • opacity: opacity of the overlay

    Declaration

    Swift

    public static func overlay(color: UIColor, opacity: CGFloat) -> HeroModifier
  • Set the opacity for the view to animate from/to.

    • opacity: opacity for the view to animate from/to

    Declaration

    Swift

    public static func opacity(_ opacity: CGFloat) -> HeroModifier
  • Set the cornerRadius for the view to animate from/to.

    • cornerRadius: cornerRadius for the view to animate from/to

    Declaration

    Swift

    public static func cornerRadius(_ cornerRadius: CGFloat) -> HeroModifier
  • Set the zPosition for the view to animate from/to.

    • zPosition: zPosition for the view to animate from/to

    Declaration

    Swift

    public static func zPosition(_ zPosition: CGFloat) -> HeroModifier
  • Set the contentsRect for the view to animate from/to.

    • contentsRect: contentsRect for the view to animate from/to

    Declaration

    Swift

    public static func contentsRect(_ contentsRect: CGRect) -> HeroModifier
  • Set the contentsScale for the view to animate from/to.

    • contentsScale: contentsScale for the view to animate from/to

    Declaration

    Swift

    public static func contentsScale(_ contentsScale: CGFloat) -> HeroModifier
  • Set the borderWidth for the view to animate from/to.

    • borderWidth: borderWidth for the view to animate from/to

    Declaration

    Swift

    public static func borderWidth(_ borderWidth: CGFloat) -> HeroModifier
  • Set the shadowOpacity for the view to animate from/to.

    • shadowOpacity: shadowOpacity for the view to animate from/to

    Declaration

    Swift

    public static func shadowOpacity(_ shadowOpacity: CGFloat) -> HeroModifier
  • Set the shadowOffset for the view to animate from/to.

    • shadowOffset: shadowOffset for the view to animate from/to

    Declaration

    Swift

    public static func shadowOffset(_ shadowOffset: CGSize) -> HeroModifier
  • Set the shadowRadius for the view to animate from/to.

    • shadowRadius: shadowRadius for the view to animate from/to

    Declaration

    Swift

    public static func shadowRadius(_ shadowRadius: CGFloat) -> HeroModifier
  • Set the shadowPath for the view to animate from/to.

    • shadowPath: shadowPath for the view to animate from/to

    Declaration

    Swift

    public static func shadowPath(_ shadowPath: CGPath) -> HeroModifier
  • Set the masksToBounds for the view to animate from/to.

    • masksToBounds: masksToBounds for the view to animate from/to

    Declaration

    Swift

    public static func masksToBounds(_ masksToBounds: Bool) -> HeroModifier
  • Sets the duration of the animation for a given view. If not used, Hero will use determine the duration based on the distance and size changes.

    • duration: duration of the animation

    Note: a duration of .infinity means matching the duration of the longest animation. same as .durationMatchLongest

    Declaration

    Swift

    public static func duration(_ duration: TimeInterval) -> HeroModifier
  • Sets the duration of the animation for a given view to match the longest animation of the transition.

    Declaration

    Swift

    public static var durationMatchLongest: HeroModifier
  • Sets the delay of the animation for a given view.

    • delay: delay of the animation

    Declaration

    Swift

    public static func delay(_ delay: TimeInterval) -> HeroModifier
  • Sets the timing function of the animation for a given view. If not used, Hero will use determine the timing function based on whether or not the view is entering or exiting the screen.

    • timingFunction: timing function of the animation

    Declaration

    Swift

    public static func timingFunction(_ timingFunction: CAMediaTimingFunction) -> HeroModifier
  • (iOS 9+) Use spring animation with custom stiffness & damping. The duration will be automatically calculated. Will be ignored if arc, timingFunction, or duration is set.

    • stiffness: stiffness of the spring
    • damping: damping of the spring

    Declaration

    Swift

    @available(iOS 9, *)
    public static func spring(stiffness: CGFloat, damping: CGFloat) -> HeroModifier
  • Transition from/to the state of the view with matching heroID Will also force the view to use global coordinate space.

    The following layer properties will be animated from the given view.

    position bounds.size cornerRadius transform shadowColor shadowOpacity shadowOffset shadowRadius shadowPath

    Note that the following properties won’t be taken from the source view.

    backgroundColor borderWidth borderColor

    • heroID: the source view’s heroId.

    Declaration

    Swift

    public static func source(heroID: String) -> HeroModifier
  • arc

    Works in combination with position modifier to apply a natural curve when moving to the destination.

    Declaration

    Swift

    public static var arc: HeroModifier
  • Works in combination with position modifier to apply a natural curve when moving to the destination.

    • intensity: a value of 1 represent a downward natural curve ╰. a value of -1 represent a upward curve ╮. default is 1.

    Declaration

    Swift

    public static func arc(intensity: CGFloat = 1) -> HeroModifier
  • Cascade applys increasing delay modifiers to subviews

    Declaration

    Swift

    public static var cascade: HeroModifier
  • Cascade applys increasing delay modifiers to subviews

    • delta: delay in between each animation
    • direction: cascade direction
    • delayMatchedViews: whether or not to delay matched subviews until all cascading animation have started

    Declaration

    Swift

    public static func cascade(delta: TimeInterval = 0.02,
                               direction: CascadeDirection = .topToBottom,
                               delayMatchedViews: Bool = false) -> HeroModifier
  • Apply modifiers only if the condition return true.

    Declaration

    Swift

    public static func when(_ condition: @escaping (HeroConditionalContext) -> Bool, _ modifiers: [HeroModifier]) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func when(_ condition: @escaping (HeroConditionalContext) -> Bool, _ modifiers: HeroModifier...) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func whenMatched(_ modifiers: HeroModifier...) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func whenPresenting(_ modifiers: HeroModifier...) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func whenDismissing(_ modifiers: HeroModifier...) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func whenAppearing(_ modifiers: HeroModifier...) -> HeroModifier
  • Undocumented

    Declaration

    Swift

    public static func whenDisappearing(_ modifiers: HeroModifier...) -> HeroModifier