动画效果:Animation

先创建一个图片imageView

 self.imageView =[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tara4.jpg"]];
    self.imageView.frame =CGRectMake(85, 400, 200, 200);
    self.imageView.layer.cornerRadius =100;
    self.imageView.layer.masksToBounds=YES;
    [self.view addSubview:self.imageView];

写几个button的点击方法

写在button的点击方法,点击触发效果

1. UIView提供的动画

(1).// UIView 提供的第一种动画

 // Duration 动画的时间间隔(double类型)
[UIView animateWithDuration:3 animations:^{
   // 动画内容写在block里
        self.imageView.frame =CGRectMake(100, 100, 100, 75);
    }];
使 imageView 移动到新的位置上,并且把size改为新的

(2).UIView 的第二种

使 imageView 移动到新的位置上,并且把size改为新的,最后又回到原位置

[UIView animateWithDuration:5 animations:^{
         self.imageView.frame =CGRectMake(30, 100, 300, 225);
        self.imageView.alpha =0;
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:3 animations:^{
        self.imageView.frame =CGRectMake(85, 400, 200, 150);
            self.imageView.alpha =1;
        }];
    }];

(3).UIView的第三种方法

可以重复 第二个参数:延迟, 第三个参数:动画类型

只重复动画的内容

[UIView animateWithDuration:5 delay:0.1 options:UIViewAnimationOptionRepeat animations:^{
        self.imageView.frame =CGRectMake(30, 100, 300, 225);
        self.imageView.alpha =0;
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:3 animations:^{
                    self.imageView.frame =CGRectMake(85, 400, 200, 150);
                        self.imageView.alpha =1;
                    }];
    }];

(4)UIView 第四种 颤抖动画

// 第三个参数:设置的越小,震动的越剧烈

// 第四个参数 :设置越大, 图片的初速度越大

   [UIView animateWithDuration:5 delay:0.1 usingSpringWithDamping:0.1 initialSpringVelocity:10 options:UIViewAnimationOptionRepeat animations:^{
        self.imageView.frame =CGRectMake(30, 100, 300, 225);
        self.imageView.alpha =0;
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:3 animations:^{
                                self.imageView.frame =CGRectMake(85, 400, 200, 150);
                                    self.imageView.alpha =1;
                                }];
    }];

2.通过transform对视图进行操作

(1).对视图进行旋转的操作

// 第二个参数:设置旋转的弧度 (π /4)
    self.imageView.transform =CGAffineTransformRotate(self.imageView.transform, M_PI_4);

(2).对视图的缩放

// 第二, 三个参数:设置缩放的比例

 self.imageView.transform = CGAffineTransformScale(self.imageView.transform, 0.9, 0.9);

(3).使视图偏移

设置视图的偏移量

    self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, 50, 50);

3. layer动画

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

(1).创建一个动画的效果

    CATransition *transition =[CATransition animation];
设置动画种类 : cube (), rippleEffect (水波纹) suckEffect oglFlip
 transition.type [email protected]"rippleEffect";

   // 设置动画时长
    [transition setDuration:3];

    // 设置动画的重复次数
    // NSIntegerMax 整数的最大值
    [transition setRepeatCount:NSIntegerMax];

//向imageView 上添加动画效果, 添加到imageView的layer上
    [self.imageView.layer addAnimation:transition forKey:@"transistion"];

(2).layer 动画的第二种 (放大缩小)

CABasicAnimation *basic =[CABasicAnimation animationWithKeyPath:@"transform.scale"];
    // 对layer动画设置需要kvc的方式赋值 ,就是需要通过给定一个key,再去设置

    // 动画时长
    [basic setDuration:3];

    // 动画执行的次数
    [basic setRepeatCount:NSIntegerMax];

    // 这个动画设置的是一个缩放的效果,需要给一个开始的初始值
    缩放的初始倍数
    basic.fromValue =[NSNumber numberWithInt:1];

    // 在设置一个结束的值
   缩放的结束倍数
    basic.toValue = [NSNumber numberWithInt:2];
    // toValue 和fromvalue 需要一个id类型的对象(需要整数类型,0.5按0算)

    //把动画添加到视图上
    [self.imageView.layer addAnimation:basic forKey:@"basic"];

(3). 让图片旋转

 CABasicAnimation *basic =[CABasicAnimation animationWithKeyPath:@"transform.rotation"];

    // 设置角度
    basic.fromValue =[NSNumber numberWithInt:0.0];
    basic.toValue =[NSNumber numberWithFloat: -4 *M_PI_2];

    // 设置动画时长
    [basic setDuration:3];
    // 次数
    [basic setRepeatCount:NSIntegerMax];

    [self.imageView.layer addAnimation:basic forKey:@"basic"];

    // 是否回到原位
    [basic setAutoreverses:YES];

