UI--动画

UI中的动画分为UIView提供的动画和layer提供的动画

UIView提供的动画

起始设置一个imageView的属性,并且位置大小为CGRectMake(100,400,150,150);

第一种
//Duration 动画的时间间隔
    [UIView animateWithDuration:3 animations:^{
    //动画内容写在block中
    self.imageView.frame = CFRectMake(100,100,50);
];
第二种
//在动画结束的时候我可以去写别的动画据需让它去执行
    [UIView animateWithDuration:5 animations:^{
        self.imageView.frame = CGRectMake(100,50,50,50);
        self.imageView.aplha = 0.2//透明度
    } completion:^(BOOL finished){
        //当动画结束的时候再执行另外的一个UIView动画,平滑的缩放
        [UIView animateWithDuration:3 animation:^{
        self.imageView.frame = CGRectMake(100,300,150,150);
        self.imageView.alpha = 1.0;
        }];
}];
第三个方法
    [UIView animateWithDuration:3 delay:0 options:UIViewAnimationOptionRepeat animations:^{
    self.imageView.frame = CGRectMake(100,100,50,50);
    self.imageView.alpha = 0.2;
    } completion:^(BOOL finished){
            self.imageView.frame = CGRectMake(100,300,150,150);
            self.imageView.alpha = 1.0;
    }];
第四种动画
//第三个参数:设置的越小,抖动越厉害
//第四个参数:设置越大,图片的初速度越快
    [UIView animateWithDuration:3 delay:0 usingSpringWithDamping:0.1 initialSpringVelocity:50 options:UIViewANimationOptionRepeat animations:^{
        self.imageView.frame = CGRectMake(100,100,200,200);
    } completion:^(BOOL finished){
        self.imageView.frame = CGRectMake(100,300,150,150);
    }];

transform动画

//对视图进行旋转的操作
//第二个参数:设置旋转的弧度
    self.imageView.transform = CGAffineTransformRotate(self.imageView.transform,M_PI_4);
//对视图进行缩放
//第二三个参数是设置缩放的比例
    self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform,-50 50 );

Layer动画

layer 主要负责显示空间的一些设置信息,比如边框,弧度等,layer动画的种类很多,我们看见的UIView的动画也是封装了几个layer动画

第一种
//创建一个动画效果
CATransition *transition = [CATransition animation];
//设置动画的种类
//其中种类得写成字符串的类型.在引号里写上类型
//pageCurl 向上翻一页   pageUnCurl 向下翻一页   rippleEffect 滴水效果  suckEffect 收缩效果,如一块布被抽走  cube 立方体效果 oglFlip 上下翻转效果
transition.type = @"rippleEffect";
//设置动画时长
[transition setDuration:3];
//设置动画重复次数
//NSIntegerMax 整数的最大值
[transition setRepeatCount:NSintegerMax];
//向imageView上添加动画效果,添加到imageview的layer上
[self.imageView.layer addAnimation:transition forKey:@"transition"];

layer的第二种
    CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
//对layer动画设置很多需要kvc的方式赋值,就是需要通过给定一个可以,在去设置

//动画时长
    [basic setDuration:3];
//动画执行次数
    [basic setRepeatCount:NSIntegerMax];
//这个动画设置的是一个缩放效果.所以需要给定一个开始的初始值
    basic.fromValue = [NSMuber numberWithInt:1];
//再设置一个结束的值
    basic.toValue = [NSNumber numberWithInt:0.5];
    //toValue 和 fromValue 需要一个id类型的队形
//把动画添加到imageView上
    [self.imageView.layer addAnimation:basic forKey:@"basic"];

//让图片进行旋转
    CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
//设置角度
    basic.fromValue = [NSNumber numberWithFloat:0.0];
    basic.toValue = [NSNumber numberWithFloat: 2 * M_PI];
//设置动画时长
    [basic setDuration:4];
//设置动画次数
    [basic setRepeatCount:NSIntegerMax];
//添加动画
    [self.imageView.layer addAnimation:basic forKey:@"basic"];
    [bsic setAutoreverses:YES];

关键帧动画
    CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
//给坐标创建一个行走的路径,用来记录移动的关键坐标
    CGMutablePathRef paht = CGPathCreateMutable();
//指定起始的坐标位置
//第一个参数:用Path来保存起始路径
//第二个参数:NULL
//第三四个参数:要移动的空间的起始坐标
    CGPathMoveToPoint(Path,NULL,self.imageView.frame.origin.x,self.imageView.frame.origin.y);
//设置视图的移动轨迹
CGPathAddLineToPoint(path,NULL,100,100);
CGPathAddLineToPoint(path,NULL,10,20);
CGPathAddLineToPoint(path,NULL,140,200);
//设置一个曲线路径
CGPathAddCurveToPoint(path,NULL,200 ,200,200,100,120,40);
CGPathAddCurveToPoint(path,NULL,80,10,12,100,300,100);
CGPathAddCurveToPoint(path,NULL,90,20,100,200,150,150);
//设置动画时长和重复次数
[keyAnimation setDuration:10];
[keyAnimation setRepeatCount:NSIntegerMax];
//把设计好的路线放到动画里
[keyAnimation setPath:path];
//把动画添到视图上
[self.imageView.layer addAnimation:keyAnimation forKey:@"keyAnimation"];

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-02 22:59:39

