zoukankan      html  css  js  c++  java
  • iOS开发之 -- 帧动画的使用

    在项目的开发过程中,我们经常会遇到使用动画的时候,比如我们在请求接口直接开始一个动画,请求结束后结束动画,下面我就给大家展示一个很方便的帧动画的用法:

    代码如下:

    .h

    #import <Foundation/Foundation.h>
    
    @interface hActiveView : NSObject
    
    +(void)startAnimatedInView:(UIView *)aView;
    +(void)stopAnimatedInView:(UIView *)aView;
    
    @end

    .m

    #import "hActiveView.h"
    
    
    @implementation hActiveView
    
    +(void)startAnimatedInView:(UIView *)aView
    {
        UIView *topView=[UIView new];
        topView.backgroundColor=[UIColor clearColor];
        topView.tag=987654321;
        topView.userInteractionEnabled=YES;
        [aView addSubview:topView];
        [topView mas_makeConstraints:^(MASConstraintMaker *make) {
            // make.edges.equalTo(aView).with.insets(UIEdgeInsetsMake(0, 44, 0, 0));
            make.height.equalTo(@64);
            make.top.equalTo(@0);
            make.left.equalTo(@44);
            make.right.equalTo(@0);
        }];
        
        UIView *backgroundView=[UIView new];
        backgroundView.backgroundColor=[[UIColor whiteColor] colorWithAlphaComponent:0.7];
        backgroundView.tag=987654322;
        backgroundView.userInteractionEnabled=YES;
        [aView addSubview:backgroundView];
        [backgroundView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(aView).with.insets(UIEdgeInsetsMake(64, 0, 0, 0));
        }];
        
        
        //黑色view
        UIView *hView=[UIView new];
        hView.tag=987654323;
        hView.backgroundColor=[UIColor clearColor];
        hView.alpha = 0.7;
        hView.layer.borderWidth = 1;
        hView.layer.borderColor = [UIColor clearColor].CGColor;
        hView.layer.cornerRadius = 5;
        [aView addSubview:hView];
        [hView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.size.mas_equalTo(CGSizeMake(80, 80));
            make.centerX.mas_equalTo(aView.mas_centerX);
            make.centerY.mas_equalTo(aView.mas_centerY);
        }];
        UIImageView *gifImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 80, 80)];
        gifImageView.tag=987654324;
        
        NSArray *gifArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"1_1"],
                             [UIImage imageNamed:@"2_1"],
                             [UIImage imageNamed:@"3_1"],
                             [UIImage imageNamed:@"4_1"],
                             [UIImage imageNamed:@"5_1"],
                             [UIImage imageNamed:@"6_1"],
                             [UIImage imageNamed:@"7_1"],
                             [UIImage imageNamed:@"8_1"],
                             [UIImage imageNamed:@"9_1"],
                             [UIImage imageNamed:@"10_1"],
                             [UIImage imageNamed:@"11_1"],
                             [UIImage imageNamed:@"12_1"],
                             [UIImage imageNamed:@"13_1"],
                             [UIImage imageNamed:@"14_1"],
                             [UIImage imageNamed:@"15_1"],
                             [UIImage imageNamed:@"16_1"],
                             [UIImage imageNamed:@"17_1"],
                             [UIImage imageNamed:@"18_1"],
                             [UIImage imageNamed:@"19_1"],
                             [UIImage imageNamed:@"20_1"],
                             [UIImage imageNamed:@"21_1"],
                             [UIImage imageNamed:@"22_1"],
                             [UIImage imageNamed:@"23_1"],
                             [UIImage imageNamed:@"24_1"],
                             [UIImage imageNamed:@"25_1"],nil];
        gifImageView.animationImages = gifArray; //动画图片数组
        gifImageView.animationDuration = 1; //执行一次完整动画所需的时长
        gifImageView.animationRepeatCount = 0;  //动画重复次数
        [gifImageView startAnimating];
        [hView addSubview:gifImageView];
        
    }
    +(void)stopAnimatedInView:(UIView *)aView
    {
        [[aView viewWithTag:987654320] removeFromSuperview];
        [[aView viewWithTag:987654321] removeFromSuperview];
        [[aView viewWithTag:987654322] removeFromSuperview];
        [[aView viewWithTag:987654323] removeFromSuperview];
        NSArray * arr = [aView subviews];
        [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            if ([obj isKindOfClass:[UIImageView class]])
            {
                UIImageView *active = (UIImageView *)obj;
                [active stopAnimating];
                
            }
        }];
    }
    
    @end

    别问我为什么不for循环添加图片,代码比较早了,最近想起来,所以在博客里面记录了一下!

    在pch文件里面:

    //请求动画开始
    #define   HStart(h) [hActiveView startAnimatedInView:h];
    //请求动画结束
    #define   HStop(h)  [hActiveView stopAnimatedInView:h];

    这样,就可以在想使用动画的地方直接使用了!

  • 相关阅读:
    【贪心】POJ1017:Packets
    【贪心】POJ2393:Yogurt factory
    【贪心】POJ3190:Stall Reservations
    【递归】地盘划分
    【递归与递推】青蛙过河
    【搜索】POJ1242:Rescue
    单词方阵(dfs)
    反向因子Inverse Factorial
    P1604 B进制星球
    抵制克苏恩(记忆化搜索)
  • 原文地址:https://www.cnblogs.com/hero11223/p/6222233.html
Copyright © 2011-2022 走看看