UIView动画学习笔记
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动画学习笔记的更多相关文章
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- Unity Shader序列帧动画学习笔记
Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 flo ...
- Swift 动画学习笔记
视频地址: http://www.swiftv.cn/course/i275v5lz 1,动画属性 position(位置),opacity(透明度,0 全透明,1 不透明),Scale(尺寸),Co ...
- Canvas 数学、物理、动画学习笔记一
Canvas 第五章 数学.物理和运动学习笔记让人映像深刻的运动,需要我们不只是简单的知道如何移动对象,还需要知道怎么按用户期望看到的方式去移动它们.这些需要基于数学知识的基本算法和物理学作用.基于点 ...
- Windows Phone 7 ListBox 列表项渐显加载动画学习笔记
在wp7程序中,当程序功能越来越复杂时,性能问题是我们不得不考虑的一个问题.在聊天列表中,如果聊天项过多,而且项目UI组件足够复杂时, 我们不得不想尽办法让UI尽快加载.所以有一种可行的方案,就是像Q ...
- css3动画学习笔记
具体学习地址:http://www.imooc.com/learn/33CSS3中的三种动画:tranform形变动画/transition缓动动画/animation逐帧动画; tranform: ...
- 【06-23】js动画学习笔记01
<html> <head> <style> * { margin:0; padding:0; } #div1{ width:200px; height:200px; ...
- Android 动画学习笔记
Android动画的两种:Frame帧动画.Tween动画(位移动画)[实现:存放目录res/anim] Tween动画:(位移.缩放.旋转):通过对场景里的对象不断做图像变换. 四种效果Alpha. ...
- Silverlight动画学习笔记(三):缓动函数
(一)定义: 缓动函数:可以将自定义算术公式应用于动画 (二)为什么要用缓动函数: 您可能希望某一对象逼真地弹回或其行为像弹簧一样.您可以使用关键帧动画甚至 From/To/By 动画来大致模拟这些效 ...
随机推荐
- C#基本语句
1.创建个控制台应用程序(显示当前时间)然后在默认生成的Main函数里下如下代码:Console.WriteLine("显示当前时间:{0}",DateTime.Now.ToStr ...
- Jquery DataTables warning : Requested unknown from the data source for row 0
昨天在做 Jquery DataTables 的时候,遇到的一个问题,我使用MVC,在tables上加入了一个actionlink的href.但是在运行起来的时候,报错: DataTables war ...
- 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 ...
- OTP【转】
转自:http://baike.baidu.com/link?url=58z3oZfEMvNRiDUmWrxtzfDhv--UZ1jaW4rBHg1d9kIWd6HQaYZ96DH8QAFopSZBK ...
- NDK(11)Android.mk编译APK模板
转自 : http://hubingforever.blog.163.com/blog/static/1710405792011656434982/ 以下仅是使用Android.mk编译APK程序的 ...
- 【转】Android Gson的使用
Android Gson 2014 年 05 月 22 日 android 目前的客户端大都有和服务端进行交互,而数据的格式基本就是json了,于是在Android开发中就经常用到json解析,方便的 ...
- JSON 之 SuperObject(10): Merge、Clone、ForcePath
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- Android uiautomator gradle build system
This will guide you through the steps to write your first uiautomator test using gradle as it build ...
- timer的使用
; private void timer1_Tick(object sender, EventArgs e) //定时执行事件 { button1.Text = i.ToString();//显示按钮 ...
- HDU 2147 (博弈) kiki's game
无奈英语不好又被坑,看到棋子能左移下移左下移,想当然地以为是Wythoff博弈了,=u= 题的意思是说每次只能选一个方向移动一步,所以找找规律就是横纵坐标为奇数的时候是必败状态. 从http://ww ...