本帖最后由 Simpon 于 2016-10-27 10:31 编辑
Facebook开源了期待已久的动画框架Pop,该框架为本文中的iOS app 提供了强大的动画支持。
Pop 中用来定义动画的方法类似于 苹果的Core Animation API。不论你以前是否使用过Core Animation,学习并使用Pop开发一个基本的动画都非常容易。
这是一个简单动画,是借助弹簧效果把一个视图从一个点移动到另一点。- POPSpringAnimation *springAnimation = [POPSpringAnimation animation];
- springAnimation.property = [POPAnimatableProperty propertyWithName:kPOPViewCenter];
- springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2)];
- springAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(100, 10)];
- [imageView pop_addAnimation:springAnimation forKey: @"center"];
复制代码
POPSpringAnimation 有几个属性是用来定义弹簧行为的,包括弹簧的反弹力度和速度。你可以这样改变其值:- springAnimation.springBounciness = 20;
- springAnimation.springSpeed = 20;
复制代码
动画看起来像这样:
你想要展现动画效果的属性是由POPAnimatableProperty来表现的。该属性通常被用到视图或者图层上,但是Pop实际上可以让你对NSObject 对象上的任何属性执行动画效果(比方:约束)。借助propertyWithName: initalizer:方法可以使用一大堆便捷的常量来创建POPAnimatableProperty。
- kPOPViewAlpha;
- kPOPViewBackgroundColor;
- kPOPViewBounds;
- kPOPViewCenter;
- kPOPViewFrame
- kPOPViewScaleX
- kPOPViewScaleXY
- kPOPViewScaleY;
- kPOPViewSize;
复制代码
你可以在开始、结尾处以及其他地方通过实现POPAnimationDelegate 协议来回调函数,并且分配你的类对象作为POPAnimation的代理。
- - (void)pop_animationDidStart:(POPAnimation *)anim;
- - (void)pop_animationDidReachToValue:(POPAnimation *)anim;
- - (void)pop_animationDidStop:(POPAnimation *)anim finished:(BOOL)finished;
复制代码 如果你已经使用了顶级UIView block animation API,你需要花费一些时间习惯Pop,尤其是寻找UIView 的等效属性。我发现POPSpringAnimation 没有一个持续时间的属性,相反(我假设的)它的时间是由速率和弹动属性控制的。并且如果你搜寻延迟的等效属性,会发现是beginTime(作为Core Animation API的镜像)。
下载:
精华推荐:
|
|