首页 > 其他分享 >核心动画

核心动画

时间:2023-04-06 17:36:58浏览次数:35  
标签:动画 layer CABasicAnimation 核心 self 0.5 animation


1. 无缝动画


- (void)awakeFromNib {
    iphone每秒刷新60次, 屏幕刷新的时候就会触发
    CADisplayLink *link = [CADisplayLink displayLinkWithTarget:selfselector:@selector(setNeedsDisplay)];
    [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
}

- (void)drawRect:(CGRect)rect {
    
    self.snowY += 1;
    
雪花"];
将image 放在 view上的某一点上
    [image drawAtPoint:CGPointMake(0, self.snowY)];
    
    if (self.snowY > self.frame.size.height) {
        self.snowY = 0;
    }
}


2. CATransition

CATransition *animation = [CATransition animation];
    
动画种类
animation.type = @"pageCurl";

 //typedef enum : NSUInteger {
淡入淡出
推挤
揭开
覆盖
立方体
吮吸
翻转
波纹
翻页
反翻页
开镜头
关镜头
下翻页
上翻页
左翻转
右翻转
 //
 //} AnimationType;
 
 
    
动画种类的模式
animation.subtype = subtype;
 
// CA_EXTERN NSString * const kCATransitionFromRight
// CA_EXTERN NSString * const kCATransitionFromLeft
// CA_EXTERN NSString * const kCATransitionFromTop
// CA_EXTERN NSString * const kCATransitionFromBottom
 
 
    
animation.duration = 0.5;
    
[self.imageView.layer addAnimation:animation forKey:nil];
 
 
 
移除self.imageView.layer上的 所有动画
[self.imageView.layer removeAllAnimations];


3. CABasicAnimation

CABasicAnimation *animation1 = [CABasicAnimation animation];
animation1.keyPath = @"transform.rotation";
animation1.toValue = @M_PI_2;
        
CABasicAnimation *animation2 = [CABasicAnimation animation];
animation2.keyPath = @"transform.scale";
animation2.toValue = @0.5;
    
CABasicAnimation *animation3 = [CABasicAnimation animation];
animation3.keyPath = @"position";
animation3.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 250)];
    
//  创建动画组
CAAnimationGroup *group = [CAAnimationGroup animation];

//  动画数组
group.animations = @[animation1, animation2, animation3];
group.duration = 2;

// 保持动画结束效果
group.removedOnCompletion = NO;
group.fillMode = kCAFillModeForwards;
    
[self.redView.layer addAnimation:group forKey:nil];
    
// self.view  执行 UIViewAnimationOptionTransitionCurlUp  动画
[UIView transitionWithView:self.view duration:0.5 options:UIViewAnimationOptionTransitionCurlUp animations:nil completion:nil];


4. CAKeyframeAnimation

CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
        
// 动画要修改的属性 的
animation.keyPath = @"transform.rotation";
        
// 动画要修改的属性 的
animation.values = @[@(angleWithRotation(-5)), @(angleWithRotation(5)), @(angleWithRotation(-5))];
        
animation.duration = 0.5;
        
animation.repeatCount = MAXFLOAT;
        
// 动画结束后不移除动画效果
animation.removedOnCompletion = NO;
        
// 向图层添加 动画
[self.imageView.layer addAnimation:animation forKey:nil];


5. 图层动画

添加涂层
 - (void)createLayer {
 创建一个涂层
     CALayer *layer = [CALayer layer];
     
 设置尺寸(涂层的大小)
     layer.bounds = CGRectMake(0, 0, 100, 100);
     
    // 设置位置(锚点显示在position上)
     layer.position = CGPointMake(100, 100);
     
 设置颜色
     layer.backgroundColor = [UIColor redColor].CGColor;
     
 设置内容
阿狸头像"].CGImage;
     
 
 绕锚点旋转
    layer.anchorPoint = CGPointMake(0.5, 1);
 
 
 
     [self.mainView.layer addSublayer:layer];
     
 }
 
 
 
 
 
[UIView animateWithDuration:0.5 animations:^{
        
 缩放
    self.mainView.layer.transform = CATransform3DMakeScale(0.5, 0.5, 1);
        
 平移
    self.mainView.layer.transform = CATransform3DMakeTranslation(100, 100, 100);
        
 旋转
    self.mainView.layer.transform = CATransform3DMakeRotation(M_PI, 0, 1, 0);
 
}];


6.CABasicAnimation

CABasicAnimation *animation = [CABasicAnimation animation];
    
