1、UIView 动画

  • 核心动画 和 UIView 动画 的区别:

    • 核心动画一切都是假象,并不会真实的改变图层的属性值,如果以后做动画的时候,不需要与用户交互,通常用核心动画(转场)。
    • UIView 动画必须通过修改属性的真实值,才有动画效果。

1.1 block 方式

  • 设置控件位置、尺寸、透明度等的代码,放在 animateWithDuration: block 中,将自动以动画的方式改变。

    	// 开始动画,动画持续时间 2 秒
    [UIView animateWithDuration:1.0 animations:^{ // 设置动画结束后的效果值 // 改变控件的位置和尺寸,改变后的位置或大小
    self.redView.frame = CGRectMake(150, 50, 50, 50); } completion:^(BOOL finished) { // 动画完成后的操作 // 开始一个新的动画
    [UIView animateWithDuration:1.0 animations:^{ // 改变控件的位置和尺寸,改变后的位置或大小
    self.redView.frame = CGRectMake(50, 150, 80, 80);
    }];
    }];
    • 效果

  • 弹簧效果的动画

    	[UIView animateWithDuration:1.0
    delay:0
    usingSpringWithDamping:0.2
    initialSpringVelocity:0
    options:UIViewAnimationOptionCurveEaseInOut
    animations:^{ // SpringWithDamping: 弹性系数,越小弹簧效果越明显 self.redView.frame = CGRectMake(150, 50, 50, 50); } completion:nil];
    • 效果

1.2 动画块方式

  • 设置控件位置、尺寸、透明度等的代码,放在 beginAnimations: 和 commitAnimations 之间,将自动以动画的方式改变。

    	// 开始一个动画块
    [UIView beginAnimations:nil context:nil]; // 动画设置 // 设置动画时间
    [UIView setAnimationDuration:1.0]; // default = 0.2 // 设置延时
    [UIView setAnimationDelay:0.0]; // 设置指定的时间后开始执行动画,default = 0.0 // 设置动画执行节奏
    /*
    UIViewAnimationCurveEaseInOut, // slow at beginning and end 开始和结束慢速,默认
    UIViewAnimationCurveEaseIn, // slow at beginning 开始慢速
    UIViewAnimationCurveEaseOut, // slow at end 结束慢速
    UIViewAnimationCurveLinear // 匀速
    */
    [UIView setAnimationCurve:UIViewAnimationCurveLinear]; // 设置重复次数
    [UIView setAnimationRepeatCount:MAXFLOAT]; // default = 0.0. May be fractional // 设置是否自动返回,以动画的方式返回
    [UIView setAnimationRepeatAutoreverses:YES]; // default = NO. used if repeat count is non-zero // 设置是否从当前状态开始动画
    [UIView setAnimationBeginsFromCurrentState:YES]; // default = NO // 设置代理
    [UIView setAnimationDelegate:self]; // default = nil // 设置动画开始时执行的代理方法,自定义方法
    [UIView setAnimationWillStartSelector:@selector(startAnimations)]; // default = NULL // 设置动画结束时执行的代理方法,自定义方法
    [UIView setAnimationDidStopSelector:@selector(stopAnimations)]; // default = NULL // 动画之行后效果值 // 设置透明度,改变后的透明度
    self.redView.alpha = 1.0; // 改变控件的位置和尺寸,改变后的位置或大小
    self.redView.frame = CGRectMake(150, 150, 80, 80); // 结束一个动画块
    [UIView commitAnimations]; // 动画开始时执行的代理方法,自定义方法
    - (void)startAnimations { NSLog(@"startAnimations");
    } // 动画结束时执行的代理方法,自定义方法
    - (void)stopAnimations { NSLog(@"stopAnimations");
    }
    • 效果

1.3 形变属性方式

iOS - UIView 动画的更多相关文章

  1. iOS UIView动画效果 学习笔记

    //启动页动画 UIImageView *launchScreen = [[UIImageView alloc]initWithFrame:[UIScreen mainScreen].bounds]; ...

  2. iOS UIView 动画浅谈

    UIView 等会效果简单实现,哪一个登录页面的demo来举例子吧. + (void)animateWithDuration:(NSTimeInterval)duration animations:( ...

  3. IOS UIView动画(封装动画)

    ● UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView 将为这些改变提供动画支持 ● 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视 图, ...

  4. ios uiview封装动画(摘录)

    iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...

  5. iOS动画篇:UIView动画

    iOS的动画效果一直都很棒很,给人的感觉就是很炫酷很流畅,起到增强用户体验的作用.在APP开发中实现动画效果有很多种方式,对于简单的应用场景,我们可以使用UIKit提供的动画来实现. UIView动画 ...

  6. IOS UIVIEW layer动画 总结(转)

    转发自:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/16306_12.html   IOS UIVIEW layer动画 总结, ...

  7. iOS动画1 — UIView动画

    iOS动画基础是Core Animation核心动画.Core Animation是iOS平台上负责图形渲染与动画的基础设施.由于核心动画的实现比较复杂,苹果提供了实现简单动画的接口—UIView动画 ...

  8. 【iOS开发】---- UIView动画

      iOS 动画UIView动画 原文:http://www.cocoachina.com/bbs/read.php?tid=110168 1.概述 UIKit直接将动画集成到UIView类中,实现简 ...

  9. iOS核心动画以及UIView动画的介绍

    我们看到很多App带有绚丽狂拽的特效,别出心裁的控件设计,很大程度上提高了用户体验,在增加了实用性的同时,也赋予了app无限的生命力.这些华丽的效果很多都是基于iOS的核心动画原理实现的,本文介绍一些 ...

随机推荐

  1. LOJ #116 有源汇点有上下界的最大流

    先连一条从汇点到源点的容量为INF的边,将其转化成无源汇点有上下界的可行流,判断是否可行 若可行的话删掉超级源点和超级汇点,再跑一遍最大流即可 #include <iostream> #i ...

  2. 阶段小项目2:显示bin格式图片

    #include<stdlib.h>#include<stdio.h>#include<string.h>#include<error.h>#inclu ...

  3. mysql必知必会

    春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...

  4. Javascript获取数组中的最大值和最小值方法汇总

    方法一 sort()方法 b-a从大到小,a-b从小到大 var max2 = arr.sort(function(a,b){ return b-a; })[0]; console.log(max2) ...

  5. CentOS 6下编译安装MySQL 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  6. dnspython模块安装

    wget  http://www.dnspython.org/kits/1.12.0/dnspython-1.12.0.tar.gz tar -zxvf dnspython-1.12.0.tar.gz ...

  7. python入门学习笔记(二)

    6.6替换元素 7.tuple类型 7.1创建tuple 7.2创建单元素tuple    7.3"可变"的tuple 8.条件判断和循环 8.1,if语句   8.2,if... ...

  8. 初步探究Android App API接口测试--实战

    一.Android App API接口测试 1.如何学好Android App API接口测试 postman可以用来实现API接口自动化测试,但是也有弊端,无法实现接口测试数据的参数化,为了达到接口 ...

  9. [原创]CentOS7安装远程工具teamviewer12

    系统环境:CentOS 7.0.1 1.下载安装# wget https://dl.tvcdn.de/download/version_12x/teamviewer_12.0.85001.i686.r ...

  10. Asp.Net Core 基于QuartzNet任务管理系统

    之前一直想搞个后台任务管理系统,零零散散的搞到现在,也算完成了. 这里发布出来,请园里的dalao批评指导! 废话不多说,进入正题. github地址:https://github.com/YANGK ...