Anymotion 0.1.1

Anymotion 0.1.1

测试已测试
语言语言 Obj-CObjective C
许可证 LICENSE
发布最新发布2017年11月

Mats HaugeHåvard Fossli 维护。



Anymotion 0.1.1

  • Håvard Fossli和Mats Hauge

Screenshot

Anymotion为动画UIKit、CoreAnimation、POP和您选择的库提供了一个统一的API

  • 强大的一行代码
  • 动画分组和链接
  • 可取消动画,具有回调以进行清理
  • Swift API

安装

通过CocoaPods

如果您使用CocoaPods,您可以将它简单地添加到您的Podfile

pod 'Anymotion', :git => 'https://github.com/agens-no/Anymotion.git', :branch => 'master'

这将下载Anymotion及其依赖项到Pods/,在您下一次执行pod install时。您可能需要先运行pod repo update

Swift中导入
import Anymotion
Objective-C中导入
#import <Anymotion/Anymotion.h>
通过Carthage

要通过Carthage安装,请将其添加到您的Cartfile中

github "agens-no/anymotion"
Swift中导入
import Anymotion
Objective-C中导入
#import <Anymotion/Anymotion.h>

基础知识

使用链式构建器模式,我们可以将大量的配置压缩到一行中

let goRight = ANYPOPSpring(kPOPLayerPositionX).toValue(100).springSpeed(5).animation(for: view.layer)
let fadeOut = ANYCABasic(#keyPath(CALayer.opacity)).toValue(0).duration(1).animation(for: view.layer)

注意:除非您像这样说start,否则这些动画不会开始

goRight.start()
fadeOut.start()
GIF

您可以将它们分组而不是单独开始每个动画

goRight.groupWith(fadeOut).start()
GIF

调用start实际上返回一个ANYActivity,允许您在任何时候停止动画。

let activity = goRight.groupWith(fadeOut).start()
...
activity.cancel()
GIF

实时示例

编译并运行iOS-Example项目以查看一些美丽的示例!

GIF

GIF

GIF

框架集成

POP

let spring = ANYPOPSpring(kPOPLayerPositionX)
               .toValue(100)
               .springSpeed(5)
               .animation(for: view.layer)
GIF
let basic = ANYPOPBasic(kPOPLayerPositionX)
               .toValue(100)
               .duration(2)
               .animation(for: view.layer)
GIF
let decay = ANYPOPDecay(kPOPLayerPositionX)
               .velocity(10)
               .animation(for: view.layer)
GIF

Core Animation

let basic = ANYCABasic(#keyPath(CALayer.position))
               .toValue(CGPoint(x: 100, y: 0))
               .duration(2)
               .animation(for: view.layer)
GIF

UIKit

let uikit = ANYUIView.animation(duration: 2) {
    view.center.x = 100
}
GIF

运算符

分组

同时开始动画

ANYAnimation *goRight = ...;
ANYAnimation *fadeOut = ...;
ANYAnimation *group = [ANYAnimation group:@[goRight, fadeOut]];
[group start];
GIF

链式动画

当动画完成时开始另一个动画

ANYAnimation *goRight = ...;
ANYAnimation *goLeft = ...;
ANYAnimation *group = [goRight then:goLeft];
[group start];
GIF

重复

ANYAnimation *goRight = ...;
ANYAnimation *goLeft = ...;
ANYAnimation *group = [[goRight then:goLeft] repeat];
[group start];
GIF

设置和清理

ANYAnimation *pulsatingDot = ...;
[[pulsatingDot before:^{
   view.hidden = NO;
}] after:^{
   view.hidden = YES;
}];
[pulsatingDot start];
GIF

回调

ANYAnimation *anim = ...;
[[anim onCompletion:^{
    NSLog(@"Animation completed");
} onError:^{
    NSLog(@"Animation was cancelled");
}] start];
GIF

反馈

我们😍想听听您对这个库的看法。无论您是否喜欢它,请喜欢不喜欢。如果有您希望改进的地方,请提交问题,这样我们就可以修复它了!

如果您使用Anymotion且对其满意,请考虑发表一条提到@agens的推文。这个库是由对动画充满热情的Mats Hauge和非常关心架构的Håvard Fossli用爱心制作的。