// 动画修改的属性 的
animation.keyPath = @"transform.scale";
    
// 动画修改的属性 的
animation.toValue = @0.5;
    
// 动画时长
animation.duration = 0.5;
    
// 动画重复次数
animation.repeatCount = MAXFLOAT;
    
// 动画结束后不移除动画效果
animation.removedOnCompletion = NO;
    
// 保持最新的位置
animation.fillMode = kCAFillModeForwards;
    
// 给图层添加动画
[self.layer addAnimation:animation forKey:nil];



标签:动画,layer,CABasicAnimation,核心,self,0.5,animation
From: https://blog.51cto.com/u_9527606/6173839

相关文章

  • 实现和CSS一样的easing动画?直接看Mozilla、Chromium源码!
    前言在上一篇丝滑的贝塞尔曲线:从数学原理到应用介绍贝塞尔曲线实现动画时给自己留了一个坑,实现的动画效果和CSS的transition-timing-function:cubic-bezier差别较大,如下图所示,红色为Linear、绿色为CSS的cubic-beizer、蓝色为自己实现的cbezier。本着有坑必填的原则,直接把Mozilla......
  • Insert a scratch project into a ppt (MSPowerPoinT file)在powerpoint中播放Scratch
    Insertascratchprojectintoappt(MSPowerPoinTfile)在powerpoint中播放Scratch动画Contributedbyliupeng,March01,20120Comments4BookmarksAsupersimplewaytoinsertasbtoappt,asfollows:超级简单的实现Scratch的sb文件在ppt中播放,具体......
  • golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏
    golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏。常用包常用包 说明fmt 实现格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数。io 实现了一系列非平台相关的IO相关接口和实现,比如提供了对os中系统相关的IO功能的封装。我们......
  • Redis核心知识之—— 时延问题分析及应对、性能问题和解决方法【★★★★★】...
     参考网址:Redis常见的性能问题和解决方法:http://www.searchdatabase.com.cn/showcontent_63439.htmRedis主从配置详细过程:http://sofar.blog.51cto.com/353572/861276 读后感:1、在架构设计中,有“分流”一招,说的是将处理快的请求和处理慢的请求分离来开,否则,慢的影响到了快的,让快的......
  • 第四十六篇 vue - 进阶主题 - 动画技巧
    动画技巧Vue提供了<Transition>和<TransitionGroup>组件来处理元素进入、离开和列表顺序变化的过渡效果。但除此之外,还有许多其他制作网页动画的方式在Vue应用中也适用。这里我们会探讨一些额外的技巧基于CSSclass的动画对于那些不是正在进入或离开DOM的元素,我们可......
  • 一口气学完Hudi——核心概念之时间轴
    ApacheHudi是一个基于Hadoop的分布式数据存储系统,支持存储结构化和非结构化数据。Hudi的时间轴(TimeLine)是其重要的组成部分,用于管理和跟踪数据的变化历史。在本文中,我将详细介绍Hudi时间轴的基本概念、特点以及如何使用它来进行数据管理。一、Hudi时间轴的基本概念H......
  • JDK ThreadPoolExecutor核心原理与实践
    一、内容概括本文内容主要围绕JDK中的ThreadPoolExecutor展开,首先描述了ThreadPoolExecutor的构造流程以及内部状态管理的机理,随后用大量篇幅深入源码探究了ThreadPoolExecutor线程分配、任务处理、拒绝策略、启动停止等过程,其中对Worker内置类进行重点分析,内容不仅包含其工作原理,......
  • MyBatis的执行流程及核心组件
    MyBatis的执行流程及核心组件如图所示。基本组件介绍Configuration用于描述MyBatis的主配置信息,其他组件需要获取配置信息时,直接通过Configuration对象获取。除此之外,MyBatis在应用启动时,将Mapper配置信息、类型别名、TypeHandler等注册到Configuration组件中,其他组件需要这......
  • app直播源码,css预加载旋转动画 与 流光字体
    app直播源码,css预加载旋转动画与流光字体一、预加载旋转动画Html<viewclass="concentric_round"></view>​cssbody{}.concentric_round{width:200rpx;height:200rpx;position:relative;position:absolute;top:50%;left:50%;transform:translate(-50%,-100%);}.......
  • vue 常用动画
    来源: https://juejin.cn/post/6844903638402334734Vue常用transition动画效果记录我的代码果然有问题2018年07月15日13:48 ·  阅读3839先简单介绍下transition标签的使用方法主要用于v-show,v-if或router-view的进出场动画模板<transitionn......