(4). 关键帧动画

    CAKeyframeAnimation *keyAnimation =[CAKeyframeAnimation animationWithKeyPath:@"position"];
    // 给动画创建一个行走的路径, 用来记录移动的的关键坐标
    CGMutablePathRef path =CGPathCreateMutable();

    // 指定起始的坐标位置
    // 第一个参数 :用 path来保存起始的路径
    // 第二个参数 :NULL
    // 第三四个参数 :要移动的控件的起始坐标
    CGPathMoveToPoint(path,NULL, self.imageView.frame.origin.x, self.imageView.frame.origin.y);

    // 设置图片的移动轨迹
    CGPathAddLineToPoint(path, NULL, 100, 100);
    CGPathAddLineToPoint(path, NULL, 300, 20);
    CGPathAddLineToPoint(path, NULL, 50, 10);
    CGPathAddLineToPoint(path, NULL, 140, 200);

    // 给视图设置一条曲线路径
    CGPathAddCurveToPoint(path, NULL, 200, 200, 200, 100, 120, 40);
    CGPathAddCurveToPoint(path, NULL, 80, 10, 20, 100, 300, 100);
    CGPathAddCurveToPoint(path, NULL, 20, 90, 20, 100, 200, 150);
    CGPathAddCurveToPoint(path, NULL, 30, 70, 60, 90, 110, 50);

    // 设置动画的时长
    [keyAnimation setDuration:3];

    [keyAnimation setRepeatCount:NSIntegerMax];
    // 把设计好的路线放到动画中

    [keyAnimation setPath:path];

    // 最后,把动画添加到视图上
    [self.imageView.layer addAnimation:keyAnimation forKey:@"keyAnimation"];

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

时间: 2024-10-12 16:32:00

动画效果:Animation的相关文章

Android动画效果animation

1.Tween 根据指定动画开始和结束时的对象属性(位置.Alpha值(透明度).大小.角度等)以及动画播放的时间长度生成动画: 2.Frame 指定每一帧所播放的图片和时间长度. 建立动画的方法: 1.在项目的res文件夹下建立动画资源xml文件,自动加入项目的资源类R中,程序再从资源类中加载动画来使用: 2.直接在程序代码中建立动画对象并设置相关属性. 具体方法: 1.在res文件夹下新建anim文件夹,在anim文件夹下新建xml文件,选择set类型: 2.在xml文件中,新建动画类型标签

CSS3动画效果animation

利用CSS中animation为元素添加动画,代码格式为: animation:动画名 .75s infinite;-webkit-animation:动画名 .75s infinite; /*Safari and Chrome*/ 第二句是为了兼容谷歌浏览器等,在指定动画时需要将元素指定为相对定位:position:relative; 接着为动画指定效果: @keyframes 动画名{from {transform: none;}to {transform: scale(1.6);}} @-

CSS动画效果animation

/* CSS Document */ body{ margin:400px } div{ width:400px; height:400px; background-color:yellow; border:2px solid red; font-size:50px; animation-name:sky; animation-duration:4s; animation-timing-function:ease-in; animation-delay:0.5s; /*延迟时间*/ animat

ListView的淡入淡出和Activity的淡入淡出补间动画效果Animation

//=========主页面======================= package com.bw.lianxi7; import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.animation.Animation;import android.

Android ListView Animation 4种动画效果(贴上了GIF图)

Animation是android的动画效果的组件,可以实现绚丽的翻页.ListView和GridView的展示. 这blog简单介绍一下4种动画效果方式: 1.  AlphaAnimation               控制渐变透明的动画效果    如图: 2.  ScaleAnimation               控制尺寸伸缩的动画效果 如图: 3.  TranslateAnimation        控制画面平移的动画效果  如图: 4.  RotateAnimation    

解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果

解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果 一.前言 最初还是在抖音上看到可以使用简单地代码实现炫酷的网页效果的,但是想要找到可以运行的代码还是比较困难的,最近突然想起就在网上汇总了一些这样的代码. 二.3D效果代码 2.1.旋转相册 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>旋转相

css3中的过渡效果和动画效果

一.CSS3 过渡 (一).CSS3过渡简介 CSS3过渡是元素从一种样式逐渐改变为另一种的效果. 实现过渡效果的两个要件: 规定把效果添加到哪个 CSS 属性上 规定效果的时长 定义动画的规则 过渡transition  (作用) 将元素的某个属性从“一个值”在指定的时间内过渡到“另一个值” (二).transition属性    语法 :   {transition: 属性名 持续时间 过渡方法} transition-property     属性的名字(如果是一个属性就带有这个属性的名字

Core Animation 动画效果介绍

在开始之前呢,先了解一下UIView和CALayer大体的区别(重点列举了以下四点): UIView继承自 UIResponder,因此UIView 可以处理响应事件,而CALayer继承自NSObject,所以它只是负责内容的创建,绘制. UIView负责对内容的管理,而CALayer则是对内容的绘制 UIView中有关位置的属性只有frame.bounds.center,而CALayer除了具备这些属性之外还有anchorPoint.position. 通过修改CALayer可以实现UIVi

CSS动画效果之animation

Y(^o^)Y css动画大乱弹之animation. 概述 什么是animation呢?在回答这个问题之前,先要说明什么叫做@keyframe(关键帧).@keyframe算是一个动画模板.在其中,可以使用百分比,如从0%到100%的任意值,分别在每个百分比中,加上不同的属性,从而让元素达到一种在不断变化的动画效果.这和我们制作flash动画一样,我们只需设计几个关键帧,系统就能生成动画啦! 一个@keyframe例子: 1 /*定义关键帧动画*/ 2 @keyframes myframe {