// // ASSginView.m // Asteria // // Created by iOS on 2023/5/16. // #import "ASSginView.h" #import "ASSignDayView.h" #import "ASSginViewModel.h" @interface ASSginView () @property (nonatomic, strong) UIView *bgV; @property (nonatomic, strong) UIView *colorBgV; @property (nonatomic, strong) UIView *baseLineV; @property (nonatomic, strong) UIView *waitSignLineV; @property (nonatomic, strong) UIView *unSignLineV; @property (nonatomic, strong) NSArray *dayArr; @property (nonatomic, strong) UILabel *titleLb; @property (nonatomic, strong) UIButton *signBt; @property (nonatomic, strong) ASSginViewModel *vm; @end @implementation ASSginView - (void)signBtAction { K_WEAK_SELF; [MBProgressHUD showHUDAddedTo:UIApplication.sharedApplication.keyWindow animated:true]; [self.vm signToday:^{ K_STRONG_SELF; [ASUserInfoManager.shared getInfo]; [MBProgressHUD hideHUDForView:UIApplication.sharedApplication.keyWindow animated:true]; [self requestUserIsSignData]; }]; } - (void)refreshData { __weak typeof(self) weakSelf = self; [self.vm getSignData:^(NSArray * _Nonnull arr) { [weakSelf setData:arr]; }]; [self requestUserIsSignData]; } - (void)requestUserIsSignData { [self.vm requestGetUserIsSign:^(BOOL isSign) { self.signBt.backgroundColor = isSign ? Col_999 : Col_000; self.signBt.userInteractionEnabled = !isSign; }]; } - (void)setData:(NSArray *> *)data { self.unSignLineV.hidden = true; self.waitSignLineV.hidden = true; for (ASSignDayView *v in self.dayArr) { if (v.superview) { [v removeFromSuperview]; } } self.dayArr = @[]; NSMutableArray *arr = [NSMutableArray array]; CGFloat space = (KScreenWidth-60-11*7)/6; int todayindex = 0; BOOL todayIsSign = true; ASSignDayView *todayV = nil; for (int i = 0; i *dayData = data[i]; ASSignDayView *v = [[ASSignDayView alloc] initWithFrame:CGRectZero]; v.tag = 10000+i; [arr addObject:v]; [self.bgV addSubview:v]; NSInteger signState = dayData[@"isSign"].integerValue; [v setDay:dayData[@"day"].integerValue st:signState]; if (signState == 1) { todayIsSign = false; todayindex = i; todayV = v; } else if (signState == 2) { if (i+1 < data.count) { NSDictionary *nextData = data[i+1]; NSInteger nextSignState = nextData[@"isSign"].integerValue; if (signState == 2 && nextSignState == -1) { todayIsSign = true; todayindex = i; todayV = v; } } else { todayIsSign = signState == 2; todayindex = i; todayV = v; } } else { if (i == 0) { todayIsSign = false; todayindex = i; todayV = v; } } [v mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.baseLineV.mas_left).offset((i)*(space + 11)+5.5); make.bottom.equalTo(self.baseLineV.mas_centerY).offset(5.5); }]; } self.dayArr = arr; if (todayV == nil) { return; } if (!todayIsSign && todayindex != 0) { self.waitSignLineV.hidden = false; [self.waitSignLineV mas_remakeConstraints:^(MASConstraintMaker *make) { make.trailing.equalTo(todayV.statusImgV.mas_centerX); make.width.equalTo([NSNumber numberWithFloat:space+11]); make.height.equalTo(@1); make.centerY.equalTo(self.baseLineV); }]; } self.unSignLineV.hidden = false; [self.unSignLineV mas_remakeConstraints:^(MASConstraintMaker *make) { make.trailing.equalTo(self.baseLineV.mas_trailing); make.leading.equalTo(todayV.statusImgV.mas_centerX); make.height.equalTo(@1); make.centerY.equalTo(self.baseLineV); }]; // self.signBt.backgroundColor = todayIsSign ? Col_999 : Col_000; // self.signBt.userInteractionEnabled = !todayIsSign; } - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.bgV.frame = CGRectMake(10, 10, frame.size.width-20, frame.size.height-20); self.colorBgV.frame = self.bgV.bounds; self.vm = [ASSginViewModel new]; [self loadSubV]; } return self; } - (void)loadSubV { self.backgroundColor = Col_FFF; [self addSubview:self.bgV]; [self.bgV addSubview:self.colorBgV]; [self.bgV addSubview:self.titleLb]; [self.bgV addSubview:self.signBt]; [self.bgV addSubview:self.baseLineV]; [self.bgV addSubview:self.waitSignLineV]; [self.bgV addSubview:self.unSignLineV]; self.unSignLineV.hidden = true; self.waitSignLineV.hidden = true; [self.bgV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.leading.equalTo(self).offset(10); make.bottom.trailing.equalTo(self).offset(-10); }]; [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.bgV).offset(10); make.leading.equalTo(self.bgV).offset(20); make.trailing.equalTo(self.bgV).offset(-20); make.height.equalTo(@19); }]; [self.baseLineV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.titleLb.mas_bottom).offset(49); make.leading.equalTo(self.bgV).offset(20); make.trailing.equalTo(self.bgV).offset(-20); make.height.equalTo(@1); }]; [self.signBt mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.baseLineV.mas_bottom).offset(24); make.leading.equalTo(self.bgV).offset(20); make.trailing.equalTo(self.bgV).offset(-20); make.height.equalTo(@45); make.bottom.equalTo(self.bgV).offset(-15); }]; [self.unSignLineV mas_makeConstraints:^(MASConstraintMaker *make) { make.width.height.equalTo(@0); }]; [self.waitSignLineV mas_makeConstraints:^(MASConstraintMaker *make) { make.width.height.equalTo(@0); }]; dispatch_async(dispatch_get_main_queue(), ^{ [UIView viewAddHorColorBg:self.colorBgV colorArr:@[ (id)_C8FFED.CGColor, (id)Col_FFF.CGColor ]]; }); } - (UIView *)bgV { if (!_bgV) { UIView *v = [UIView baseV]; v.layer.cornerRadius = 8; v.layer.masksToBounds = true; v.backgroundColor = _F8F8F8; _bgV = v; } return _bgV; } - (UIView *)colorBgV { if (!_colorBgV) { UIView *v = [UIView baseV]; v.layer.cornerRadius = 8; v.layer.masksToBounds = true; // v.backgroundColor = _F8F8F8; _colorBgV = v; } return _colorBgV; } - (UIView *)baseLineV { if (!_baseLineV) { UIView *v = [UIView baseV]; v.backgroundColor = _113632; _baseLineV = v; } return _baseLineV; } - (UIView *)waitSignLineV { if (!_waitSignLineV) { UIView *v = [UIView baseV]; v.backgroundColor = Col_666; _waitSignLineV = v; } return _waitSignLineV; } - (UIView *)unSignLineV { if (!_unSignLineV) { UIView *v = [UIView baseV]; v.backgroundColor = _E5E5E5; _unSignLineV = v; } return _unSignLineV; } - (UILabel *)titleLb { if (!_titleLb) { UILabel *lb = [UILabel baseLb]; lb.font = [UIFont fontWithName:Rob_Bold size:16]; lb.text = @"SIGN"; lb.textColor = Col_000; _titleLb = lb; } return _titleLb; } - (UIButton *)signBt { if (!_signBt) { UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom]; [bt setTitle:@"Sign In" forState:UIControlStateNormal]; bt.layer.cornerRadius = 4; bt.layer.masksToBounds = true; [bt setTitleColor:Col_FFF forState:UIControlStateNormal]; bt.titleLabel.font = [UIFont fontWithName:Rob_Bold size:16]; bt.backgroundColor = Col_000; [bt addTarget:self action:@selector(signBtAction) forControlEvents:UIControlEventTouchUpInside]; _signBt = bt; } return _signBt; } @end