动画组 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. matlab内存管理(二)
  2. Asp.net调用RAR压缩 解压文件
  3. 【机器学习】朴素贝叶斯代码练习
  4. String类能被继承吗,为什么?
  5. 计算机管理档案有什么好处,利用资料管理系统管理档案有什么好处
  6. Wireshark 实用过滤表达式
  7. 在ASP.NET Core中使用的ML.NET模型构建器入门
  8. delphi启动ie调用本地html传参数_年轻人不讲武德啊!了解下浏览器如何解析html、css,js
  9. android gps信号检测工具,【分享】GPS Test Plus全球GPS定位卫星信号检测工具
  10. excel在线_EXcel怎么把中文翻译英文?简单2招秒翻译
  11. 数据库实体、关系(一对一实现方式、一对多实现方式、多对多实现方式)
  12. sas sata ssd硬盘类型,硬盘接口
  13. CSDN 空间:“迷你博客”很迷人(2)
  14. 蓝牙冒充攻击(BIAS),无线安全不可忽视
  15. Python的numpy中axis=0、axis=1、axis=2解释
  16. CPU 手机CPU 显示 天梯图
  17. 智能车入门——跑车前的零碎知识<新手从零做车>
  18. httprunner3.x使用过程中遇到的问题
  19. 百度Sugar BI 数据可视化里的标签页组件如何实现
  20. 数据结构:递归算法时间复杂度与空间复杂度计算方法

热门文章

  1. 使用UltraISO制作linux系统安装u盘启动盘
  2. Vue压缩图片插件——localResizeIMG(简称lrz)
  3. Origin学习笔记——(1)初识Origin
  4. Elasticsearch 通配符查询
  5. 关于angular1与angular2的应用区别
  6. 已购买 Office 重新下载安装
  7. 领扣LintCode问题答案-59. 最接近的三数之和
  8. Eric6安装问题解决
  9. 简单财务软件有哪些功能?
  10. oracle如何撤销权限,Oracle授予/撤销权限