加载动画

原创 2015年11月18日 19:06:24

#import <UIKit/UIKit.h>


@interface YYAnimationIndicator : UIView


{

    NSTimer *timer;

    UILabel *backView;

    DeviceManage * device;

}

@property(nonatomic,strong)UIImageView *imageView;;

@property(nonatomic,strong)UIView * bgView;

@property(nonatomic,strong) UILabel *Infolabel;;

@property (nonatomic, assign) NSString *loadtext;

@property (nonatomic, readonly) BOOL isAnimating;

@property(nonatomic,assign)CGFloat topY;



//use this to init

- (id)initWithFrame:(CGRect)frame;

- (id)initWithFrame:(CGRect)frame andTopY:(CGFloat)topY;

- (id)initWithFrame:(CGRect)frame backgroundColor:(UIColor *)bgColor;

-(void)setLoadText:(NSString *)text;


- (void)startAnimation;

- (void)stopAnimationWithLoadText:(NSString *)text withType:(BOOL)type;


-(void)createCustomAnimation;


@end

#define kBgWH 170

#define KImgaeWH 220

#define KtopY 150

#import "YYAnimationIndicator.h"

#define WidthScale ([UIScreen mainScreen].bounds.size.width/375)

#define HeightScale ([UIScreen mainScreen].bounds.size.height/667)


@implementation YYAnimationIndicator


- (id)initWithFrame:(CGRect)frame

{

    self = [self initWithFrame:frame backgroundColor:[UIColor whiteColor]];

    return self;

}


- (id)initWithFrame:(CGRect)frame backgroundColor:(UIColor *)bgColor

{

    self = [super initWithFrame:frame];

    if (self) {

        device = [DeviceManage deviceManage];

        self.backgroundColor = bgColor;

        _isAnimating = NO;

        [self addSubview:self.imageView];

        self.layer.hidden = YES;

    }

    return self;

}

- (id)initWithFrame:(CGRect)frame andTopY:(CGFloat)topY

{

    self = [super initWithFrame:frame];

    if (self) {

        self.backgroundColor = [UIColor whiteColor];

        device = [DeviceManage deviceManage];

        _isAnimating = NO;

        self.topY = topY;

        [self addSubview:self.imageView];

        self.layer.hidden = YES;

    }

    return self;

}


-(void)startAnmi

{

    [self stopAnimationWithLoadText:@"加载失败" withType:NO];

    [timer invalidate];

//    [self removeFromSuperview];

}


- (void)startAnimation

{

    _isAnimating = YES;

    self.layer.hidden = NO;

    timer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(startAnmi) userInfo:nil repeats:NO];

    [self doAnimation];

}


-(void)doAnimation{

    

    self.Infolabel.text = _loadtext;

    //设置动画总时间

    self.imageView.animationDuration=2.3;

    //设置重复次数,0表示不重复

    self.imageView.animationRepeatCount=0;

    //开始动画

    [self.imageView startAnimating];

}


- (void)stopAnimationWithLoadText:(NSString *)text withType:(BOOL)type;

{

    _isAnimating = NO;

    self.Infolabel.text = text;

    if(type){

        

        [UIView animateWithDuration:0.3f animations:^{

            self.alpha = 0;

        } completion:^(BOOL finished) {

            [self.imageView stopAnimating];

            self.layer.hidden = YES;

            self.alpha = 1;

        }];

        [self removeFromSuperview];

    }else{

        [self removeFromSuperview];

        [self.imageView stopAnimating];

        [self.imageView setImage:[UIImage imageNamed:@"loading_0005"]];

    }

    

}


-(void)setLoadText:(NSString *)text;

{

    if(text){

        _loadtext = text;

        [self insertSubview:self.bgView belowSubview:self.imageView];

        [self addSubview:self.Infolabel];

    }

}


-(UILabel *)Infolabel

{

    if (_Infolabel == nil) {

        _Infolabel = [[UILabel alloc]initWithFrame:CGRectMake(0,CGRectGetMaxY(self.imageView.frame)-60*device.heighScaleRatio,ScreenWidth, 20)];

        _Infolabel.textAlignment = NSTextAlignmentCenter;

        _Infolabel.textColor = UIColorWithRGB(0xEE4F4E);

        _Infolabel.font = [UIFont systemFontOfSize:15.0];

        }

    return _Infolabel;

}

