表面上,TweenController 使构建交互式菜单和教程变得容易。在底层,它是一个简单但功能强大的工具包,可以在 可缓动的 值之间进行插值。
示例
使用
对任何可缓动内容进行缓动,例如
func tweenTransform() {
let transformA = CGAffineTransform.identity
let transformB = CGAffineTransform(scaleX: 2.0, y: 2.0)
let transformC = CGAffineTransform(rotationAngle: CGFloat(M_PI_2))
controller.tween(from: transformA, at: 0.0)
.to(transformB, at: 0.5)
.then(to: transformC, at: 1.0)
.with(action: tweenView.layer.twc_applyAffineTransform)
}
CGAffineTransform
func tweenColor() {
let colorA = UIColor.green
let colorB = UIColor.blue
let colorC = UIColor.red
tweenView.backgroundColor = colorA
controller.tween(from: colorA, at: 0.0)
.to(colorB, at: 0.5)
.then(to: colorC, at: 1.0)
.with(action: tweenView.twc_applyBackgroundColor)
}
或 UIColor
enum Step: Int {
case One = 1, Two = 2, Three = 3, Four = 4
}
extension Step: Tweenable {
static func valueBetween(_ val1: Step, _ val2: Step, percent: Double) -> Step {
let val = Int(round(Double(val2.rawValue - val1.rawValue) * percent + Double(val1.rawValue)))
return Step(rawValue: max(min(val, 4), 1)) ?? .One
}
}
func tweenStep() {
tweenController.tween(from: Step.One, at: 0.0)
.to(.Four, at: 0.25)
.thenHold(until: 0.75)
.then(to: .Two, at: 1.0)
.with { step in
// use step
}
}
或你自己的自定义类型
// can be called in response to user interaction
// such as a gesture recognizer or scroll view
// or something else, like a CADisplayLink
// progress range is arbitrary
// you might choose to use a percentage, like 0.0 - 1.0
// or the content size of a scroll view
controller.update(progress: newProgress)
然后只需调用
controller.tween(from: transformA, at: 0.0)
.to(transformB, at: 1.0, withEasing: Easing.easeInOutQuart)
.with(action: tweenView.layer.twc_applyAffineTransform)
您可以使用缓动函数
controller.tween(from: 0.0, at: 0.0)
.to(M_PI * 8.0, at: 1.0)
.with(object: tweenView.layer, keyPath: "transform.rotation.z")
您还可以使用键值编码
func observeBoundaries() {
controller.observeForward(progress: 0.5) { progress in
// halfway finished!
}
controller.observeBoth(progress: 0.75) { progress in
// this is called when moving backwards or forwards
}
}
例如 键值编码
- 您还可以观察边界
- 标准缓动
- Double
- Float
- Int
- CGFloat
- CGPoint
- CGSize
- CGRect
- UIColor
CGAffineTransform
CATransform3D
安装
$ gem install cocoapods
CocoaPods
platform :ios, '10.0'
use_frameworks!
pod 'TweenController', '~> 1.0'
CocoaPods 是一个Cocoa项目依赖管理器。您可以使用以下命令安装它:
$ pod install
要使用CocoaPods将TweenController集成到您Xcode项目中,在您的Podfile
中指定它
Carthage
Carthage 是 Cocoa 应用的去中心化依赖管理器。要安装 carthage 工具,您可以使用 Homebrew。
$ brew update
$ brew install carthage
要使用 Carthage 将 TweenController 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它。
github "daltonclaybrook/tween-controller" ~> 1.0.1
然后,运行以下命令来构建 TweenController 框架
$ carthage update
最后,您需要手动设置您的 Xcode 项目以添加 TweenController 框架。
在您的应用程序目标的“常规”设置选项卡中,在“链接的框架和库”部分,从磁盘上的 Carthage/Build 文件夹中拖放您想要使用的每个框架。
在您的应用程序目标的“构建阶段”设置选项卡中,单击“+”图标并选择“新运行脚本阶段”。创建一个包含以下内容的运行脚本
/usr/local/bin/carthage copy-frameworks
并在“输入文件”下添加您想要使用的框架路径
$(SRCROOT)/Carthage/Build/iOS/TweenController.framework
有关如何使用 Carthage 的更多信息,请参阅其 项目页面。
联系方式
在 Twitter 上关注我并与我联系。如果您发现任何问题,只需在此打开票据 issue。合并请求也热烈欢迎。
许可证
.TweenController 依照 MIT 许可证发布。请参阅 LICENSE 以获取详细信息。