iOS动画:UIView动画和CALayer动画(CABasicAnimation、CAKeyframeAnimation的使用)

简介: <p style="padding-top:0px; padding-bottom:0px; margin-top:0px; margin-bottom:0px; clear:both; height:auto; overflow:hidden; color:rgb(44,44,44); font-family:宋体,'Arial Narrow',arial,serif; font-siz

iOS中的动画有两种实现方式,一种是UIView来实现动画,另一种动画是通过CALayer来实现,下面介绍两种动画的简单实现:



一、UIView动画的实现

   UIView使用Context来实现动画

关键代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//参数1 动画名称 参数2 要实现动画的对象上下文
     
     [UIView beginAnimations:@ "attribute"  context:_showImageView];
     
     //设置动画的时间
     [UIView setAnimationDuration:1.0f];
     
     //设置动画延迟时间
//    [UIView setAnimationDelay:2];
     
     //设置视图center 实现试图移动动画
     _showImageView.center = CGPointMake(100, 100);
     
     //设置alpha值:视图透明度
     _showImageView.alpha = 0.2f;
     
     //设置背景颜色
     _showImageView.backgroundColor = [UIColor greenColor];
     
     //UIView动画 设置代理
     [UIView setAnimationDelegate:self];
     
     //动画将要开始代理方法
     [UIView setAnimationWillStartSelector:@selector(animationWillStart:context:)];
     
     //动画已经结束代理方法
     [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
     
     //提交动画设置,执行动画
     [UIView commitAnimations];



使用Block实现的动画:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//UIView动画, 使用Block实现
     [UIView animateWithDuration:1.0f animations:^{
         
         //通过设置translation 实现视图的偏移
         if  ([self.mySwitch isOn]) {
             
             //基于上一次的translation
             _showImageView.transform = CGAffineTransformTranslate(_showImageView.transform, 50, 0);
         else  {
             
             //基于原始的translation
             _showImageView.transform = CGAffineTransformMakeTranslation(-50, 0);
         }
     }];



二、CALayer动画的实现

CABasic动画的实现:根据初始位置和结束位置确定动画

1
2
3
4
5
6
//CABasic 有两个属性 fromValue 动画开始值,toValue动画结束值
     CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@ "position" ];
     [animation1 setDuration:2];
     animation1.fromValue = [NSValue valueWithCGPoint:CGPointMake(150, 150)];
     animation1.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
     [_imageView.layer addAnimation:animation1 forKey:@ "position" ];



创建一组动画:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//创建组动画对象
     CAAnimationGroup *group = [CAAnimationGroup animation];
     
     //CABasic动画
     CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@ "transform.scale.y" ];
     animation1.fromValue = @1.5;
     animation1.toValue = @0.5;
     
     //关键帧动画
     CAKeyframeAnimation *animation2 = [CAKeyframeAnimation animationWithKeyPath:@ "position" ];
     animation2.values = @[[NSValue valueWithCGPoint:CGPointMake(100, 100)],
                          [NSValue valueWithCGPoint:CGPointMake(200, 150)],
                          [NSValue valueWithCGPoint:CGPointMake(100, 200)],
                          [NSValue valueWithCGPoint:CGPointMake(200, 250)]];
     
     //group添加动画数组,group中动画对象并发执行
     [group setAnimations:@[animation1, animation2]];
     [group setDuration:4.0f];
     [_imageView.layer addAnimation:group forKey:@ "group" ];


目录
相关文章
|
编译器 iOS开发 异构计算
读iOS核心动画笔记
读iOS核心动画笔记
100 0
|
8月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
158 1
|
9月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
135 5
|
10月前
|
Swift iOS开发 UED
揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【9月更文挑战第5天】本文通过具体案例介绍如何在iOS应用中使用Swift与UIKit实现自定义按钮动画,当用户点击按钮时,按钮将从圆形变为椭圆形并从蓝色渐变到绿色,释放后恢复原状。文中详细展示了代码实现过程及动画平滑过渡的技巧,帮助读者提升应用的视觉体验与特色。
165 11
|
11月前
|
Swift iOS开发 UED
【绝妙创意】颠覆你的视觉体验!揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【8月更文挑战第13天】本文通过一个具体案例,介绍如何使用Swift与UIKit在iOS应用中创建独特的按钮动画效果。当按钮被按下时,其形状从圆形变化为椭圆形,颜色则从蓝色渐变为绿色;释放后,动画反向恢复原状。利用UIView动画方法及弹簧动画效果,实现了平滑自然的过渡。通过调整参数,开发者可以进一步优化动画体验,增强应用的互动性和视觉吸引力。
129 7
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
189 0
|
API iOS开发
iOS 自定义转场动画 UIViewControllerTransitioning
iOS 自定义转场动画 UIViewControllerTransitioning
228 0
|
iOS开发
iOS动画开发之五——炫酷的粒子效果(二)
iOS动画开发之五——炫酷的粒子效果
385 0
iOS动画开发之五——炫酷的粒子效果(二)
|
iOS开发
iOS动画开发之五——炫酷的粒子效果(一)
iOS动画开发之五——炫酷的粒子效果
426 0