AXChartKits 0.3.2

AXChartKits 0.3.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2016年11月

devedbox维护。



  • 作者
  • aiXing

Pop 是一个用于 iOS 和 OS X 的可扩展动画引擎。除了基本的静态动画外,它还支持弹簧和衰减动态动画,这使得它对于构建逼真的基于物理的交互非常有用。API 允许快速集成到现有的 Objective-C 代码库中,并且可以动画化任何对象上的任何属性。它是一个成熟且经过良好测试的框架,它驱动着Paper中的所有动画和转换。

安装

Pop 可在 CocoaPods 上使用。只需将以下内容添加到您的项目 Podfile 中:

pod 'pop', '~> 1.0'

bugs 最先在 master 中修复,然后通过指定的版本发布。如果您倾向于保持最新,您可以使用以下 Podfile 条目从 master 使用 Pop:

pod 'pop', :git => 'https://github.com/facebook/pop.git'

iOS 8 嵌入式框架

通过将项目添加到您的项目并将“pop.embedded framework”添加到您的应用程序目标的“General”选项卡中的“嵌入式二进制文件”部分,您可以在几秒钟内设置 pop!这还启用了使用头部模块的 @import pop 语法。

注意:由于 Xcode 的一些不受欢迎的限制,嵌入式二进制文件必须与模块具有相同名称,并且必须以 .framework 扩展名结尾。这意味着当添加嵌入式二进制文件时,您将看到两个 pop.framework(一个用于 OS X,一个用于 iOS)。请务必添加 iOS 的那个,由于列表是按照目标顺序填充的,因此可以假设它是第二个。您可以通过检查框架旁边的路径来验证是否选择了正确的框架:Debug-iphoneos

Embedded Binaries

注意 2:此方法目前与工作空间不兼容。由于某些未知原因,当将 pop.xcodeproj 放入工作空间时,Xcode 会简单地拒绝将 pop.framework 作为嵌入式二进制文件添加。此方法仅在将 pop.xcodeproj 添加为当前目标的项目的子项目时有效。

高级

或者,您可以将项目添加到您的 workspace 中并采用提供的配置文件,或者手动将 pop 子目录下的文件复制到您的项目中。如果手动安装,请确保通过将 -lc++ 包括到您的项目链接器标志中来链接 C++ 标准库。

用法

Pop 采用 Core Animation 显式动画编程模型。使用它时,请包含以下导入:

#import <pop/POP.h>

或者如果您正在使用嵌入式框架

@import pop;

开始、停止和更新

要开始动画,将其添加到您希望动画化的对象中

POPSpringAnimation *anim = [POPSpringAnimation animation];
...
[layer pop_addAnimation:anim forKey:@"myKey"];

要停止动画,从引用在开始时指定的键的对象中删除它

[layer pop_removeAnimationForKey:@"myKey"];

该键还可以用于查询动画的存在。更新正在运行的动画的toValue提供切换方向的最平滑方式

anim = [layer pop_animationForKey:@"myKey"];
if (anim) {
  /* update to value to new destination */
  anim.toValue = @(42.0);
} else {
  /* create and start a new animation */
  ....
}

虽然上述例子中使用了层,但Pop界面作为NSObject的类别添加实现。任何NSObject及其子类都可以被动画化。

类型

有四种具体的动画类型:弹簧、衰减、基本和自定义。

弹簧动画可以用来给对象一个可爱地弹跳。在这个例子中,我们使用弹性动画从一个层的大小当前数值动画到(0,0,400,400)

POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];
anim.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 400, 400)];
[layer pop_addAnimation:anim forKey:@"size"];

衰减动画可以用来逐渐减慢对象的运动。在这个例子中,我们衰减层的位置X值和速度从当前值和每秒1000pts

POPDecayAnimation *anim = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX];
anim.velocity = @(1000.);
[layer pop_addAnimation:anim forKey:@"slide"];

基本动画可以用来在指定的时间间隔内插值值。要使用一个缓动-缓出动画,将视图的alpha值从0.0插值到1.0,默认持续时间

POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPViewAlpha];
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
anim.fromValue = @(0.0);
anim.toValue = @(1.0);
[view pop_addAnimation:anim forKey:@"fade"];

POPCustomAnimation通过处理CADisplayLink和相关的时间步长管理,使得创建自定义动画和过渡变得更容易。更多信息请见头文件。

属性

属性animated是由POPAnimatableProperty类指定的。在这个例子中,我们创建了一个弹性动画,并显式设置与-[CALayer bounds]对应的可动画属性

POPSpringAnimation *anim = [POPSpringAnimation animation];
anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerBounds];

该框架提供许多通用的属性,如层和视图,可以直接使用。您可以通过创建该类的新实例来自定义属性。在这个例子中,我们声明了一个自定义音量属性

prop = [POPAnimatableProperty propertyWithName:@"com.foo.radio.volume" initializer:^(POPMutableAnimatableProperty *prop) {
  // read value
  prop.readBlock = ^(id obj, CGFloat values[]) {
    values[0] = [obj volume];
  };
  // write value
  prop.writeBlock = ^(id obj, const CGFloat values[]) {
    [obj setVolume:values[0]];
  };
  // dynamics threshold
  prop.threshold = 0.01;
}];

anim.property = prop;

有关所提供可动画属性的完整列表以及更多关于声明自定义属性的信息,请参见POPAnimatableProperty.h

调试

以下是一些调试的技巧。Pop遵循模拟器的“切换慢动作”设置。尝试启用它以减慢动画并更容易观察交互。

考虑给您的动画命名。这将使您更容易在通过日志或调试器引用它们时识别它们

anim.name = @"springOpen";

每个动画都附带一个相关的跟踪器。跟踪器允许您以快速高效的方式记录所有与动画相关的事件,动画完成后可查询和分析它们。以下示例启动跟踪器并配置它以在动画完成后记录所有事件

POPAnimationTracer *tracer = anim.tracer;
tracer.shouldLogAndResetOnCompletion = YES;
[tracer start];

有关更多信息,请参阅POPAnimationTracer.h

测试

Pop有广泛的单元测试覆盖。要安装测试依赖项,请导航到pop的根目录并键入:

pod install

假设已经安装了CocoaPods,这将包括单元测试目标的必要OCMock依赖项。

SceneKit

由于SceneKit需要iOS 8和OS X 10.9,因此POP的SceneKit扩展不需要打开。不幸的是,由于在弱连接框架中存在一些问题,如Xcode 6.1发布说明中所述,不能使用。

为了纠正这个问题,您可以轻松地选择使用SceneKit!只需将此内容添加到Xcode项目的预处理器宏部分即可

POP_USE_SCENEKIT=1

资源

提供一些外部资源的链接,这些资源可能很有价值

贡献

查看 CONTRIBUTING 文件了解如何提供帮助。

许可

Pop 在 BSD 许可下发布。有关详细信息,请参阅 LICENSE 文件。