CHCubicBezier 2.0.0

CHCubicBezier 2.0.0

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布日期最后发布2016年9月
SPM支持SPM

Calvin Huang维护。




  • Calvin

CHCubicBezier

关于

CubicBezier提供类似于CSS的cubic-bezier过渡时间函数的三次贝塞尔(cubic-bezier)渐变。它由npm模块bezier-easing转换而来,并基于这篇文章实现。

使用方法

let cubicBezier = CubicBezier(mX1: 0, mY1: 0, mX2: 1, mY2: 0.5)
cubicBezier.easing(0.0)  // 0
cubicBezier.easing(0.5)  // 0.3125
cubicBezier.easing(1.0)  // 1

let cubicBezier = CubicBezier(controlPoints: (0.25, 0.1, 0.25, 0.1))

let cubicBezier = CubicBezier(easing: CubicBezier.Easing.ease)
枚举 原始值
CubicBezier.Easing.ease (0.25, 0.1, 0.25, 0.1)
CubicBezier.Easing.easeIn (0.42, 0.0, 1.0, 1.0)
CubicBezier.Easing.easeOut (0.0, 0.0, 0.58, 1.0)
CubicBezier.Easing.easeInOut (0.42, 0.0, 0.58, 1.0)
CubicBezier.Easing.linear (0, 0, 1, 1)

您还可以从CubicBezier实例或CubicBezier.easing中获取当前控制点。

CubicBezier.Easing.ease.toControlPoints() // (0.25, 0.1, 0.25, 0.1)

let cubicBezier = CubicBezier(controlPoints: (0.25, 0.1, 0.25, 0.1))
cubicBezier.controlPoints // // (0.25, 0.1, 0.25, 0.1)

为什么选择CubicBezier而不是CoreAnimation

CAMediaTimingFunction无法提供计算时间(t)的值的任何方法。

这里是CubicBezier想要解决的问题,目的是计算用于构建定制动画的B(t)值。

高级示例

let cubicBezier = CubicBezier(mX1: 0, mY1: 0, mX2: 1, mY2: 0.5)
let duraing: Int = 3  // Seconds
var countingNumber: Int = 0
for time in duraing {
    countingNumber = countingNumber + cubicBezier(time / duraing)
    print("Count: \(countingNumber), At time: \(time)")
}

安装

通过Swift Package Manager

CHCubicBezier支持2.0.0以上版本的Swift Packge Manager。

import PackageDescription

let package = Package(
    name: "MyProject",
    dependencies: [
        .Package(url: "https://github.com/CapsLock-Studio/CHCubicBezier", majorVersion: 2)
    ]
)

迁移到Objective-C项目

根据Apple的文档,您需要在Objective-C代码中更新导入语句(将它们更新到#import "ProductModuleName-Swift.h")。

#import "CHCubicBezier-Swift.h"
// or
@import "CHCubicBezier.h"

完毕!开始使用CHCubicBezier吧!

许可协议

版权© Calvin Huang。本软件使用MIT许可协议