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];

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

原文地址:https://www.cnblogs.com/hero11223/p/6222233.html