ASSginView.m 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. //
  2. // ASSginView.m
  3. // Asteria
  4. //
  5. // Created by iOS on 2023/5/16.
  6. //
  7. #import "ASSginView.h"
  8. #import "ASSignDayView.h"
  9. #import "ASSginViewModel.h"
  10. @interface ASSginView ()
  11. @property (nonatomic, strong) UIView *bgV;
  12. @property (nonatomic, strong) UIView *colorBgV;
  13. @property (nonatomic, strong) UIView *baseLineV;
  14. @property (nonatomic, strong) UIView *waitSignLineV;
  15. @property (nonatomic, strong) UIView *unSignLineV;
  16. @property (nonatomic, strong) NSArray <ASSignDayView *>*dayArr;
  17. @property (nonatomic, strong) UILabel *titleLb;
  18. @property (nonatomic, strong) UIButton *signBt;
  19. @property (nonatomic, strong) ASSginViewModel *vm;
  20. @end
  21. @implementation ASSginView
  22. - (void)signBtAction {
  23. [MBProgressHUD showHUDAddedTo:UIApplication.sharedApplication.keyWindow animated:true];
  24. [self.vm signToday:^{
  25. [ASUserInfoManager.shared getInfo];
  26. [MBProgressHUD hideHUDForView:UIApplication.sharedApplication.keyWindow animated:true];
  27. }];
  28. }
  29. - (void)refreshData {
  30. __weak typeof(self) weakSelf = self;
  31. [self.vm getSignData:^(NSArray * _Nonnull arr) {
  32. [weakSelf setData:arr];
  33. }];
  34. }
  35. - (void)setData:(NSArray<NSDictionary<NSString *, NSString*> *> *)data {
  36. self.unSignLineV.hidden = true;
  37. self.waitSignLineV.hidden = true;
  38. for (ASSignDayView *v in self.dayArr) {
  39. if (v.superview) {
  40. [v removeFromSuperview];
  41. }
  42. }
  43. self.dayArr = @[];
  44. NSMutableArray *arr = [NSMutableArray array];
  45. CGFloat space = (KScreenWidth-60-11*7)/6;
  46. int todayindex = 0;
  47. BOOL todayIsSign = true;
  48. ASSignDayView *todayV = nil;
  49. for (int i = 0; i<data.count; i++) {
  50. NSDictionary<NSString *, NSString*> *dayData = data[i];
  51. ASSignDayView *v = [[ASSignDayView alloc] initWithFrame:CGRectZero];
  52. v.tag = 10000+i;
  53. [arr addObject:v];
  54. [self.bgV addSubview:v];
  55. NSInteger signState = dayData[@"isSign"].integerValue;
  56. [v setDay:dayData[@"day"].integerValue st:signState];
  57. if (signState == 1) {
  58. todayIsSign = false;
  59. todayindex = i;
  60. todayV = v;
  61. } else if (signState == 2) {
  62. if (i+1 < data.count) {
  63. NSDictionary<NSString *, NSString*> *nextData = data[i+1];
  64. NSInteger nextSignState = nextData[@"isSign"].integerValue;
  65. if (signState == 2 && nextSignState == -1) {
  66. todayIsSign = true;
  67. todayindex = i;
  68. todayV = v;
  69. }
  70. } else {
  71. todayIsSign = signState == 2;
  72. todayindex = i;
  73. todayV = v;
  74. }
  75. } else {
  76. if (i == 0) {
  77. todayIsSign = false;
  78. todayindex = i;
  79. todayV = v;
  80. }
  81. }
  82. [v mas_makeConstraints:^(MASConstraintMaker *make) {
  83. make.centerX.equalTo(self.baseLineV.mas_left).offset((i)*(space + 11)+5.5);
  84. make.bottom.equalTo(self.baseLineV.mas_centerY).offset(5.5);
  85. }];
  86. }
  87. self.dayArr = arr;
  88. if (todayV == nil) {
  89. return;
  90. }
  91. if (!todayIsSign && todayindex != 0) {
  92. self.waitSignLineV.hidden = false;
  93. [self.waitSignLineV mas_remakeConstraints:^(MASConstraintMaker *make) {
  94. make.trailing.equalTo(todayV.statusImgV.mas_centerX);
  95. make.width.equalTo([NSNumber numberWithFloat:space+11]);
  96. make.height.equalTo(@1);
  97. make.centerY.equalTo(self.baseLineV);
  98. }];
  99. }
  100. self.unSignLineV.hidden = false;
  101. [self.unSignLineV mas_remakeConstraints:^(MASConstraintMaker *make) {
  102. make.trailing.equalTo(self.baseLineV.mas_trailing);
  103. make.leading.equalTo(todayV.statusImgV.mas_centerX);
  104. make.height.equalTo(@1);
  105. make.centerY.equalTo(self.baseLineV);
  106. }];
  107. self.signBt.backgroundColor = todayIsSign ? Col_999 : Col_000;
  108. self.signBt.userInteractionEnabled = !todayIsSign;
  109. }
  110. - (instancetype)initWithFrame:(CGRect)frame {
  111. self = [super initWithFrame:frame];
  112. if (self) {
  113. self.bgV.frame = CGRectMake(10, 10, frame.size.width-20, frame.size.height-20);
  114. self.colorBgV.frame = self.bgV.bounds;
  115. self.vm = [ASSginViewModel new];
  116. [self loadSubV];
  117. }
  118. return self;
  119. }
  120. - (void)loadSubV {
  121. self.backgroundColor = Col_FFF;
  122. [self addSubview:self.bgV];
  123. [self.bgV addSubview:self.colorBgV];
  124. [self.bgV addSubview:self.titleLb];
  125. [self.bgV addSubview:self.signBt];
  126. [self.bgV addSubview:self.baseLineV];
  127. [self.bgV addSubview:self.waitSignLineV];
  128. [self.bgV addSubview:self.unSignLineV];
  129. self.unSignLineV.hidden = true;
  130. self.waitSignLineV.hidden = true;
  131. [self.bgV mas_makeConstraints:^(MASConstraintMaker *make) {
  132. make.top.leading.equalTo(self).offset(10);
  133. make.bottom.trailing.equalTo(self).offset(-10);
  134. }];
  135. [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
  136. make.top.equalTo(self.bgV).offset(10);
  137. make.leading.equalTo(self.bgV).offset(20);
  138. make.trailing.equalTo(self.bgV).offset(-20);
  139. make.height.equalTo(@19);
  140. }];
  141. [self.baseLineV mas_makeConstraints:^(MASConstraintMaker *make) {
  142. make.top.equalTo(self.titleLb.mas_bottom).offset(49);
  143. make.leading.equalTo(self.bgV).offset(20);
  144. make.trailing.equalTo(self.bgV).offset(-20);
  145. make.height.equalTo(@1);
  146. }];
  147. [self.signBt mas_makeConstraints:^(MASConstraintMaker *make) {
  148. make.top.equalTo(self.baseLineV.mas_bottom).offset(24);
  149. make.leading.equalTo(self.bgV).offset(20);
  150. make.trailing.equalTo(self.bgV).offset(-20);
  151. make.height.equalTo(@45);
  152. make.bottom.equalTo(self.bgV).offset(-15);
  153. }];
  154. [self.unSignLineV mas_makeConstraints:^(MASConstraintMaker *make) {
  155. make.width.height.equalTo(@0);
  156. }];
  157. [self.waitSignLineV mas_makeConstraints:^(MASConstraintMaker *make) {
  158. make.width.height.equalTo(@0);
  159. }];
  160. dispatch_async(dispatch_get_main_queue(), ^{
  161. [UIView viewAddHorColorBg:self.colorBgV colorArr:@[
  162. (id)_C8FFED.CGColor,
  163. (id)Col_FFF.CGColor
  164. ]];
  165. });
  166. }
  167. - (UIView *)bgV {
  168. if (!_bgV) {
  169. UIView *v = [UIView baseV];
  170. v.layer.cornerRadius = 8;
  171. v.layer.masksToBounds = true;
  172. v.backgroundColor = _F8F8F8;
  173. _bgV = v;
  174. }
  175. return _bgV;
  176. }
  177. - (UIView *)colorBgV {
  178. if (!_colorBgV) {
  179. UIView *v = [UIView baseV];
  180. v.layer.cornerRadius = 8;
  181. v.layer.masksToBounds = true;
  182. // v.backgroundColor = _F8F8F8;
  183. _colorBgV = v;
  184. }
  185. return _colorBgV;
  186. }
  187. - (UIView *)baseLineV {
  188. if (!_baseLineV) {
  189. UIView *v = [UIView baseV];
  190. v.backgroundColor = _113632;
  191. _baseLineV = v;
  192. }
  193. return _baseLineV;
  194. }
  195. - (UIView *)waitSignLineV {
  196. if (!_waitSignLineV) {
  197. UIView *v = [UIView baseV];
  198. v.backgroundColor = Col_666;
  199. _waitSignLineV = v;
  200. }
  201. return _waitSignLineV;
  202. }
  203. - (UIView *)unSignLineV {
  204. if (!_unSignLineV) {
  205. UIView *v = [UIView baseV];
  206. v.backgroundColor = _E5E5E5;
  207. _unSignLineV = v;
  208. }
  209. return _unSignLineV;
  210. }
  211. - (UILabel *)titleLb {
  212. if (!_titleLb) {
  213. UILabel *lb = [UILabel baseLb];
  214. lb.font = [UIFont fontWithName:Rob_Bold size:16];
  215. lb.text = @"SIGN";
  216. lb.textColor = Col_000;
  217. _titleLb = lb;
  218. }
  219. return _titleLb;
  220. }
  221. - (UIButton *)signBt {
  222. if (!_signBt) {
  223. UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
  224. [bt setTitle:@"Sign In" forState:UIControlStateNormal];
  225. bt.layer.cornerRadius = 4;
  226. bt.layer.masksToBounds = true;
  227. [bt setTitleColor:Col_FFF forState:UIControlStateNormal];
  228. bt.titleLabel.font = [UIFont fontWithName:Rob_Bold size:16];
  229. bt.backgroundColor = Col_000;
  230. [bt addTarget:self action:@selector(signBtAction) forControlEvents:UIControlEventTouchUpInside];
  231. _signBt = bt;
  232. }
  233. return _signBt;
  234. }
  235. @end