Skip to content

Instantly share code, notes, and snippets.

@warpling
Last active April 12, 2024 10:33
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save warpling/2dfe02c7057dece16760924aaf904eb7 to your computer and use it in GitHub Desktop.
Save warpling/2dfe02c7057dece16760924aaf904eb7 to your computer and use it in GitHub Desktop.
CAMediaTimingFunctions (Swift 4)
//
// CAMediaTimingFunctions+Extended.swift
// Geiger
//
// Created by Ryan McLeod on 1/22/19.
// Copyright © 2019 Grow Pixel. All rights reserved.
//
import UIKit
extension CAMediaTimingFunction {
static func linear() -> CAMediaTimingFunction { return CAMediaTimingFunction(name: .linear) }
static func easeIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(name: .easeIn) }
static func easeOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(name: .easeOut) }
static func easeInEaseOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(name: .easeInEaseOut) }
static func swiftOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints: 0.4, 0.2, 0, 1) }
static func sineIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.45, 0, 1, 1) }
static func sineOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0, 0, 0.55, 1) }
static func sineInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.45, 0, 0.55, 1) }
static func quadIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.43, 0, 0.82, 0.60) }
static func quadOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.18, 0.4, 0.57, 1) }
static func quadInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.43, 0, 0.57, 1) }
static func cubicIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.67, 0, 0.84, 0.54) }
static func cubicOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.16, 0.46, 0.33, 1) }
static func cubicInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.65, 0, 0.35, 1) }
static func quartIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.81, 0, 0.77, 0.34) }
static func quartOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.23, 0.66, 0.19, 1) }
static func quartInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.81, 0, 0.19, 1) }
static func quintIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.89, 0, 0.81, 0.27) }
static func quintOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.19, 0.73, 0.11, 1) }
static func quintInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.9, 0, 0.1, 1) }
static func expoIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:1.04, 0, 0.88, 0.49) }
static func expoOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.12, 0.51, -0.4, 1) }
static func expoInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.95, 0, 0.05, 1) }
static func circIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.6, 0, 1, 0.45) }
static func circOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:1, 0.55, 0.4, 1) }
static func circInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.82, 0, 0.18, 1) }
static func backIn() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.77, -0.63, 1, 1) }
static func backOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0, 0, 0.23, 1.37) }
static func backInOut() -> CAMediaTimingFunction { return CAMediaTimingFunction(controlPoints:0.77, -0.63, 0.23, 1.37) }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment