| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 | ////  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 <ASSignDayView *>*dayArr;@property (nonatomic, strong) UILabel *titleLb;@property (nonatomic, strong) UIButton *signBt;@property (nonatomic, strong) ASSginViewModel *vm;@end@implementation ASSginView- (void)signBtAction {    [MBProgressHUD showHUDAddedTo:UIApplication.sharedApplication.keyWindow animated:true];    [self.vm signToday:^{        [ASUserInfoManager.shared getInfo];        [MBProgressHUD hideHUDForView:UIApplication.sharedApplication.keyWindow animated:true];    }];}- (void)refreshData {    __weak typeof(self) weakSelf = self;    [self.vm getSignData:^(NSArray * _Nonnull arr) {        [weakSelf setData:arr];    }];}- (void)setData:(NSArray<NSDictionary<NSString *, NSString*> *> *)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<data.count; i++) {        NSDictionary<NSString *, NSString*> *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<NSString *, NSString*> *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
 |