• UIView动画学习笔记


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

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

     1 - (void)loadView{
     2     [super loadView];
     3     _leftView = [[UIView alloc]initWithFrame: CGRectMake(0, 0, 160, 560)];
     4     _rightView = [[UIView alloc]initWithFrame: CGRectMake(160, 0, 160, 560)];
     5     _leftView.backgroundColor = [UIColor grayColor];
     6     _rightView.backgroundColor = [UIColor grayColor];
     7     _btnStart = [UIButton buttonWithType:UIButtonTypeRoundedRect];
     8     _btnStart.frame = CGRectMake(320 / 2 - 200 / 2, 400, 200, 50);
     9     [_btnStart setTitle: @"startAnimation" forState:UIControlStateNormal];
    10     [_btnStart addTarget:self action:@selector(startAnimating)forControlEvents:UIControlEventTouchUpInside];
    11     
    12     [self.view addSubview: _leftView];
    13     [self.view addSubview: _rightView];
    14     [self.view addSubview: _btnStart];
    15     [_leftView release];
    16     [_rightView release];
    17     
    18     [self.navigationController setNavigationBarHidden: YES];
    19 }
     1 - (void)startAnimating{
     2     _leftView.alpha = 1.0;
     3     _rightView.alpha = 2.0;
     4     
     5     _btnStart.alpha = 1.0;
     6     _btnStart.transform = CGAffineTransformScale(_btnStart.transform, 1.0, 1.0);
     7     
     8     [UIView beginAnimations: nil context: nil];//标记UIView动画开始,第一个参数是给动画的名称定义一个名字,在多个动画需要逻辑处理的时候定义,一般简单的动画可以忽略;第二个参数是上下文,暂且忽略;
     9     [UIView setAnimationCurve: UIViewAnimationCurveEaseIn];//定义动画的曲线(动画的开始与结束的快慢),UIViewAnimationCurveEaseIn为默认类型;
    10     [UIView setAnimationDuration: 1.5];//定义动画的持续时间,数值越大动画时间越长,也就是所谓的动画越慢;
    11     
    12     [UIView setAnimationDelegate: self];//设置代理, 可以监听动画开始和结束时;
    13     [UIView setAnimationDidStopSelector:@selector(animationDidStop)];//动画结束时调用animationDidStop方法;
    14     /* 动画变化在这里修改 */
    15     CGRect lFrame =  _leftView.frame;
    16     CGRect rFrame = _rightView.frame;
    17     
    18     lFrame.origin.x = -240;//通过改变x坐标达到做移动的效果
    19     rFrame.origin.x = 400;
    20     
    21     _leftView.frame = lFrame;
    22     _rightView.frame = rFrame;
    23     
    24     _leftView.alpha = 0.1;//通过改变透明度达到渐变的效果
    25     _rightView.alpha = 0.1;
    26     
    27     _btnStart.alpha = 0.0;
    28     _btnStart.transform = CGAffineTransformScale(_btnStart.transform, 0.1, 0.1);//通过改变缩放比例达到动画效果
    29     /* 动画变化这里结束 */
    30     [UIView commitAnimations];//确认提交动画
    31 }
     1 - (void)animationDidStop{
     2     
     3     CAAnimationViewController *caAnimationVC = [[CAAnimationViewController alloc]init];//创建一个新的ViewController命名为CAAnimationViewController,为了下一节的笔记;
     4     [UIView beginAnimations: nil context:nil];//开始动画
     5     [UIView setAnimationDuration:0.5];//动画持续时间
     6     
     7     [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache: YES];//Transition 就是过渡的意思,
     8                                         //过渡方法:第一个参数是过渡动画类型,这里是右转动,枚举类型;
     9                                         //第二个参数是需要过渡的视图对象,也就是过渡页面的父类型,暂且这么记,下文有详细解释;
    10                                         //第三个参数是是否缓存,如果是YES,那么在开始和结束图片视图渲染一次并在动画中创建帧;否则,视图将会在每一帧都渲染。例如缓存,你不需要在视图转变中不停的更新,你只需要等到转换完成再去更新视图。
    11     [UIView commitAnimations];//提交动画
    12     [self.navigationController pushViewController: caAnimationVC animated: NO];//push页面
    13     [caAnimationVC release];
    14     
    15 }

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

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

  • 相关阅读:
    详解GaussDB(for MySQL)服务:复制策略与可用性分析
    华为云的研究成果又双叒叕被MICCAI收录了!
    充分释放数据价值:安全、可信6到飞起
    未来云原生世界的“领头羊”:容器批量计算项目Volcano 1.0版本发布
    一文带你掌握OBS的两种常见的鉴权方式
    数据库实践丨MySQL多表join分析
    技术贴丨教你使用华为云鲲鹏服务器部署Discuz!论坛
    python Scrapy 从零开始学习笔记(二)
    python Scrapy 从零开始学习笔记(一)
    从零开始学Electron笔记(七)
  • 原文地址:https://www.cnblogs.com/mohe/p/3242941.html
Copyright © 2020-2023  润新知