动画组 CAAnimationGroup

上篇博客http://blog.csdn.net/cocoarannie/article/details/10413301介绍了核心动画中的基本动画(CABasicAnimation)和关键帧动画(CAKeyframeAnimation),还有一个比较常用的就是动画组(CAAnimationGroup)
所谓的动画组就是将一些动画组合起来给layer使其的动画更丰富灵活。
它很简单,就是为其animations属性赋值一个动画数组。
- (void)demoAnimationGroup
{static NSString * const kCAPostionKeyPath = @"position";static NSString * const kCAOpacityKeyPath = @"opacity";static NSString * const kCARotationKeyPath = @"transform.rotation";static NSString * const kCAScaleKeyPath = @"transform.scale";UIBezierPath *path = [UIBezierPath bezierPath];[path moveToPoint:_demoView.layer.position];[path addCurveToPoint:CGPointMake(260, 400) controlPoint1:CGPointMake(0, 460) controlPoint2:CGPointMake(320, 0)];//路径动画CAKeyframeAnimation *posAnimation = [CAKeyframeAnimation animationWithKeyPath:kCAPostionKeyPath];posAnimation.path = path.CGPath;posAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];//透明度动画CABasicAnimation *opaAnimation = [CABasicAnimation animationWithKeyPath:kCAOpacityKeyPath];opaAnimation.duration = 2.0f;opaAnimation.toValue = @(0.3f);opaAnimation.autoreverses = YES;//旋转动画CABasicAnimation *rotAnimation = [CABasicAnimation animationWithKeyPath:kCARotationKeyPath];rotAnimation.duration = 2.0f;rotAnimation.toValue = @(M_PI);rotAnimation.autoreverses = YES;//缩放动画CABasicAnimation *scaAnmaiton = [CABasicAnimation animationWithKeyPath:kCAScaleKeyPath];scaAnmaiton.duration = 2.0f;scaAnmaiton.toValue = @(1.5f);scaAnmaiton.autoreverses = YES;//设置动画组CAAnimationGroup *group = [CAAnimationGroup animation];group.animations = @[posAnimation, opaAnimation, rotAnimation, scaAnmaiton];group.duration = 4.0f;group.removedOnCompletion = NO;group.fillMode = kCAFillModeForwards;[_demoView.layer addAnimation:group forKey:nil];
}

这个动画组对demoView的layer加入了一些同时进行的动画,比如双控制点的贝塞尔路径,透明度的渐隐渐明,旋转以及缩放等。

CATransition

转场动画几乎在所有的APP上都能遇见,经常用于视图控制器的切换或者单视图控制器的页面切换等,也可以在自定义UIStoryboardSegue中来加入动画效果。
它也是CAAnimation的子类,能为图层提供移出屏幕和移入的动画效果。
其常用属性为
type 过渡类型
subtype 过渡类型的子类型,方向设置
其中过渡类型有很多,最初有四个版本,后来又加入了一些,以字符串形式设置。
最初的四个:fade,push,moveIn,reveal
以后加入的效果则更加丰富和炫目,有 cube, oglFlip, suckEffect, rippleEffect, pageCurl, pageUnCurl, cameraIrisHollowOpen, cameraIrisHollowClose。
- (void)viewTransition
{static NSString * const kCATransitionTypeFlip = @"oglFlip";     //翻页效果CATransition *transition = [CATransition animation];transition.type = kCATransitionTypeFlip;transition.subtype = kCATransitionFromRight;transition.duration = 1.5f;[_transitionOrangeView.layer addAnimation:transition forKey:nil];[self.view performSelector:@selector(sendSubviewToBack:) withObject:_transitionOrangeView afterDelay:1.0f];
}

这个方法简单的实现了view翻页的效果,当然目前控制器的根view只有一个subview,所以使用sendSubviewToBack的方法后显示的还是这个view,但是看到了动画效果。

现在UIView的转场动画有了更方便的类方法
+ transitionWithView:duration:options:animations:completion:
+ transitonFromView:toView:duration:options:completion:
这两个方法参数加入了苹果推荐的块代码,也让转场动画都在一个方法中进行处理,也对动画结束进行了处理,更加方便易用。
- (void)anotherTransition
{_transitionBlueView = [[UIView alloc] initWithFrame:self.view.bounds];_transitionBlueView.backgroundColor = [UIColor blueColor];[UIView transitionFromView:_transitionOrangeViewtoView:_transitionBlueViewduration:1.0foptions:UIViewAnimationOptionTransitionCrossDissolve   completion:nil];
}

代码很简洁和易读。

