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

    UIView动态实现的效果有以下几种:

         1.动态改变frame

         2.动态改变color

         3.动态改变alpha

         4.动态改变bounds

    首先,我们先看几种BasicView动画

     1 #pragma mark - 改变frame
     2 - (IBAction)changeFrame:(UIButton *)sender {
     3     
     4     // UIView动画有开始,有结束,以beginAnimation开始,以commitAnimation结束
     5     // 第一步:开始UIView动画
     6     [UIView beginAnimations:@"move" context:nil];
     7     
     8     // 第二步:设置动画时长
     9     [UIView setAnimationDuration:2];
    10     
    11     // 第三步:设置UIView动画的回调代理
    12     [UIView setAnimationDelegate:self];
    13     
    14     // 第四步:设置相关的对象的frame
    15     _textView.frame = CGRectMake(100, 100, 200, 100);
    16     
    17     // 第五步:结束动画
    18     [UIView commitAnimations];
    19 }
    1 #pragma mark - 改变color
    2 - (IBAction)changeColor:(UIButton *)sender {
    3     
    4     [UIView beginAnimations:@"color" context:nil];
    5     [UIView setAnimationDuration:2];
    6     [UIView setAnimationDelegate:self];
    7     _textView.backgroundColor = [UIColor blueColor];
    8     [UIView commitAnimations];
    9 }
    1 #pragma mark - 改变alpha
    2 - (IBAction)changeAlpha:(UIButton *)sender {
    3     
    4     [UIView beginAnimations:@"alpha" context:nil];
    5     [UIView setAnimationDuration:2];
    6     [UIView setAnimationDelegate:self];
    7     _textView.alpha = 0.3;
    8     [UIView commitAnimations];
    9 }
     1 #pragma mark - 翻转
     2 - (IBAction)rotationAction:(UIButton *)sender {
     3     
     4     // 第一步:开始动画
     5     [UIView beginAnimations:@"rotation" context:nil];
     6     
     7     // 第二步:设置时长
     8     [UIView setAnimationDuration:2];
     9     
    10     // 第三步:设置淡入效果
    11     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    12     
    13     // 第四步:设置代理
    14     [UIView setAnimationDelegate:self];
    15     
    16     // 第五步:设置翻转方向
    17     [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:_textView cache:YES];
    18     
    19     // 第六步:结束动画
    20     [UIView commitAnimations];
    21 }
     1 #pragma mark - 旋转
     2 - (IBAction)transtromAction:(UIButton *)sender {
     3     
     4     // 第一步:开始动画
     5     [UIView beginAnimations:@"transform" context:nil];
     6     
     7     // 第二步:设置时长
     8     [UIView setAnimationDuration:2];
     9     
    10     // 第三步:要进行旋转,所以要设置角度
    11     CGAffineTransform transform = CGAffineTransformMakeRotation(3 * M_PI);
    12     
    13     // 第四步:设置旋转角度的对象
    14     [_textView setTransform:transform];
    15     
    16     // 第五步:设置代理
    17     [UIView setAnimationDelegate:self];
    18     
    19     // 第六步:结束动画
    20     [UIView commitAnimations];
    21 }

    然后我们来说几种Block动画:

    1.简单动画

     1 #pragma mark - 简单动画
     2 - (IBAction)easyAnimation:(UIButton *)sender {
     3     
     4     // 参数1:设置动画时长
     5     // 参数2:动画要显示的效果
     6     // 参数3:动画完成时进行的事情
     7     __weak typeof(self)weakSelf = self;
     8     [UIView animateWithDuration:2.0f animations:^{
     9         weakSelf.testImgView.center = self.view.center;
    10     } completion:^(BOOL finished) {
    11         NSLog(@"动画完成");
    12     }];
    13 }

    2.复杂动画

     1 #pragma mark - 复杂动画
     2 - (IBAction)complexBlockAnimation:(UIButton *)sender {
     3     
     4     // 参数1:时长
     5     // 参数2:动画的延迟时间
     6     // 参数3:动画的枚举值
     7     // 参数4:要实现的动画效果
     8     // 参数5:动画完成的时候要干的事情
     9     __weak typeof(self)weakSelf = self;
    10     [UIView animateWithDuration:3.0f delay:1.0f options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{
    11         weakSelf.testImgView.frame = CGRectMake(100, 200, 200, 100);
    12     } completion:^(BOOL finished) {
    13         NSLog(@"动画完成");
    14     }];
    15 }

    3.关键帧动画

     1 #pragma mark - 关键帧动画
     2 - (IBAction)keyFrameAnimation:(UIButton *)sender {
     3     
     4     // 参数1:时长
     5     // 参数2:动画的延迟时间
     6     // 参数3:枚举值
     7     // 参数4:开始动画
     8     __weak typeof(self)weakSelf = self;
     9     [UIView animateKeyframesWithDuration:3.0f delay:1.0f options:UIViewKeyframeAnimationOptionCalculationModeLinear animations:^{
    10         
    11         // 在这个里面需要加一个方法,即创建block的关键帧
    12         // 参数1:帧动画的开始时间
    13         // 参数2:帧动画的持续时间
    14         // 参数3:实现的效果
    15         [UIView addKeyframeWithRelativeStartTime:0 relativeDuration:0.5 animations:^{
    16             // 实现的效果
    17             weakSelf.testImgView.frame = CGRectMake(100, 200, 200, 100);
    18         }];
    19     } completion:^(BOOL finished) {
    20         NSLog(@"哈哈哈");
    21     }];
    22 }

    4.Spring动画

     1 // 参数1:动画时长
     2 // 参数2:延迟
     3 // 参数3:类似弹簧的效果值,(0-1)
     4 // 参数4:初始化spring的一个速度
     5 // 参数5:spring动画的枚举值
     6 // 参数6:开始动画
     7 // 参数7:动画完成
     8 __weak typeof(self)weakSelf = self;
     9 [UIView animateWithDuration:3.0f delay:0.5f usingSpringWithDamping:1.0 initialSpringVelocity:10 options:UIViewAnimationOptionOverrideInheritedDuration animations:^{
    10     
    11     weakSelf.imgView.frame = CGRectMake(100, 100, 200, 100);
    12 } completion:^(BOOL finished) {
    13     NSLog(@"fuck");
    14 }];
  • 相关阅读:
    CPU 常识(计算机组成原理)
    设置动态网站,要求访问端口 8998
    未知高宽的div在其父级div中垂直居中显示
    ES6 学习 -- Generator函数
    ES6 学习 -- Class继承
    ES6 学习 -- Class
    ES6 学习 -- 字符串模板
    ES6 学习 -- 字符串新增方法
    ES6 学习 -- Promise对象
    ES6 学习 -- Set和Map数据结构
  • 原文地址:https://www.cnblogs.com/zhizunbao/p/5532351.html
Copyright © 2011-2022 走看看