123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- //
- // ViceLoadingView.m
- // Unity-iPhone
- //
- // Created by duowan123 on 2022/8/2.
- //
- /*************************** 获取屏幕 宽度、高度 ***************************/
- #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
- #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
- #define RGBA(a,b,c,d) [UIColor colorWithRed:a/255.0 green:b/255.0 blue:c/255.0 alpha:d]
- #define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;
- #import "ViceLoadingView.h"
- #import "MYFactoryManager.h"
- @implementation ViceLoadingView
- +(instancetype)shanreAnimationView{
-
- static ViceLoadingView * animationView = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- animationView = [ViceLoadingView new];
- });
- return animationView;
-
- }
- -(void)stopAnimation{
-
- // if (self.imageView.isAnimating){
-
- [self.imageView stopAnimating];
- [self.animationView removeFromSuperview];
- [self.backView removeFromSuperview];
- [self.imageView removeFromSuperview];
- [self.animationLabel removeFromSuperview];
- [self.countButton removeFromSuperview];
-
- // }
-
- [self pauseLayer:self.imageView.layer];
-
- }
- //初始化动画
- -(void)addAnimation{
-
- if (self.animationView!=nil){
- [self stopAnimation];
- }
-
- self.animationView = [UIView new];
- self.animationView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
- self.animationView.backgroundColor = RGBA(76, 76, 76, 0.8);
- [[UIApplication sharedApplication].keyWindow addSubview:self.animationView];
-
- //
- self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake((SCREEN_WIDTH - 90) / 2,(SCREEN_HEIGHT - 90) / 2, 90, 90)];
- self.imageView.image = [MYFactoryManager imageString:@"loading"];
- [self.animationView addSubview:self.imageView];
-
- //tip
- self.animationLabel = [[UILabel alloc] initWithFrame:CGRectMake((SCREEN_WIDTH - 90) / 2, (SCREEN_HEIGHT - 90)/2+90+10,180, 40)];
- // self.animationLabel.text = @"链接鞋子...";
- self.animationLabel.textColor = [UIColor whiteColor];
- self.animationLabel.font = [UIFont systemFontOfSize:12];
- self.animationLabel.textAlignment = NSTextAlignmentCenter;
- self.animationLabel.backgroundColor = [UIColor clearColor];
- [self.animationView addSubview:self.animationLabel];
-
- //添加旋转动画
- _rotationAnimation = [self rotationDurTime:2 angle:360.f direction:-1 repeatCount:MAXFLOAT];
- _rotationAnimation.delegate = self;
- _rotationAnimation.removedOnCompletion = NO;
- [_rotationAnimation setRepeatCount:HUGE_VALF];
- _rotationAnimation.speed = 1;
- [self.imageView.layer addAnimation:self.rotationAnimation forKey:@"rotate"];
-
- WS(ws);
- //链接超时
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(15 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [ws stopAnimation];
- });
-
- }
- //暂停layer上面的动画
- -(void)pauseLayer:(CALayer*)layer{
-
- CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
- layer.speed = 0.0;
- layer.timeOffset = pausedTime;
-
- }
- //周期时间 角度 方向 重复次数
- -(CABasicAnimation *)rotationDurTime:(float)durTime angle:(float)angle direction:(int)direction repeatCount:(int)repeatCount{
-
- CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
- // animation.fromValue = [NSNumber numberWithFloat:0.f];
- animation.toValue = [NSNumber numberWithFloat:M_PI];
- animation.duration= durTime;
- animation.cumulative= YES;//是否累加
- animation.removedOnCompletion=NO;
- animation.fillMode =kCAFillModeForwards;
- animation.autoreverses = NO;//自动逆转
- animation.repeatCount = repeatCount;
- return animation;
-
- }
- @end
|