不过要注意的一点是,这里的参数并不是很多,而且我并没有对蓝色视图通过addSubview加载到self.view中,也没有对橘色视图进行removeFromSuperview,这些方法都封装在这个类方法中隐式进行了。
Demo示例点击打开链接
以上为本篇博客全部内容,欢迎指正和交流。转载请注明出处~

核心动画中的动画组和转场动画相关推荐

  1. android+原点扩散动画,捋一捋Android的转场动画

    捋一捋Android的转场动画 由于录制的gif过大,导致CSDN部分gif无法显示,可以传送到GitHub查看本篇博客 背景 随着 Material Design设计概念的提出,使得很多的开发过程中 ...

  2. iOS自定义转场动画(1)——自定义Push转场动画

    版本:Xcode 7.0.1 语言:Objective-C 转场动画就是viewController之间切换的动画. 主要有以下三种自定义方法: 列Push & Pop Modal Segue ...

  3. 动画中的View的点击判断

    本文内容为原创,转载者请注明原始作者以及原始出处,以避免版权纠纷! 在开发Android应用过程中,我曾遇到过下面的问题:       假设有一个View,它在做一系列复杂的.组合的Tween动画(平 ...

  4. android 转场动画 监听,Android 中的转场动画及兼容处理

    Android 中的动画有很多,除了在一个界面上使用帧动画.属性动画将一个或多个 View 进行动画处理以外,还可以用于两个界面之间过渡.跳转.在 Android 5.0 之前,我们已经有了 over ...

  5. 定格动画中运用的计算机技术是,定格动画中现代技术发展与应用.doc

    定格动画中现代技术发展与应用 定格动画中现代技术的发展和应用 [摘 要]定格动画的发展是有目共睹的,在继承传统定格动画制作手法的同时,未来还需完善定格动画更先进的制作手段.要充分利用现代科技,完善造型 ...

  6. (0030) iOS 开发之跳转之转场动画

    demo: 1 iOS  ~ ViewController的Push,Pop和Present,Dismiss转场动画 // http://blog.csdn.net/zhangao0086/artic ...

  7. iOS自定义转场动画实战讲解

    转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerAnimated:completio ...

  8. 控制器之间跳转实现转场动画,动画控制器概念

    在iOS7以前,开发者如果希望定制导航控制器推入推出视图时的转场动画,一般都只能通过子类化UINavigationController或者自己编写动画代码去覆盖相应的方法,现在iOS7为开发者带来了福 ...

  9. 八 iOS之 CATransition (转场动画)

    CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果. 动画转场类型 类型字符串 效果说明 关键字 方向 fade 交叉淡化过渡 YES p ...

最新文章

  1. 如何关闭Visual Assist?
  2. 【BASIS系列】SAP Basis系统管理中重置用户缓冲哪些需要注意
  3. OpenCV3源代码目录解析(算法模块解析 和 示例目录解析)
  4. 1.5 matlab常量与变量
  5. ie 不执行回调函时_javascript引擎执行的过程的理解--执行阶段
  6. golang go mod包管理:安装第三方包的三种方式(go get/go mod download/go mod vendor)
  7. 组合CPU和DRAM
  8. vrm华为_华为-笔记本电脑如何安装FusionCompute虚拟化平台?
  9. qwebkit 网页无法加载图片_网页图片无法显示了?这样就能解决
  10. 【工具】Sublime Text 自动保存功能
  11. (转)遇到重复的Maven项目初始配置,就要创建自己的Maven Archetype
  12. Audio 加载hal (loadHwModule)
  13. Revit2020下载Revit2020安装教程
  14. 利用VBB仿真——实现LED+数字键盘密码验证
  15. 『水晶报表』实现打印
  16. 华为c语言笔试题下载,2005年华为招聘--C语言笔试试题
  17. 我对八种常见数据结构的理解
  18. 刚刚用鸿蒙跑了个“helloworld”!我特么怀疑人生了
  19. 解决AppBarLayout嵌套WebView滑动冲突的问题
  20. 微信小程序 #项目笔记# | 从0到1实现外卖点餐系统小程序

热门文章

  1. 修改mysql端口号
  2. android 百度语音 ui,在Android Studio下使用百度语音识别的一个简单例子
  3. UI技术经验分享 留白之设计
  4. editplus字符转16进制_EditPlus–一款小巧功能强大的老牌代码文本编辑器
  5. 致ITFriend用户
  6. 德国明斯特大学Armido Studer课题组Angew:协同催化实现醛和酮的形式β-C-H键芳基化反应...
  7. 电工学学习笔记---时间常数部分
  8. Python模拟浏览器登录淘宝
  9. 如何增强员工的安全感和归属感(一个案例分析)
  10. 一个收费4888元的项目,是个什么鬼?