几种常用UIView的简单动画(不涉及CA)
简单的UIView的Block动画
首先来说一下这个UIView的Block动画,这个动画用着方便,还可以设置很多属性,基本上我用的是最多的了.主要是好用.这个也是分几个不同的方法,根据自己需求选择方法.
1.UIView animateWithDuration:<#(NSTimeInterval)#> animations:<#^(void)animations#>
第一个方法,第一个参数是你这个动画要播多久,我一般是0.25,不知道为什么就是想写0.25,第二个参数是一个Block,看见Block啥也不想,先回车再说.这里面要写你想干的事.我前面写的隐藏TabBar和NavigationBar我自己写的动画就是这个,不过缺点那里面也说了,有需要的可以看一下.
2.UIView animateWithDuration:<#(NSTimeInterval)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>
第二个方法,这个比第一个多了一个Block,看名字也知道,完成以后要干啥,打个比方,我放了一个动画,然后我想在动画结束以后,弹一个控制器出来,那这个完全满足您的需要.前两个参数是一样的,动画时长和要做的事情.后面是动画完成以后要做的事情.
3.UIView animateWithDuration:<#(NSTimeInterval)#> delay:<#(NSTimeInterval)#> options:<#(UIViewAnimationOptions)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>
第三种方法,这个方法参数就稍微有点多了,但是前两个用过以后,你会发现,第三个就是比第二个多了几个参数而已,参数嘛,给就是了.Duration:时长 delay:多久以后才开始 option:你放动画的时候要干嘛或者想怎样 animations:要干的事情 completion:完成以后你想干嘛
这个delay没啥要说的吧,就是我放了一个动画,但是我不想立马就播放,你给我等2s出来,就用这个,option,这个更简单,我放动画的时候吧,我还想用户点一下动画就没了,我得响应用户交互吧,那你就进去选UIViewAnimationOptionAllowUserInteraction这个,还有就是,我放动画了,改变了一下布局,那你就得重新布局子控件了对吧,选UIViewAnimationOptionLayoutSubviews这个,布局子控件嘛.
4.UIView animateWithDuration:<#(NSTimeInterval)#> delay:<#(NSTimeInterval)#> usingSpringWithDamping:<#(CGFloat)#> initialSpringVelocity:<#(CGFloat)#> options:<#(UIViewAnimationOptions)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>
这个第四种方法就比较牛逼了,前两个参数我就不说了吧,一样的,咱从这个Damping开始说,感觉这个方法好长啊,而且老子英语不好怎么破,完全不知道这啥玩意,OK,我建议记住一个单词,就是前面的spring,春天,春天来了,你得发春,所以得动,那么这个参数就是动的意思,(Spring这里是弹簧的意思,Damping,阻尼,我的写上,这个参数的真实意思是弹簧的阻尼设置)没记错的话范围是0-1,你越接近1你的骚动越厉害...反之越差,在看Velocity,这个总认识吧,v不就是速度吗,这里是指速率,看你骚动的速度,没记错的话也是0-1,(弹簧的速率设置)和上面一样0---->1后面这几个参数我就不说了 一样的.
总结一下,UIView的Block动画还是蛮好用的,能帮助大家实现动画效果,根据需求的不同,选择自己需要的动画.
UIView的首尾式动画
这个UIView的动画,我是用的不多,因为一个字,费劲...我真没发现有啥用,不过万一别人有用呢,对吧,我也写这里.
第一步:开启动画
两个参数,第一个是NSString的,明显是你给动画一个名字,是想在找这个动画的时候方便,我不用,所以我一直写nil,第二个上下文,没啥用,也nil或者你写null都行.
[UIView beginAnimations:nil context:nil];
是不是略熟悉的感觉,动画的时长,就想写0.25,不知道为什么.
[UIView setAnimationDuration:0.25];
又是熟悉的感觉,多久以后才放动画1s
[UIView setAnimationDelay:1];
大爷,要重复吗?来3次.
[UIView setAnimationRepeatCount:3];
中间写需要动画的代码
改变一个控件的位置,从0,0 我移动到100,100
提交动画
[UIView commitAnimations];
总结一下,这个动画我用的真是不多,因为,我用这个实现的都可以用Block动画来实现.所以,我感觉还是Block更方便一些.
序列帧动画
悠然记得上初中的时候,上微机课,半个学期,做了一个火柴人的动画.一帧一帧的动画.是我第一次用电脑做出来的东西.
先讲解一下序列帧动画,咱们要实现序列帧动画得拿到一张张的图片,你从服务器也好,放assets里面也好,其实就是看到的gif,只不过现在咱们需要把一张张的图片连贯起来,实现gif效果
用的概率嘛,我感觉应该是一般,不多吧.
首先第一步,如果你是本地的,那么就得加载本地数据.如果你是网络的 你得网络获取数据,不管怎么说,你获取到的数据肯定是一堆图片.把这些图片存在数组里.
第二步,UIIimage里面有个方法,自己可以把一系列图片变成一张动态图.
第一个参数就是你存图片的数组,第二个参数是你执行的时间
UIImage animatedImageWithImages:<#(nonnull NSArray*)#> duration:<#(NSTimeInterval)#>
返回值是一个UIImage,接一下.然后你就能实现GIF了
本文不针对任何学术性研究,单纯为了娱乐.看不惯我就直说,反正我不改.
宝剑锋从磨砺出,梅花香自苦寒来.