ASSginView.m 8.3 KB

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