UI--动画的相关文章

COCOS2D-X中UI动画导致闪退与UI动画浅析

前两天和同事一起查一个游戏的闪退问题,log日志显示最后挂在CCNode* ActionNode::getActionNode()函数中的首行CCNode* cNode = dynamic_cast<CCNode*>(m_Object),由于不是必现bug,出现概率极低,单从代码来看,唯一的可能就是走到这里时m_Object已经为null了,所以才会挂出去.当然经过不懈努力,问题还是得以解决,这里mark一下,留作以后复习. 想方设法也无法重现的情况下,我们只能一步一步的分析UI动画的生命周期

帧动画 连续播放多张图片动画 以及ui动画 SoundPool

drawable下有很多图片  可以 1 <?xml version="1.0" encoding="utf-8"?> 2 <animation-list android:oneshot="false" 3 xmlns:android="http://schemas.android.com/apk/res/android"> 4 <item android:duration="20&qu

Egret UI Editor 1.7 正式发布,支持UI动画编辑

各位开发者朋友过年好: 时光飞逝,猪去鼠来,我们即将辞别2019,迎来2020! 在这个末尾时刻,我们以新产品版本的发布向2019说"再见".道"珍重"! 既然是告别,首先我们先总结下2019年引擎团队的工作重点,看看我们主要做了哪些事情,具体包括4个方面: ? 2D 引擎维护与工作流优化,这一年2D引擎发布了20余个小版本,并发布了 Egret UI Editor.? 不同平台的发布支持,除了2018年支持的微信小游戏之外,还先后支持了百度小游戏.QQ小游戏.OP

UI动画效果

UI界面的动画效果总结 方式1:头尾式 //开始动画 [UIView beginAnimations:nil context:nil]; //设置动画时间 [UIView setAnimationDuration:2.0]; /* 需要执行动画的代码 */ //提交动画 [UIView commitAnimations]; 方式2:block式 [UIView animateWithDuration:2.0 delay:1.0 options:kNilOptions animations:^{

UI动画高级篇(一)

一.引入·Xcode设置圆角按钮 1.在何处设置圆角属性 Xcode的属性检查器中不能直接设置按钮为圆角,因为圆角属性是程序运行时显示的.故应在身份检查器的user defined runtime attributes(用户定义的运行时属性)处增加KeyPath并通过KVC添加Button的layer.cornerRadius(层的角半径)来设置圆角. 注意:user defined runtime attributes无报错机制,我们须保障正确的属性名书写和Type选择. (图1 Xcode检

Win10 UI动画

<Button Content="Ship via Wells, Fargo & Co." HorizontalAlignment="Center" VerticalAlignment="Center" Padding="20,10" FontSize="16" RenderTransformOrigin="0.5,0.5"> <Button.RenderTra

[UE4]判断UI动画播放方向

使用一个变量来记录播放的方向. 原文地址:https://www.cnblogs.com/timy/p/9158092.html

android动画详解一 概述

动画和图形概述 Android 提供了大量的强大的API以应用于UI动画和绘制2D和3D图形.下面各节向你描述了这些API的预览和系统能力以帮助你决定怎么才是达到你需求的最佳方法. 动画 Android 框架提供了两个动画系统: 两种动画系统都是切实可用的,但是一般情况下属性动画系统是被首推使用的.因为它更灵活并且提供了更多的特性.在此两系统之外,你还可以使用Drawable动画,它使得你可以加载drawable资源并且一帧帧的显示它们. Property动画 从Android 3.0 (API

CSS VS JS动画,哪个更快[译]

英文原文:https://davidwalsh.name/css-js-animation 原作者Julian Shapiro是Velocity.js的作者,Velocity.js是一个高效易用的js动画库.在<Javascript网页动画设计>一书中对这个库有很多更具体的剖析,对Velocity及JS动画感兴趣的可以一看. 基于Javascript的动画怎么可能总是和 CSS transition 一样快,甚至更快呢?到底是什么秘密呢?Adobe 和 Google 是怎么做到让他们的富媒体移

运动曲线提升CSS动画效果

原文链接 译文\译者鞠大宝 先有UI动画,然后才会有好的UI动画.好的动画会让人惊叹“哇哦!”——因为页面看上去很流畅.很漂亮,最重要的是,自然,一点都不会让人觉得不和谐或者僵硬死板.如果你经常逛Dribbble或者 UpLabs这类网站的话,你就会明白我在说什么了. 一些极好的拓展阅读资源: ·SVG和CSS的路径剪辑动画 ·若干实用的动画技术 ·使用SVG手绘动画 ·新的网页动画API 既然有这么多天才设计师创造了如此漂亮的动画,自然是任何开发者都会想要在自己的项目中引进这些效果.如今,CS