-(UIView *)bgView{

    if (_bgView == nil) {

        if (self.topY) {

            _bgView = [[UIView alloc]initWithFrame:CGRectMake((ScreenWidth-kBgWH*device.widthScaleRatio)/2,self.topY*device.heighScaleRatio, kBgWH*device.widthScaleRatio, kBgWH*device.widthScaleRatio)];

        }else

        {

        _bgView = [[UIView alloc]initWithFrame:CGRectMake((ScreenWidth-kBgWH*device.widthScaleRatio)/2,(KtopY+50)*device.heighScaleRatio, kBgWH*device.widthScaleRatio, kBgWH*device.widthScaleRatio)];

        }

        _bgView.backgroundColor = [UIColor clearColor];

        _bgView.alpha = 0.5;

        _bgView.layer.cornerRadius = 5;

        _bgView.layer.masksToBounds = YES;


    }

    return _bgView;

}

-(UIImageView *)imageView

{

    if (_imageView == nil) {

        if (self.topY) {

             _imageView = [[UIImageView alloc]initWithFrame:CGRectMake((ScreenWidth-KImgaeWH*device.widthScaleRatio)/2,self.topY*device.heighScaleRatio, KImgaeWH*device.widthScaleRatio, KImgaeWH*device.widthScaleRatio)];

        }else

        {

             _imageView = [[UIImageView alloc]initWithFrame:CGRectMake((ScreenWidth-KImgaeWH*device.widthScaleRatio)/2,KtopY*device.heighScaleRatio,  KImgaeWH*device.widthScaleRatio, KImgaeWH*device.widthScaleRatio)];

        }

        //设置动画帧

        NSMutableArray *arr = [[NSMutableArray alloc]init];

        for (int i = 0; i<=58; i++)

        {

            NSString *str =[ [NSString alloc]initWithFormat:@"loading_000%02d",i ];

            UIImage *image = [UIImage imageNamed:str];

            [arr addObject:image];

        }

        _imageView.contentMode = UIViewContentModeScaleAspectFill;

        _imageView.clipsToBounds = YES;

        _imageView.animationImages =(NSArray *)arr;

    }

    return _imageView;

}

-(void)createCustomAnimation

{

    self.backgroundColor = [UIColor clearColor];

    backView.backgroundColor = [UIColor clearColor];

}


@end



前端加载动画/加载等待动画

在加载前端的数据的时候,很多时候不能用进度条来衡量不定数据量。此时加载动画就有用武之地了。可以在数据请求时显示加载动画,等动画加载完成再隐藏加载动画,让前端更具交互友好性。 网上百度了很多关于这方...
  • sxpsxp12
  • sxpsxp12
  • 2017年01月17日 15:09
  • 1218

Android自定义加载动画(持续更新中...)

准备做一个Android自定义加载动画的合集,主要通过自定义View实现一些常见的加载动画,也会模仿一些主流APP好看的加载动画。项目源码同步上传到了个人github上,欢迎大家star,fork,提...
  • tyk0910
  • tyk0910
  • 2016年12月16日 10:37
  • 8295

android加载GIF动画

gif图动画在Android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个。经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的gif的展示...
  • u014702999
  • u014702999
  • 2016年05月11日 11:55
  • 1007

自定义加载等待动画

  • 2017年08月24日 10:02
  • 16.72MB
  • 下载

仿雅虎新闻加载动画

  • 2017年09月17日 12:43
  • 265KB
  • 下载

加载页面动画

  • 2015年07月16日 20:07
  • 3.26MB
  • 下载

自定义 仿扣扣水加载动画

  • 2017年01月02日 20:51
  • 21.49MB
  • 下载

点击屏幕重新加载动画

  • 2017年03月15日 18:04
  • 350KB
  • 下载

仿58同城加载动画

  • 2014年11月25日 18:52
  • 1.3MB
  • 下载

58同城动画加载

  • 2015年12月14日 10:43
  • 3.14MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:加载动画
举报原因:
原因补充:

(最多只允许输入30个字)