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 动画来大致模拟这些效 ...
随机推荐
- UITableViewController 滚动引起的cocos2d动画暂停问题的解决
UITableViewController 滚动引起的cocos2d动画暂停问题的解决 之前在使用UITableViewController进行滚动时,cocos2d的动画会暂停,直至滚动完毕才会继续 ...
- lintcode:二叉树的所有路径
二叉树的所有路径 给一棵二叉树,找出从根节点到叶子节点的所有路径. 样例 给出下面这棵二叉树: 1 / \ 2 3 \ 5 所有根到叶子的路径为: [ "1->2->5" ...
- 安卓Intent.ACTION_TIME_TICK 广播
Intent.ACTION_TIME_TICK 广播需要动态注册,不能在清单文件配置. TimeReceiver mBroadcastReceiver = new TimeReceiver(); In ...
- Docker初步认识安装和简单实例
前话 问题 开发网站需要搭建服务器环境,FQ官网下载软件包,搭建配置nginx,apache,数据库等.官网没有直接可用的运行版本,担心网络流传的非官方发布软件包不安全还得自行编译官方源码安装,忘记步 ...
- USACO Section 2.1: Hamming Codes
挺简单的一道题 /* ID: yingzho1 LANG: C++ TASK: hamming */ #include <iostream> #include <fstream> ...
- CEdit的简单用法
今晚闲来无事,写篇博文聊解解闷~ CEdit这个空间类,我之前倒是用过,不过那个时候用的还比较菜,现在么,依旧比较菜~ 首先,因为我今天刚做完了一个局域网聊天软件,用的就是CEdit来显示和获取数据的 ...
- BZOJ 2351 Matrix(哈希)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2351 题意:给出一个n*m的01矩阵.再给出10个A*B的小01矩阵.判断这些小的矩阵是 ...
- [C]判断一个文件是否是jpg格式
同学要帮忙写的,用opencv的imread打开文件看抛出的异常来判断这种抖机灵的姿势就不写了… 首先知道jpg文件是以0xFFD8开始,以0xFFD9结尾的.所以直接拿来fseek fread,异或 ...
- JSON 之 SuperObject(2): 构建方式与 AsJSon
SuperObject 构建一个 JSON 的常用方法: 从字符串.从文件.从流. unit Unit1; interface uses Windows, Messages, SysUtils, ...
- UNIX / Linux: 2 Ways to Add Swap Space Using dd, mkswap and swapon
UNIX / Linux: 2 Ways to Add Swap Space Using dd, mkswap and swapon by RAMESH NATARAJAN on AUGUST 18, ...