Sources/Toast/AnimationType.swift
//
// File.swift
//
//
// Created by Bas Jansen on 16/09/2023.
//
import Foundation
import UIKit
extension Toast {
/// Built-in animations for your toast
public enum AnimationType {
/// Use this type for fading in/out animations.
case slide(x: CGFloat, y: CGFloat)
/// Use this type for fading in/out animations.
///
/// alphaValue must be greater or equal to 0 and less or equal to 1.
case fade(alpha: CGFloat)
/// Use this type for scaling and slide in/out animations.
case scaleAndSlide(scaleX: CGFloat, scaleY: CGFloat, x: CGFloat, y: CGFloat)
/// Use this type for scaling in/out animations.
case scale(scaleX: CGFloat, scaleY: CGFloat)
/// Use this type for giving your own affine transformation
case custom(transformation: CGAffineTransform)
/// Currently the default animation if no explicit one specified.
case `default`
func apply(to view: UIView) {
switch self {
case .slide(x: let x, y: let y):
view.transform = CGAffineTransform(translationX: x, y: y)
case .fade(let value):
view.alpha = value
case .scaleAndSlide(let scaleX, let scaleY, let x, let y):
view.transform = CGAffineTransform(scaleX: scaleX, y: scaleY).translatedBy(x: x, y: y)
case .scale(let scaleX, let scaleY):
view.transform = CGAffineTransform(scaleX: scaleX, y: scaleY)
case .custom(let transformation):
view.transform = transformation
case .`default`:
break
}
}
/// Undo the effects from the ToastView so that it never happened.
func undo(from view: UIView) {
switch self {
case .slide, .scaleAndSlide, .scale, .custom:
view.transform = .identity
case .fade:
view.alpha = 1.0
case .`default`:
break
}
}
}
}