Anymotion为动画UIKit、CoreAnimation、POP和您选择的库提供了一个统一的API
如果您使用CocoaPods,您可以将它简单地添加到您的Podfile
pod 'Anymotion', :git => 'https://github.com/agens-no/Anymotion.git', :branch => 'master'
这将下载Anymotion
及其依赖项到Pods/
,在您下一次执行pod install
时。您可能需要先运行pod repo update
。
import Anymotion
#import <Anymotion/Anymotion.h>
要通过Carthage安装,请将其添加到您的Cartfile中
github "agens-no/anymotion"
import Anymotion
#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() |
![]() |
您可以将它们分组而不是单独开始每个动画
goRight.groupWith(fadeOut).start() |
![]() |
调用start
实际上返回一个ANYActivity
,允许您在任何时候停止动画。
let activity = goRight.groupWith(fadeOut).start() ... activity.cancel() |
![]() |
编译并运行iOS-Example项目以查看一些美丽的示例!
let spring = ANYPOPSpring(kPOPLayerPositionX) .toValue(100) .springSpeed(5) .animation(for: view.layer) |
![]() |
let basic = ANYPOPBasic(kPOPLayerPositionX) .toValue(100) .duration(2) .animation(for: view.layer) |
![]() |
let decay = ANYPOPDecay(kPOPLayerPositionX) .velocity(10) .animation(for: view.layer) |
![]() |
let basic = ANYCABasic(#keyPath(CALayer.position)) .toValue(CGPoint(x: 100, y: 0)) .duration(2) .animation(for: view.layer) |
![]() |
let uikit = ANYUIView.animation(duration: 2) { view.center.x = 100 } |
![]() |
同时开始动画
ANYAnimation *goRight = ...; ANYAnimation *fadeOut = ...; ANYAnimation *group = [ANYAnimation group:@[goRight, fadeOut]]; [group start]; |
![]() |
当动画完成时开始另一个动画
ANYAnimation *goRight = ...; ANYAnimation *goLeft = ...; ANYAnimation *group = [goRight then:goLeft]; [group start]; |
![]() |
ANYAnimation *goRight = ...; ANYAnimation *goLeft = ...; ANYAnimation *group = [[goRight then:goLeft] repeat]; [group start]; |
![]() |
ANYAnimation *pulsatingDot = ...; [[pulsatingDot before:^{ view.hidden = NO; }] after:^{ view.hidden = YES; }]; [pulsatingDot start]; |
![]() |
ANYAnimation *anim = ...; [[anim onCompletion:^{ NSLog(@"Animation completed"); } onError:^{ NSLog(@"Animation was cancelled"); }] start]; |
![]() |
我们
如果您使用Anymotion且对其满意,请考虑发表一条提到@agens的推文。这个库是由对动画充满热情的Mats Hauge和非常关心架构的Håvard Fossli用爱心制作的。