微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iPhone 实现动画效果

(虽然标记的是原创,但是大部分都是书上的,个人学习过程中,学完这段写点儿东西总结下,本想贴上demo程序的,竟然没找到上传附件的地方。。。)

iPhone中实现动画,主要有两种方式:UIView的动画块和Core Animation的CATransition类。

 

1、UIView的动画块 

之所以称为动画块,是因为UView动画是成块运行的,也就是说作为完整的事务一次性运行。

beginAnimation:context:标志动画块开始;

commitAnimations标志动画块结束。(这个commit多少已经暗示这个操作是事务性的)

这里面通常涉及4个操作:

beginAnimation:context:标志动画块开始

setAnimationCurve:定义动画加速或减速的方式,有四种,ease-in/ease-out,ease-in,linear,ease-out

setAnimationDuration:定义动画持续时间(以秒为单位)

commitAnimations:标志动画块结束

所有这些操作都是针对UIView的,或者说是UIView的类函数。给段代码示例:

 

(这里面设置了动画的delegate,在动画结束后执行animationFinished:函数

UIView除了实现上面这种简单的动画,还支持视图的翻转。例如在上面代码的[UIView commitAnimations]前加上下面这句,便可以实现视图的翻转(翻转后的试图中,imageView的大小变为原来的0.25倍):

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];

其中,参数UIViewAnimationTransitionFlipFromLeft定义了翻转的方式。参见文后的表格,列出了所有的翻转方式。

2、Core Animation (CA)

这种方式提供了高度灵活的动画解决方案(书上说的,我还没体会到有多灵活。。。)。CA只是针对图层,不针对视图。

这里说的图层就是视图的认图层([myView layer],UIView的文档中,关于这个属性也没多说什么,只是说这个属性以uivew作为delegate,并且该属性不可能为空)。下面展示一段用CA实现视图过渡的代码

 

代码可以看出,基本方式和第1点介绍的UIView的动画块差不多,先是开始,然后设置视图的变化,然后结束。

CATransition的type有四种,见最后的视图过渡类型表格。

subtype也是四种,分别是从上、下、左、右进入。

其实,上面这段代码,并不是使用CA的一般方式(或者说通用方式),下面展示下一般方式:

 

(这段代码纯粹书上借鉴的,来自于www.lucasnewman.com中的一个示例。)

代码中使用了key path,KVC的强大又一次体现。

附录:Cocoa中视图过渡的方式

 

UIViewAnimationTransitionFlipFromLeft UIView过渡,从左向右翻转

UIViewAnimationTransitionFlipFromright UIView过渡,从右向左翻转

UIViewAnimationTransitionFlipCulUp UIView过渡,从下向上翻转,翻页效果,非常不错

UIViewAnimationTransitionFlipCulDown UIView过渡,从上向下翻转

 

kCATransitionFade CA交叉淡化过渡

kCATransitionMoveIn CA过渡,新视图移到旧视图上

kCATransitionPush CA过渡,新视图将旧视图挤开

kCATransitionRevealCA过渡,将旧视图移开,显示出下面的新视图

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