KCSP/ProductApp/ProductApp/ProductMain/LoadAlter/LoadAlterView.m

205 lines
6.0 KiB
Objective-C

//
// LoadAlterView.m
// ProductApp
//
// Created by 工作 on 2024/6/21.
//
#import "LoadAlterView.h"
#import <libpag/PAGView.h>
static LoadAlterView *viewAlter;
@interface LoadAlterView ()
///
@property (nonatomic , strong) UIView *viewback;
///
@property (nonatomic , strong) UIImageView *imgvback;
///
@property (nonatomic , strong) PAGView *pagView;
///
@property (nonatomic , strong) UILabel *lbname;
///
@property (nonatomic , strong) NSString *title;
///
@property (nonatomic , assign) CGSize vsize;
///
@property (nonatomic , strong) NSTimer *timer;
@end
@implementation LoadAlterView
-(void)removePag
{
if(self.pagView.isPlaying)
{
[self.pagView stop];
[self.pagView freeCache];
}
}
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
{
[self setBackgroundColor:RGBACOLOR(0, 0, 0, 0.3)];
UIView *viewback = [[UIView alloc] init];
[viewback setBackgroundColor:RGBCOLOR(34, 34, 34)];
[self addSubview:viewback];
[viewback mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(self);
make.width.offset(280);
make.height.offset(200);
}];
[viewback.layer setMasksToBounds:YES];
[viewback.layer setCornerRadius:20];
_viewback = viewback;
UIImageView *imgvback = [[UIImageView alloc] init];
// [imgvback setImage:[UIImage imageNamed:@"loading"]];
[viewback addSubview:imgvback];
[imgvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.equalTo(viewback.mas_width).multipliedBy(0.23);
make.centerX.equalTo(viewback);
make.centerY.equalTo(viewback).offset(-15);
}];
_imgvback = imgvback;
// CABasicAnimation *animation;
// animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
// animation.fromValue = [NSNumber numberWithFloat:0];
// animation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)*2]; // 旋转两圈
// animation.duration = 3.0; // 旋转时间
// animation.repeatCount = HUGE_VALF; // 无限次数的重复
// // 将动画添加到图层并开始动画
// [imgvback.layer addAnimation:animation forKey:@"rotationAnimation"];
NSString *strpath = [[NSBundle mainBundle] pathForResource:@"load_start" ofType:@"pag"];
PAGView *pagView = [[PAGView alloc] initWithFrame:CGRectMake(0, 0, 115, 115)];
[viewback addSubview:pagView];
[pagView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(115);
make.center.equalTo(viewback);
}];
PAGFile* pagFile = [PAGFile Load:strpath];
[pagView setComposition:pagFile];
[pagView setRepeatCount:0];
[pagView play];
_pagView = pagView;
UILabel *lbname = [[UILabel alloc] init];
[lbname setText:@"链接解析中"];
[lbname setTextColor:RGBCOLOR(102, 102, 102)];
[lbname setTextAlignment:NSTextAlignmentLeft];
[lbname setFont:[UIFont systemFontOfSize:14]];
[viewback addSubview:lbname];
[lbname mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(viewback);
make.top.equalTo(imgvback.mas_bottom).offset(15);
}];
_lbname = lbname;
self.timer = [NSTimer scheduledTimerWithTimeInterval:180 target:self selector:@selector(timedismis) userInfo:nil repeats:NO];
}
return self;
}
-(void)setTitle:(NSString *)title
{
self.lbname.text = title;
if(title.length==0)
{
[self.imgvback mas_updateConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.viewback);
}];
}
else
{
[self.imgvback mas_updateConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.viewback).offset(-15);
}];
}
}
-(void)setVsize:(CGSize)vsize
{
[self.viewback mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.offset(vsize.width);
make.height.offset(vsize.height);
}];
}
-(void)timedismis
{
dispatch_async(dispatch_get_main_queue(), ^{
if(viewAlter){
[viewAlter removePag];
// [viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removeFromSuperview];
viewAlter = nil;
}
});
}
+(void)showView:(UIView *)view frame:(CGSize)size title:(NSString *)title
{
if(viewAlter)
{
if(viewAlter.timer)
{
[viewAlter.timer invalidate];
viewAlter.timer = nil;
}
[viewAlter removePag];
// [viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removeFromSuperview];
viewAlter = nil;
}
LoadAlterView *viewshow = [[LoadAlterView alloc] initWithFrame:CGRectMake(0, 0, view.width, view.height)];
[view addSubview:viewshow];
viewshow.vsize = size;
viewshow.title = title;
viewAlter = viewshow;
}
+(void)showView
{
if(viewAlter)
{
[viewAlter removePag];
// [viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removeFromSuperview];
viewAlter = nil;
}
LoadAlterView *viewshow = [[LoadAlterView alloc] initWithFrame:CGRectMake(0, 0, UISCREEN_WIDTH,UISCREEN_HEIGHT)];
[[UIApplication sharedApplication].delegate.window addSubview:viewshow];
viewshow.vsize = CGSizeMake(200, 150);
viewshow.title = @"";
viewAlter = viewshow;
}
+(void)refTitle:(NSString *)title
{
if(viewAlter)
{
viewAlter.title = title;
}
}
+(void)dismis
{
dispatch_async(dispatch_get_main_queue(), ^{
if(viewAlter){
[viewAlter removePag];
// [viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removeFromSuperview];
viewAlter = nil;
}
});
}
@end