iOS:核心动画之动画组CAAnimationGroup

简介:
CAAnimationGroup——动画组
动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行
属性说明:
–animations:用来保存一组动画对象的NSArray
默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间
 
具体的实例如下:
实现功能:在创建的动画组中存入两个基本动画,一个是沿着Z轴旋转360度的动画,另一个是放大2倍的动画,这两个动画并发执行,动画结束后,均不在恢复原状。
代码如下:
//声明属性
#import "ViewController.h"

@interface ViewController ()
@property (strong,nonatomic)CALayer *subLayer; //声明核心动画子层
@end
//创建动画子层,同时创建触摸手势,添加的手势事件处理的是动画组
复制代码
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //创建子层
    self.subLayer = [CALayer layer];
    self.subLayer.bounds = CGRectMake(100, 100, 100, 100);
    self.subLayer.position = CGPointMake(100, 100);
    self.subLayer.backgroundColor = [[UIColor redColor]CGColor];
    [self.view.layer addSublayer:self.subLayer];
    
    
    
    //添加触摸手势
    UITapGestureRecognizer  *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)];
    tap.numberOfTapsRequired = 1;
    tap.numberOfTouchesRequired = 1;
    [self.view addGestureRecognizer:tap];
}
复制代码
//定义方法,返回一个用于旋转的基本动画
复制代码
#pragma mark 返回一个实现旋转的基本动画
-(CABasicAnimation*)rotationAnimationFromValue:(CGFloat)fromValue toValue:(CGFloat)tovalue
{
    //创建基本动画(用于旋转)
    CABasicAnimation *baseAnimation = [[CABasicAnimation alloc]init];
    
    //设置形变属性值为旋转属性值
    baseAnimation.keyPath = @"transform.rotation.z";
    
    //设置旋转初值
    baseAnimation.fromValue = @(fromValue);
    
    //设置旋转终值
    baseAnimation.toValue = @(tovalue);
    
    //设置旋转动画持续时间
    baseAnimation.duration = 1.0f;
    
    
    //设置动画旋转结束后不恢复原状
    baseAnimation.removedOnCompletion = NO;
    baseAnimation.fillMode = kCAFillModeForwards;
    
    return baseAnimation;
}
复制代码
//定义方法,返回一个用于放缩的基本动画
复制代码
#pragma mark 返回一个实现放缩的基本动画
-(CABasicAnimation*)scaleAnimationFromValue:(CGFloat)fromValue toValue:(CGFloat)tovalue
{
    //创建基本动画(用于放缩)
    CABasicAnimation *animScale = [[CABasicAnimation alloc]init];
    
    //设置形变属性为放缩属性值
    animScale.keyPath = @"transform.scale";
    
    //设置放缩初值
    animScale.fromValue = @(fromValue);
    
    //设置放缩终值
    animScale.toValue = @(tovalue);
    
    //设置放缩动画持续时间
    animScale.duration = 1.0f;
    
    //设置动画放缩结束后不恢复原状
    animScale.removedOnCompletion = NO;
    animScale.fillMode = kCAFillModeForwards;
    
    return animScale;
}
复制代码
//处理触摸手势的事件,创建动画组,并将上面返回的两个动画对象添加进去,然后并发的执行动画组
复制代码
#pragma mark -tap触摸事件
-(void)tap:(UITapGestureRecognizer *)sender
{

    //方式一:依次调用各个的动画,效果也是可以的
    //旋转360度
    //[self.subLayer addAnimation:[self rotationAnimationFromValue:-M_PI toValue:M_PI] forKey:@"baseAnimation"];
//放大2倍 //[self.subLayer addAnimation:[self scaleAnimationFromValue:1.0 toValue:2.0] forKey:@"animScale"];
//方式二:并发执行动画组中的所有动画
//创建动画组 CAAnimationGroup *Group = [[CAAnimationGroup alloc]init]; //将各种动画对象加入数组中 NSArray *animations = @[[self rotationAnimationFromValue:-M_PI toValue:M_PI],[self scaleAnimationFromValue:1.0 toValue:2.0]]; //动画数组中的动画的属性受动画组的统一控制 Group.animations = animations; //设置动画组中所有动画的持续时间 Group.duration = 1.0; //设置动画组中所有动画运行结束后不恢复原状 Group.removedOnCompletion = NO; Group.fillMode = kCAFillModeForwards; //往子层中添加动画组 [self.subLayer addAnimation:Group forKey:@"Group"]; }
复制代码
演示结果如下:
开始时:
                 
某一时刻:(由于动画过程中截取的图,截图比较大一些)  
   
           
结束时:
程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类: iOS高级
 
 
本文转自当天真遇到现实博客园博客,原文链接: http://www.cnblogs.com/XYQ-208910/p/4886576.html,如需转载请自行联系原作者
相关文章
|
iOS开发
iOS 动画绘制圆形
iOS 动画绘制圆形
85 1
|
编译器 iOS开发 异构计算
读iOS核心动画笔记
读iOS核心动画笔记
58 0
|
1月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
55 1
|
2月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
55 5
|
3月前
|
Swift iOS开发 UED
揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【9月更文挑战第5天】本文通过具体案例介绍如何在iOS应用中使用Swift与UIKit实现自定义按钮动画,当用户点击按钮时,按钮将从圆形变为椭圆形并从蓝色渐变到绿色,释放后恢复原状。文中详细展示了代码实现过程及动画平滑过渡的技巧,帮助读者提升应用的视觉体验与特色。
64 11
|
4月前
|
Swift iOS开发 UED
【绝妙创意】颠覆你的视觉体验!揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【8月更文挑战第13天】本文通过一个具体案例,介绍如何使用Swift与UIKit在iOS应用中创建独特的按钮动画效果。当按钮被按下时,其形状从圆形变化为椭圆形,颜色则从蓝色渐变为绿色;释放后,动画反向恢复原状。利用UIView动画方法及弹簧动画效果,实现了平滑自然的过渡。通过调整参数,开发者可以进一步优化动画体验,增强应用的互动性和视觉吸引力。
57 7
|
iOS开发
iOS 常用阅读软件打开书籍的转场动画
iOS 常用阅读软件打开书籍的转场动画
97 0
|
7月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
143 0
|
API iOS开发
iOS 自定义转场动画 UIViewControllerTransitioning
iOS 自定义转场动画 UIViewControllerTransitioning
102 0
|
iOS开发
iOS - 个人中心果冻弹性下拉动画
iOS - 个人中心果冻弹性下拉动画
263 0
iOS - 个人中心果冻弹性下拉动画