zoukankan      html  css  js  c++  java
  • UIView 动画

    1、UIView 动画

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

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

      • 弹簧效果的动画

      [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];
      
      • 效果
    • 1.2 动画块方式

      • 设置控件位置、尺寸、透明度等的代码,放在 beginAnimations: 和 commitAnimations 之间,将自动以动画的方式改变。
      // 开始一个动画块
      [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];
      
      // 动画开始时执行的代理方法,自定义方法
      - (void)startAnimations {
      
      	NSLog(@"startAnimations");
      }
      
      // 动画结束时执行的代理方法,自定义方法
      - (void)stopAnimations {
      
      	NSLog(@"stopAnimations");
      }
      
      • 效果
    • 1.3 形变属性方式

  • 相关阅读:
    HDU 3951 (博弈) Coin Game
    HDU 3863 (博弈) No Gambling
    HDU 3544 (不平等博弈) Alice's Game
    POJ 3225 (线段树 区间更新) Help with Intervals
    POJ 2528 (线段树 离散化) Mayor's posters
    POJ 3468 (线段树 区间增减) A Simple Problem with Integers
    HDU 1698 (线段树 区间更新) Just a Hook
    POJ (线段树) Who Gets the Most Candies?
    POJ 2828 (线段树 单点更新) Buy Tickets
    HDU 2795 (线段树 单点更新) Billboard
  • 原文地址:https://www.cnblogs.com/CH520/p/9478440.html
Copyright © 2011-2022 走看看