iOS:CALayer的隐式动画的详解

简介:
CALayer的隐式动画属性:
•每一个UIView内部都默认关联着一个CALayer,称这个Layer为Root Layer。所有的非Root Layer都存在着隐式动画,隐式动画的默认时长为1/4秒。
•当修改非Root Layer的部分属性时,相应的修改会自动产生动画效果,能执行隐式动画的属性被称为“可动画属性”,诸如:
1.bounds: 缩放动画
2.position: 平移动画
3.opacity: 淡入淡出动画(改变透明度)
•在文档中搜素animatable可以找到所有可动画属性
•如果要关闭默认的动画效果,可以通过动画事务方法实现:

[CATransaction begin];

[CATransaction setDisableActions:YES];

// ...一些其他的代码<#code#>

[CATransaction commit];

 

具体的演示实例如下:只需要在控制器ViewController类中写代码即可.......

操作目的:当我们触摸屏幕时,子层会动画跑到点击的位置停留下来,同时动画的过程中,它的透明度和形变也可以发生改变。

 

操作步骤:

1.创建子层,设置属性,然后添加到根层

复制代码
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //创建子层并设置属性(使用了默认的锚点)
    self.subLayer = [[CALayer alloc]init];
    self.subLayer.bounds = CGRectMake(0, 0, 100, 100);
    self.subLayer.position = CGPointMake(100, 100);
    self.subLayer.backgroundColor = [[UIColor redColor]CGColor];
    
    //将子层添加到根层
    [self.view.layer addSublayer:self.subLayer];
}
复制代码

2.重写-(void)touchBegan:(NSSet*)touches withEvent:(UIEvent *)event方法,进行触摸事件的处理,动画过程中处理的代码如下:

  //取出当前点

    //取出当前点
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:self.view];

  //开始动画事物([CATransaction setDisableActions:YES]关闭隐式动画后,子层直接跳到了触击位置,没有了移动动画流程)

    //动画事物开始
    [CATransaction begin];
    
    //关闭隐式动画
    //[CATransaction setDisableActions:YES];

  //设置动画持续时间为1秒

    [CATransaction setAnimationDuration:1.0];

 //设置子层的动画后的位置

复制代码
    //设置子层的位置为当前点坐标
    self.subLayer.position = location;
    
    //CGRect frame = self.subLayer.frame;  
    /*
    虽然CALayer可以使用frame,但最好还是使用bounds和position。为层设置动画时,用bounds和position会方便一点
    */
    //self.subLayer.frame = CGRectMake(location.x, location.y, frame.size.width, frame.size.height);
复制代码

 //设置子层透明度的变化值,透明度由1.0变成了0.5

    //设置透明度
    self.subLayer.opacity = 0.5;

 //设置子层变形,以x为旋转轴旋转45度

    //将子层以x轴为轴旋转45度
    self.subLayer.transform = CATransform3DMakeRotation(M_PI_4, 1, 0, 0);

 //提交动画事物

    //动画事物提交
    [CATransaction commit];

 

3.演示结果如下:

没有任何触发时的截图:                                         在屏幕右下角点击一下,子层慢慢移动了此位置,并且透明度慢慢变浅,形变产生

   

 

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类:  iOS高级

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4882960.html,如需转载请自行联系原作者
相关文章
|
iOS开发
iOS 动画绘制圆形
iOS 动画绘制圆形
86 1
|
编译器 iOS开发 异构计算
读iOS核心动画笔记
读iOS核心动画笔记
58 0
|
1月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
56 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实现自定义按钮动画,当用户点击按钮时,按钮将从圆形变为椭圆形并从蓝色渐变到绿色,释放后恢复原状。文中详细展示了代码实现过程及动画平滑过渡的技巧,帮助读者提升应用的视觉体验与特色。
66 11
|
4月前
|
Swift iOS开发 UED
【绝妙创意】颠覆你的视觉体验!揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【8月更文挑战第13天】本文通过一个具体案例,介绍如何使用Swift与UIKit在iOS应用中创建独特的按钮动画效果。当按钮被按下时,其形状从圆形变化为椭圆形,颜色则从蓝色渐变为绿色;释放后,动画反向恢复原状。利用UIView动画方法及弹簧动画效果,实现了平滑自然的过渡。通过调整参数,开发者可以进一步优化动画体验,增强应用的互动性和视觉吸引力。
59 7
|
iOS开发
iOS 常用阅读软件打开书籍的转场动画
iOS 常用阅读软件打开书籍的转场动画
98 0
|
7月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
143 0
|
API iOS开发
iOS 自定义转场动画 UIViewControllerTransitioning
iOS 自定义转场动画 UIViewControllerTransitioning
102 0
|
iOS开发
iOS - 个人中心果冻弹性下拉动画
iOS - 个人中心果冻弹性下拉动画
264 0
iOS - 个人中心果冻弹性下拉动画