美文网首页
刷新动画有感

刷新动画有感

作者: 董二千 | 来源:发表于2015-12-11 12:23 被阅读105次

<pre>在文章开始之前,我想谈点东西。关于付出产出的问题。不知不觉,从事软件开发工作已经快两年了。项目没做多少,但是一只维护一个app。从其中学到了不少。</br>慢慢的发现,虽然技术学了不少,但是下一次用到同样的东西感觉和第一次使用没多大进步,还是去查文档,慢慢找。脑子里没有对这方面知识的体系,产出很少,...,</br>为了解决这种尴尬的情况,打算在每次版本更新之后,或者学习了新东西之后,把它记录下来,等到心里有了总体的轮廓,在总结一下,哈哈,想法总是好的。好了废话不多说了,进入正题吧</pre>

动画的触发方法
1

<pre>如果是自定义的一个layer,监听它的某个属性如,progress </br>+(BOOL)needsDisplayForKey:(NSString *)key{
if ([key isEqualToString:@"progress"])</br> return YES;</br> return [super needsDisplayForKey]
}</pre>
这样就监听了progress属性,当其变化时会在下面两个方法里重新绘制(只会调用一个)后者的优先级大于前者
<pre>- (void)drawInContext()和-(void)display()</pre>
绘制的时候动画绘比较生硬,我们可以加上过度效果
<pre>-(id<ACAction>)actionForKey:(NSString *)key{
if ([key isEqualToString:@"progress"])</br> {
##animation....
return animation </br>
};</br> return [super actionForKey:key]
}</pre>

2

在view的-(void)drawRect()方法里绘图,每次你需要更新的时候,调用-(void)setNeedDisplay(),然后它就会自动重新绘制所有的content(这也是你的某一个或者几个属性发生了改变你才需要去掉用)


二.每次改属性发生变化时,控制一个或者几个layer(已经绘制好了的),去动画,用CGAffineTransform或者CABasicAnimation等,方式来改变layer的动作,达到不用,绘制,就能动的效果

以上是一些复杂动画的实现思路,还有一些简单的直接在对象上面用CGAffineTransform、CABasicAnimation等就能搞定

相关文章

网友评论

      本文标题:刷新动画有感

      本文链接:https://www.haomeiwen.com/subject/acyyhttx.html