UIView的动画是通过修改控件的属性来达到动画的效果,如:渐变, 移动.

废话不多说,直接上代码:

 - (void)loadView{
[super loadView];
_leftView = [[UIView alloc]initWithFrame: CGRectMake(, , , )];
_rightView = [[UIView alloc]initWithFrame: CGRectMake(, , , )];
_leftView.backgroundColor = [UIColor grayColor];
_rightView.backgroundColor = [UIColor grayColor];
_btnStart = [UIButton buttonWithType:UIButtonTypeRoundedRect];
_btnStart.frame = CGRectMake( / - / , , , );
[_btnStart setTitle: @"startAnimation" forState:UIControlStateNormal];
[_btnStart addTarget:self action:@selector(startAnimating)forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview: _leftView];
[self.view addSubview: _rightView];
[self.view addSubview: _btnStart];
[_leftView release];
[_rightView release]; [self.navigationController setNavigationBarHidden: YES];
}
 - (void)startAnimating{
_leftView.alpha = 1.0;
_rightView.alpha = 2.0; _btnStart.alpha = 1.0;
_btnStart.transform = CGAffineTransformScale(_btnStart.transform, 1.0, 1.0); [UIView beginAnimations: nil context: nil];//标记UIView动画开始,第一个参数是给动画的名称定义一个名字,在多个动画需要逻辑处理的时候定义,一般简单的动画可以忽略;第二个参数是上下文,暂且忽略;
[UIView setAnimationCurve: UIViewAnimationCurveEaseIn];//定义动画的曲线(动画的开始与结束的快慢),UIViewAnimationCurveEaseIn为默认类型;
[UIView setAnimationDuration: 1.5];//定义动画的持续时间,数值越大动画时间越长,也就是所谓的动画越慢; [UIView setAnimationDelegate: self];//设置代理, 可以监听动画开始和结束时;
[UIView setAnimationDidStopSelector:@selector(animationDidStop)];//动画结束时调用animationDidStop方法;
/* 动画变化在这里修改 */
CGRect lFrame = _leftView.frame;
CGRect rFrame = _rightView.frame; lFrame.origin.x = -;//通过改变x坐标达到做移动的效果
rFrame.origin.x = ; _leftView.frame = lFrame;
_rightView.frame = rFrame; _leftView.alpha = 0.1;//通过改变透明度达到渐变的效果
_rightView.alpha = 0.1; _btnStart.alpha = 0.0;
_btnStart.transform = CGAffineTransformScale(_btnStart.transform, 0.1, 0.1);//通过改变缩放比例达到动画效果
/* 动画变化这里结束 */
[UIView commitAnimations];//确认提交动画
}
 - (void)animationDidStop{

     CAAnimationViewController *caAnimationVC = [[CAAnimationViewController alloc]init];//创建一个新的ViewController命名为CAAnimationViewController,为了下一节的笔记;
[UIView beginAnimations: nil context:nil];//开始动画
[UIView setAnimationDuration:0.5];//动画持续时间 [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache: YES];//Transition 就是过渡的意思,
//过渡方法:第一个参数是过渡动画类型,这里是右转动,枚举类型;
//第二个参数是需要过渡的视图对象,也就是过渡页面的父类型,暂且这么记,下文有详细解释;
//第三个参数是是否缓存,如果是YES,那么在开始和结束图片视图渲染一次并在动画中创建帧;否则,视图将会在每一帧都渲染。例如缓存,你不需要在视图转变中不停的更新,你只需要等到转换完成再去更新视图。
[UIView commitAnimations];//提交动画
[self.navigationController pushViewController: caAnimationVC animated: NO];//push页面
[caAnimationVC release]; }

关于setAnimationTransition第二个参数view,要传入过渡的父类, 做过渡的两个view是rootViewController和caAnimationVC,rootViewController的上一层(父类)是UINavigationContorller,所以传入的是self.navigationController.view.

源代码:http://vdisk.weibo.com/s/yV3nUa6epUv7x

