UIView 动画

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

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

1、block 方式

  • 1.1 设置控件位置、尺寸、透明度等的代码,放在 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);
        }];
        }];
  • 效果:

  • 1.2 弹簧效果的动画

        [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];
  • 效果:

2、动画块方式

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

    • 2.1 创建

          // 开始一个动画块
          [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];
    • 2.2 动画开始时执行的代理方法,自定义方法

          // 动画开始时执行的代理方法,自定义方法
          - (void)startAnimations {
              NSLog(@"startAnimations");
          }
    • 2.3 动画结束时执行的代理方法,自定义方法

          // 动画结束时执行的代理方法,自定义方法
          - (void)stopAnimations {
      
              NSLog(@"stopAnimations");
          }
    • 效果

3、形变属性方式

转载于:https://www.cnblogs.com/CH520/p/9375007.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值