`
janedoneway
  • 浏览: 581955 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Core Animation如何使显式动画结束时的值直接作用Layer

 
阅读更多

(1)使用隐式动画会直接改变layer的属性值,如:

imageView.layer.opacity = 0.3;

 

(2)使用显式动画,动画结束时不影响动画前的layer属性值,如:

 

    CABasicAnimation *opacityAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];

    opacityAnim.fromValue = [NSNumber numberWithFloat:1.0];

    opacityAnim.toValue = [NSNumber numberWithFloat:0.3];

    opacityAnim.removedOnCompletion = YES;

    opacityAnim.duration = 2;

    [imageView.layer addAnimation:opacityAnim forKey:nil];

这里的动画结束后,Layer的opacity的值仍为原值:1.0

 

(3)如果想显式动画结束时,其值为动画结束时的值,需要在显式动画后加上隐式动画代码来真正更改layer属性值,如:

 

    CABasicAnimation *opacityAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];

    opacityAnim.fromValue = [NSNumber numberWithFloat:1.0];

    opacityAnim.toValue = [NSNumber numberWithFloat:0.3];

    opacityAnim.removedOnCompletion = YES;

    opacityAnim.duration = 2;

    [imageView.layer addAnimation:opacityAnim forKey:nil];

    imageView.layer.opacity = 0.3;

 

 

 

----------------------------------------------------------------------------

----------------------------------------------------------------------------

// 代码备忘

 

    CGPoint fromPoint = imageView.center;

    UIBezierPath *movePath = [UIBezierPath bezierPath];

    [movePath moveToPoint:fromPoint];

     CGPoint toPoint = CGPointMake(240, 310);//position

    [movePath addQuadCurveToPoint:toPoint

                     controlPoint:CGPointMake(toPoint.x,fromPoint.y)];

 

 

 

    CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"];

    moveAnim.path = movePath.CGPath;

    moveAnim.removedOnCompletion = YES;

 

    CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform"];

    scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)];

    scaleAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.5, 0.5, 1.0)];

    scaleAnim.removedOnCompletion = YES;

 

    CABasicAnimation *opacityAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];

    opacityAnim.fromValue = [NSNumber numberWithFloat:1.0];

    opacityAnim.toValue = [NSNumber numberWithFloat:0.5];

    opacityAnim.removedOnCompletion = YES;

 

    CAAnimationGroup *animGroup = [CAAnimationGroup animation];

    animGroup.animations = [NSArray arrayWithObjects:moveAnim,scaleAnim,opacityAnim, nil];

    animGroup.duration = 1;

    animGroup.removedOnCompletion = YES;

    [imageView.layer addAnimation:animGroup forKey:nil];

 

    self.imageView.layer.opacity = 0.5;

    self.imageView.layer.transform = CATransform3DMakeScale(0.5, 0.5, 1.0);

    self.imageView.layer.position = CGPointMake(240, 310);

分享到:
评论

相关推荐

    Core Animation(二)动画基础部分

    **隐式动画**是Core Animation的一个关键特性,它使得当你改变CALayer的属性时,系统默认会自动添加一个平滑的过渡动画。例如,当你更改图层的位置、大小或透明度时,如果没有明确指定动画,系统会默认应用一个平滑...

    核心动画编程指南(core animation)

    Core Animation支持隐式动画和显式动画。隐式动画是指系统自动为某些属性的改变提供动画效果。显式动画则需要开发者明确地创建和配置动画对象。动画的开始和结束都可以通过API进行控制。 ### 图层的行为 图层的...

    core animation cook book

    ### 核心动画烹饪书(Core Animation Cook Book) #### 核心知识点概览 本文档主要聚焦于苹果公司的Core Animation框架的应用与实践。通过一系列的示例和教程,旨在帮助开发者掌握并运用Core Animation来创建丰富...

    隐式动画演示

    6. **自定义动画**:尽管隐式动画方便快捷,但有时可能需要更精细的控制,这时可以创建显式动画(CAAnimation)。显式动画允许设置更多动画参数,如重复次数、延迟、代理等。 在"04-隐式动画"的示例项目中,你可能...

    iOS核心动画高级技巧(iOS Core Animation: Advanced Techniques)

    隐式动画利用了Core Animation的默认动画行为,而显式动画则需要开发者明确指定动画的各个方面,例如动画类型、持续时间等。 8. 动画组合(Animation Groups)和过渡(Transitions)是创建复杂动画效果的技巧。动画...

    core animation guide

    - **停止正在运行的显式动画**:如果需要在动画过程中停止动画,可以调用特定的方法来中断动画。 - **同时动画多个变化**:可以同时对多个层属性进行动画处理,以实现更复杂的动画效果。 - **检测动画结束**:通过...

    iOS CoreAnimation

    - 动画类和定时的介绍,包括隐式动画和显式动画的定义和启动。 - 层动作和动作对象的角色,以及定义动作键搜索模式。 - 采用CAAction协议,覆盖隐式动画,临时禁用动作。 - 事务的概念,包括隐式事务和显式事务...

    核心动画编程指南.pdf

    **核心动画(Core Animation)** 是苹果公司提供的一套强大而灵活的动画框架,主要应用于iOS和macOS平台,为开发者提供了创建高性能且视觉效果丰富的动画的能力。本指南旨在深入探讨核心动画的工作原理及其在实际...

    谈谈iOS Animation

    要进行显式动画,可以使用CATransaction进行事务管理,确保多个animatable属性的变化能够同步进行。 从以上内容可见,iOS动画的实现不仅涉及到对CALayer的深入了解,还要对动画的时间模型、事务管理以及渲染机制...

    iOS 核心动画编程指南

    动画(Animation)是整个指南的中心内容之一,介绍了动画类和时序、隐式动画和显式动画以及开始和结束显式动画的方法。隐式动画是系统根据属性的改变自动执行的动画效果,而显式动画则需要开发者明确指定动画的属性...

    iOS 核心动画

    核心动画是Objective-C语言编写的,并通过Core Animation框架提供给开发者使用,目的是为了让开发者能够以高效且简洁的方式实现应用程序界面的动态效果。 核心动画概念部分介绍了动画编程的基本知识。动画在iOS开发...

    ios-核心动画高级技巧

    在iOS开发中,Core Animation是苹果提供的一种强大的图形渲染技术,用于创建丰富的视觉效果和流畅的动画。这个“ios-核心动画高级技巧”主题涵盖了几个关键概念,包括图层树、寄宿树、图层几何、隐式动画和显示动画...

    iOS动画--我们可以和应该做哪些动画

    - **显式动画**:通过`CABasicAnimation`等类手动创建并添加动画。 3. **优化技巧** - **减少重绘**:合理设置动画的`removeOnCompletion`属性,避免不必要的重绘操作。 - **异步动画**:对于不影响UI渲染的操作...

    iOS核心动画

    4. 显式动画(Explicit Animation):开发者可以精确控制动画的开始、结束、持续时间以及动画曲线等,提供更丰富的动画体验。 5. 动画组合(Animation Composition):通过组合多个动画,可以创建复杂的动画序列,...

    iOS上的图形和动画处理

    它提供了层(Layer)的概念,通过层来控制视图的外观变化,并支持多种动画类型,如隐式动画和显式动画等。 #### 动画处理 1. **基础动画** - **隐式动画**:当改变一个层的属性时,如果设置了该属性的动画效果,...

    iOS核心动画高级技巧

    Core Animation提供了多种方式来实现高级动画效果,包括隐式动画、显式动画、动画组、过渡以及使用`CAMediaTiming`协议控制动画的时间属性。另外,还可以通过代码手动控制动画,如自定义动画速度和缓冲函数。 ### ...

    ios核心动画高级技巧

    隐式动画和显式动画是动画章节的另一个重点,讲述了图层行为、呈现与模型、属性动画、动画组和过渡的相关知识。此外,如何在动画过程中取消动画,以及基于定时器的动画和定时帧物理模拟也包含在内。 性能调优是一个...

    ios核心动画pdf

    - 默认值可以帮助图层在没有设置具体属性值时使用默认配置。 **10.3 封装约定** - 定义了如何使用键值编码来访问图层属性。 **10.4 支持结构字段的关键路径** - 支持对复杂数据结构的访问。 #### 十一、图层...

    iOS动画高级技巧

    #### 显式动画 **属性动画** 属性动画是最基本的动画形式,它通过改变图层的某个属性值来实现动画效果。属性动画可以单独使用,也可以与其他动画组合使用。 **动画组** 动画组允许将多个动画组合在一起同时执行...

Global site tag (gtag.js) - Google Analytics