UIView动画学习笔记的更多相关文章

  1. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  2. Unity Shader序列帧动画学习笔记

    Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 flo ...

  3. Swift 动画学习笔记

    视频地址: http://www.swiftv.cn/course/i275v5lz 1,动画属性 position(位置),opacity(透明度,0 全透明,1 不透明),Scale(尺寸),Co ...

  4. Canvas 数学、物理、动画学习笔记一

    Canvas 第五章 数学.物理和运动学习笔记让人映像深刻的运动,需要我们不只是简单的知道如何移动对象,还需要知道怎么按用户期望看到的方式去移动它们.这些需要基于数学知识的基本算法和物理学作用.基于点 ...

  5. Windows Phone 7 ListBox 列表项渐显加载动画学习笔记

    在wp7程序中,当程序功能越来越复杂时,性能问题是我们不得不考虑的一个问题.在聊天列表中,如果聊天项过多,而且项目UI组件足够复杂时, 我们不得不想尽办法让UI尽快加载.所以有一种可行的方案,就是像Q ...

  6. css3动画学习笔记

    具体学习地址:http://www.imooc.com/learn/33CSS3中的三种动画:tranform形变动画/transition缓动动画/animation逐帧动画; tranform: ...

  7. 【06-23】js动画学习笔记01

    <html> <head> <style> * { margin:0; padding:0; } #div1{ width:200px; height:200px; ...

  8. Android 动画学习笔记

    Android动画的两种:Frame帧动画.Tween动画(位移动画)[实现:存放目录res/anim] Tween动画:(位移.缩放.旋转):通过对场景里的对象不断做图像变换. 四种效果Alpha. ...

  9. Silverlight动画学习笔记(三):缓动函数

    (一)定义: 缓动函数:可以将自定义算术公式应用于动画 (二)为什么要用缓动函数: 您可能希望某一对象逼真地弹回或其行为像弹簧一样.您可以使用关键帧动画甚至 From/To/By 动画来大致模拟这些效 ...

随机推荐

  1. C#基本语句

    1.创建个控制台应用程序(显示当前时间)然后在默认生成的Main函数里下如下代码:Console.WriteLine("显示当前时间:{0}",DateTime.Now.ToStr ...

  2. Jquery DataTables warning : Requested unknown from the data source for row 0

    昨天在做 Jquery DataTables 的时候,遇到的一个问题,我使用MVC,在tables上加入了一个actionlink的href.但是在运行起来的时候,报错: DataTables war ...

  3. SPRING IN ACTION 第4版笔记-第十一章Persisting data with object-relational mapping-003编写JPA-based repository( @PersistenceUnit、 @PersistenceContext、PersistenceAnnotationBeanPostProcessor)

    一.注入EntityManagerFactory的方式 package com.habuma.spittr.persistence; import java.util.List; import jav ...

  4. OTP【转】

    转自:http://baike.baidu.com/link?url=58z3oZfEMvNRiDUmWrxtzfDhv--UZ1jaW4rBHg1d9kIWd6HQaYZ96DH8QAFopSZBK ...

  5. NDK(11)Android.mk编译APK模板

    转自 :  http://hubingforever.blog.163.com/blog/static/1710405792011656434982/ 以下仅是使用Android.mk编译APK程序的 ...

  6. 【转】Android Gson的使用

    Android Gson 2014 年 05 月 22 日 android 目前的客户端大都有和服务端进行交互,而数据的格式基本就是json了,于是在Android开发中就经常用到json解析,方便的 ...

  7. JSON 之 SuperObject(10): Merge、Clone、ForcePath

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  8. Android uiautomator gradle build system

    This will guide you through the steps to write your first uiautomator test using gradle as it build ...

  9. timer的使用

    ; private void timer1_Tick(object sender, EventArgs e) //定时执行事件 { button1.Text = i.ToString();//显示按钮 ...

  10. HDU 2147 (博弈) kiki's game

    无奈英语不好又被坑,看到棋子能左移下移左下移,想当然地以为是Wythoff博弈了,=u= 题的意思是说每次只能选一个方向移动一步,所以找找规律就是横纵坐标为奇数的时候是必败状态. 从http://ww ...