ASCouponListCell.m 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. //
  2. // ASCouponListCell.m
  3. // Asteria
  4. //
  5. // Created by iOS on 2023/6/25.
  6. //
  7. #import "ASCouponListCell.h"
  8. @interface ASCouponListCell ()
  9. @property (nonatomic, strong) UIView *bgV;
  10. @property (nonatomic, strong) UIImageView *bg1;
  11. @property (nonatomic, strong) UIImageView *bg2;
  12. @property (nonatomic, strong) UIImageView *ln1;
  13. @property (nonatomic, strong) UIImageView *ln2;
  14. @property (nonatomic, strong) UIImageView *sep;
  15. @property (nonatomic, strong) UILabel *titleLb;
  16. @property (nonatomic, strong) UILabel *ruleLb;
  17. @property (nonatomic, strong) UILabel *dateLb;
  18. @property (nonatomic, strong) UILabel *cpLb;
  19. @property (nonatomic, strong) UILabel *codeTitleLb;
  20. @property (nonatomic, strong) UILabel *codeLb;
  21. @property (nonatomic, strong) UIButton *cpBt;
  22. @property (nonatomic, strong) UILabel *usedLb;
  23. @end
  24. @implementation ASCouponListCell
  25. - (void)awakeFromNib {
  26. [super awakeFromNib];
  27. // Initialization code
  28. }
  29. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
  30. [super setSelected:selected animated:animated];
  31. // Configure the view for the selected state
  32. }
  33. - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
  34. self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
  35. if (self)
  36. {
  37. [self loadSubVs];
  38. [self setDemoData];
  39. }
  40. return self;
  41. }
  42. - (void)setDemoData {
  43. self.titleLb.text = @"$10 off";
  44. self.ruleLb.text = @"For Order ≥ $99";
  45. self.dateLb.text = @"DTAE:2022/09/01-2022/09/30";
  46. self.codeLb.text = @"3VIP55";
  47. [self setStatus:arc4random()%2==1];
  48. }
  49. - (void)setGiftCardStyle {
  50. self.codeLb.hidden = true;
  51. self.codeTitleLb.text = @"GIFTCARD";
  52. self.cpLb.text = @"USE";
  53. }
  54. - (void)setStatus:(BOOL)isUsed {
  55. self.usedLb.hidden = !isUsed;
  56. self.cpBt.hidden = isUsed;
  57. self.titleLb.textColor = isUsed ? _DBDBDB : Col_000;
  58. self.ruleLb.textColor = isUsed ? _DBDBDB : _043632;
  59. self.dateLb.textColor = isUsed ? _DBDBDB : _128273;
  60. self.codeTitleLb.textColor = isUsed ? Col_FFF : _043632;
  61. self.codeLb.textColor = isUsed ? Col_FFF : _043632;
  62. self.bg1.image = [UIImage imageNamed:isUsed ? @"uc_coupon_colorBg1_sel" : @"uc_coupon_colorBg1"];
  63. self.bg2.image = [UIImage imageNamed:isUsed ? @"uc_coupon_colorBg2_sel" : @"uc_coupon_colorBg2"];
  64. self.ln1.image = [UIImage imageNamed:isUsed ? @"uc_coupon_line1_sel" : @"uc_coupon_line1"];
  65. self.ln2.image = [UIImage imageNamed:isUsed ? @"uc_coupon_line2_sel" : @"uc_coupon_line2"];
  66. self.sep.image = [UIImage imageNamed:isUsed ? @"uc_coupon_sep_sel" : @"uc_coupon_sep"];
  67. }
  68. - (void)loadSubVs {
  69. self.backgroundColor = UIColor.clearColor;
  70. self.contentView.backgroundColor = UIColor.clearColor;
  71. self.selectionStyle = UITableViewCellSelectionStyleNone;
  72. [self.contentView addSubview:self.bgV];
  73. [self.bgV addSubview:self.bg1];
  74. [self.bgV addSubview:self.bg2];
  75. [self.bgV addSubview:self.ln1];
  76. [self.bgV addSubview:self.ln2];
  77. [self.bgV addSubview:self.sep];
  78. //229/106
  79. [self.bgV mas_makeConstraints:^(MASConstraintMaker *make) {
  80. make.height.equalTo(@100);
  81. make.leading.equalTo(self.contentView).offset(20);
  82. make.trailing.equalTo(self.contentView).offset(-20);
  83. make.top.equalTo(self.contentView).offset(15);
  84. make.bottom.equalTo(self.contentView).offset(-5);
  85. }];
  86. [self.bg1 mas_makeConstraints:^(MASConstraintMaker *make) {
  87. make.edges.equalTo(self.bgV);
  88. }];
  89. [self.bg2 mas_makeConstraints:^(MASConstraintMaker *make) {
  90. make.top.bottom.trailing.equalTo(self.bgV);
  91. make.width.equalTo(self.bgV).multipliedBy(106.0/(229+106));
  92. }];
  93. [self.sep mas_makeConstraints:^(MASConstraintMaker *make) {
  94. make.width.equalTo(@3);
  95. make.top.bottom.equalTo(self.bgV);
  96. make.centerX.equalTo(self.bg2.mas_leading);
  97. }];
  98. [self.ln1 mas_makeConstraints:^(MASConstraintMaker *make) {
  99. make.edges.equalTo(self.bgV);
  100. }];
  101. [self.ln2 mas_makeConstraints:^(MASConstraintMaker *make) {
  102. make.leading.equalTo(self.bgV).offset(5);
  103. make.trailing.equalTo(self.bgV).offset(-5);
  104. make.top.equalTo(self.bgV).offset(5);
  105. make.bottom.equalTo(self.bgV).offset(-5);
  106. }];
  107. [self.bgV addSubview:self.titleLb];
  108. [self.bgV addSubview:self.ruleLb];
  109. [self.bgV addSubview:self.dateLb];
  110. UIStackView *st = [UIStackView baseStackV:true];
  111. st.spacing = 0;
  112. st.distribution = UIStackViewDistributionFill;
  113. [self.bgV addSubview:st];
  114. [st addArrangedSubview:self.cpLb];
  115. [st addArrangedSubview:self.codeTitleLb];
  116. [st addArrangedSubview:self.codeLb];
  117. [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
  118. make.top.equalTo(self.bgV).offset(16);
  119. make.leading.equalTo(self.bgV).offset(30);
  120. make.trailing.equalTo(self.sep.mas_leading).offset(-8);
  121. make.height.equalTo(@34);
  122. }];
  123. [self.ruleLb mas_makeConstraints:^(MASConstraintMaker *make) {
  124. make.top.equalTo(self.titleLb.mas_bottom);
  125. make.leading.trailing.equalTo(self.titleLb);
  126. make.height.equalTo(@14);
  127. }];
  128. [self.dateLb mas_makeConstraints:^(MASConstraintMaker *make) {
  129. make.top.equalTo(self.ruleLb.mas_bottom).offset(6);
  130. make.leading.trailing.equalTo(self.titleLb);
  131. make.height.equalTo(@14);
  132. }];
  133. [st mas_makeConstraints:^(MASConstraintMaker *make) {
  134. make.centerY.equalTo(self.bg2);
  135. make.centerX.equalTo(self.bg2).offset(-8);
  136. make.width.equalTo(@80);
  137. }];
  138. [self.cpLb mas_makeConstraints:^(MASConstraintMaker *make) {
  139. make.height.equalTo(@34);
  140. }];
  141. [self.codeTitleLb mas_makeConstraints:^(MASConstraintMaker *make) {
  142. make.height.equalTo(@17);
  143. }];
  144. [self.codeLb mas_makeConstraints:^(MASConstraintMaker *make) {
  145. make.height.equalTo(@17);
  146. }];
  147. [self.bg2 addSubview:self.cpBt];
  148. [self.cpBt mas_makeConstraints:^(MASConstraintMaker *make) {
  149. make.edges.equalTo(self.bg2);
  150. }];
  151. st.transform = CGAffineTransformRotate(st.transform, -M_PI/2.0);
  152. [self.bgV addSubview:self.usedLb];
  153. [self.usedLb mas_makeConstraints:^(MASConstraintMaker *make) {
  154. make.center.equalTo(self.bgV);
  155. }];
  156. self.usedLb.transform = CGAffineTransformRotate(self.usedLb.transform, -M_PI/6.0);
  157. }
  158. - (UIView *)bgV {
  159. if (!_bgV) {
  160. UIView *v = [UIView baseV];
  161. v.backgroundColor = UIColor.clearColor;
  162. v.clipsToBounds = true;
  163. _bgV = v;
  164. }
  165. return _bgV;
  166. }
  167. - (UIImageView *)bg1 {
  168. if (!_bg1) {
  169. UIImageView *v = [UIImageView baseImgV];
  170. v.contentMode = UIViewContentModeScaleToFill;
  171. v.clipsToBounds = true;
  172. v.image = [UIImage imageNamed:@"uc_coupon_colorBg1"];
  173. _bg1 = v;
  174. }
  175. return _bg1;
  176. }
  177. - (UIImageView *)bg2 {
  178. if (!_bg2) {
  179. UIImageView *v = [UIImageView baseImgV];
  180. v.contentMode = UIViewContentModeScaleToFill;
  181. v.userInteractionEnabled = true;
  182. v.clipsToBounds = true;
  183. v.image = [UIImage imageNamed:@"uc_coupon_colorBg2"];
  184. _bg2 = v;
  185. }
  186. return _bg2;
  187. }
  188. - (UIImageView *)ln1 {
  189. if (!_ln1) {
  190. UIImageView *v = [UIImageView baseImgV];
  191. v.contentMode = UIViewContentModeScaleToFill;
  192. v.clipsToBounds = true;
  193. v.image = [UIImage imageNamed:@"uc_coupon_line1"];
  194. _ln1 = v;
  195. }
  196. return _ln1;
  197. }
  198. - (UIImageView *)ln2 {
  199. if (!_ln2) {
  200. UIImageView *v = [UIImageView baseImgV];
  201. v.contentMode = UIViewContentModeScaleToFill;
  202. v.clipsToBounds = true;
  203. v.image = [UIImage imageNamed:@"uc_coupon_line2"];
  204. _ln2 = v;
  205. }
  206. return _ln2;
  207. }
  208. - (UIImageView *)sep {
  209. if (!_sep) {
  210. UIImageView *v = [UIImageView baseImgV];
  211. v.contentMode = UIViewContentModeScaleAspectFill;
  212. v.clipsToBounds = true;
  213. v.image = [UIImage imageNamed:@"uc_coupon_sep"];
  214. _sep = v;
  215. }
  216. return _sep;
  217. }
  218. - (UILabel *)titleLb {
  219. if (!_titleLb) {
  220. UILabel *lb = [UILabel baseLb];
  221. lb.font = [UIFont fontWithName:Rob_BlackItalic size:28];
  222. lb.textColor = Col_000;
  223. _titleLb = lb;
  224. }
  225. return _titleLb;
  226. }
  227. - (UILabel *)ruleLb {
  228. if (!_ruleLb) {
  229. UILabel *lb = [UILabel baseLb];
  230. lb.font = [UIFont fontWithName:Rob_Regular size:12];
  231. lb.textColor = _043632;
  232. _ruleLb = lb;
  233. }
  234. return _ruleLb;
  235. }
  236. - (UILabel *)dateLb {
  237. if (!_dateLb) {
  238. UILabel *lb = [UILabel baseLb];
  239. lb.font = [UIFont fontWithName:Rob_Regular size:12];
  240. lb.textColor = _128273;
  241. _dateLb = lb;
  242. }
  243. return _dateLb;
  244. }
  245. - (UILabel *)cpLb {
  246. if (!_cpLb) {
  247. UILabel *lb = [UILabel baseLb];
  248. lb.font = [UIFont fontWithName:Rob_Black size:28];
  249. lb.textColor = Col_FFF;
  250. lb.text = @"COPY";
  251. lb.textAlignment = NSTextAlignmentCenter;
  252. _cpLb = lb;
  253. }
  254. return _cpLb;
  255. }
  256. - (UILabel *)codeTitleLb {
  257. if (!_codeTitleLb) {
  258. UILabel *lb = [UILabel baseLb];
  259. lb.font = [UIFont fontWithName:Rob_Regular size:14];
  260. lb.textAlignment = NSTextAlignmentCenter;
  261. lb.textColor = _043632;
  262. lb.text = @"CODE";
  263. _codeTitleLb = lb;
  264. }
  265. return _codeTitleLb;
  266. }
  267. - (UILabel *)codeLb {
  268. if (!_codeLb) {
  269. UILabel *lb = [UILabel baseLb];
  270. lb.textAlignment = NSTextAlignmentCenter;
  271. lb.font = [UIFont fontWithName:Rob_Regular size:14];
  272. lb.textColor = _043632;
  273. _codeLb = lb;
  274. }
  275. return _codeLb;
  276. }
  277. - (UILabel *)usedLb {
  278. if (!_usedLb) {
  279. UILabel *lb = [UILabel baseLb];
  280. lb.textAlignment = NSTextAlignmentCenter;
  281. lb.font = [UIFont fontWithName:Rob_Bold size:48];
  282. lb.textColor = Col_666;
  283. lb.text = @"USED";
  284. lb.hidden = true;
  285. _usedLb = lb;
  286. }
  287. return _usedLb;
  288. }
  289. - (UIButton *)cpBt {
  290. if (!_cpBt) {
  291. UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
  292. [bt addTarget: self action:@selector(copyAction) forControlEvents:UIControlEventTouchUpInside];
  293. _cpBt = bt;
  294. }
  295. return _cpBt;
  296. }
  297. - (void)copyAction {
  298. if (!self.codeLb.text.isEmpty) {
  299. UIPasteboard.generalPasteboard.string = self.codeLb.text;
  300. if (self.copyCallBack){
  301. self.copyCallBack();
  302. }
  303. }
  304. }
  305. @end