TweenController 1.0.1

TweenController 1.0.1

测试测试
Lang语言 SwiftSwift
许可证 MIT
发布最新版本2018年4月
SPM支持 SPM

Dalton Claybrook 维护。




TweenController travisci codecov Swift v4.1 License MIT CocoaPods Carthage

表面上,TweenController 使构建交互式菜单和教程变得容易。在底层,它是一个简单但功能强大的工具包,可以在 可缓动的 值之间进行插值。

示例

Pinyada

使用

对任何可缓动内容进行缓动,例如

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 以获取详细信息。