YMInvitingPrizesMyInvitationView.m 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. //
  2. // YMInvitingPrizesMyInvitationView.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/3/6.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMInvitingPrizesMyInvitationView.h"
  9. #import "YMInvitingPrizesViewModel.h"
  10. #define kinvitationInfoGridView_rowCount 2
  11. #define kinvitationInfoGridView_itemHeight 60
  12. @interface YMInvitingPrizesMyInvitationView ()
  13. /// 邀请有奖VM
  14. @property (nonatomic, strong) YMInvitingPrizesViewModel *viewModel;
  15. /// 顶部右视图
  16. @property (nonatomic, strong) UIView *topRightView;
  17. @property (nonatomic, strong) UIImageView *bgImgv;
  18. /// 渐变色图片视图
  19. @property (nonatomic, strong) UIImageView *titleImgv;
  20. /// 邀请人数
  21. @property (nonatomic, strong) UILabel *inviteNumLb;
  22. /// 邀请人数描述
  23. @property (nonatomic, strong) UILabel *inviteNumDesLb;
  24. /// 邀请明细
  25. @property (nonatomic, strong) UIButton *invitationBreakdownBtn;
  26. /// 奖励背景图
  27. @property (nonatomic, strong) UIView *jiangLiBgv;
  28. /// 奖励图标
  29. @property (nonatomic, strong) UIImageView *jiangLiIcon;
  30. /// 奖励数量
  31. @property (nonatomic, strong) UILabel *jiangLiNumLb;
  32. /// 奖励数量描述
  33. @property (nonatomic, strong) UILabel *jiangLiNumDesLb;
  34. /// 底部基础视图
  35. @property (nonatomic, strong) UIView *bottomBaseView;
  36. /// 邀请信息宫格配置
  37. @property (nonatomic, strong) BAGridView_Config *invitationInfoGridViewConfig;
  38. /// 邀请信息宫格视图
  39. @property (nonatomic, strong) BAGridView *invitationInfoGridView;
  40. @end
  41. @implementation YMInvitingPrizesMyInvitationView
  42. - (void)ym_setupViews{
  43. [self addSubview:self.topRightView];
  44. [self.topRightView addSubview:self.bgImgv];
  45. [self.topRightView addSubview:self.titleImgv];
  46. [self.topRightView addSubview:self.inviteNumLb];
  47. [self.topRightView addSubview:self.inviteNumDesLb];
  48. [self.topRightView addSubview:self.jiangLiBgv];
  49. [self.topRightView addSubview:self.jiangLiIcon];
  50. [self.topRightView addSubview:self.jiangLiNumLb];
  51. [self.topRightView addSubview:self.jiangLiNumDesLb];
  52. [self.topRightView addSubview:self.invitationBreakdownBtn];
  53. // [self addSubview:self.bottomBaseView];
  54. // [self.bottomBaseView addSubview:self.invitationInfoGridView];
  55. [self setNeedsUpdateConstraints];
  56. [self updateConstraintsIfNeeded];
  57. }
  58. - (void)updateConstraints{
  59. [self.topRightView mas_makeConstraints:^(MASConstraintMaker *make) {
  60. make.top.bottom.equalTo(self);
  61. make.left.equalTo(self).offset(adapt(15));
  62. make.right.equalTo(self).offset(adapt(-15));
  63. make.height.mas_equalTo(adapt(226));
  64. }];
  65. [self.bgImgv mas_makeConstraints:^(MASConstraintMaker *make) {
  66. make.edges.equalTo(self.topRightView);
  67. }];
  68. [self.titleImgv mas_makeConstraints:^(MASConstraintMaker *make) {
  69. make.top.equalTo(self.topRightView.mas_top).offset(adapt(28));
  70. make.centerX.equalTo(self.topRightView);
  71. make.width.mas_equalTo(adapt(156));
  72. make.height.mas_equalTo(adapt(25));
  73. }];
  74. [self.inviteNumLb mas_makeConstraints:^(MASConstraintMaker *make) {
  75. make.top.equalTo(self.titleImgv.mas_bottom).offset(adapt(16));
  76. make.centerX.equalTo(self.topRightView);
  77. make.height.mas_equalTo(adapt(33));
  78. }];
  79. [self.inviteNumDesLb mas_makeConstraints:^(MASConstraintMaker *make) {
  80. make.top.equalTo(self.inviteNumLb.mas_bottom).offset(adapt(3));
  81. make.centerX.equalTo(self.topRightView);
  82. make.height.mas_equalTo(adapt(18));
  83. }];
  84. [self.jiangLiBgv mas_makeConstraints:^(MASConstraintMaker *make) {
  85. make.top.equalTo(self.inviteNumDesLb.mas_bottom).offset(adapt(20));
  86. make.left.right.equalTo(self.topRightView).inset(adapt(20));
  87. make.height.mas_equalTo(adapt(40));
  88. }];
  89. [self.jiangLiIcon mas_makeConstraints:^(MASConstraintMaker *make) {
  90. make.centerY.equalTo(self.jiangLiBgv.mas_centerY);
  91. make.left.equalTo(self.jiangLiBgv).offset(adapt(8));
  92. make.width.height.mas_equalTo(adapt(24));
  93. }];
  94. [self.jiangLiNumLb mas_makeConstraints:^(MASConstraintMaker *make) {
  95. make.centerY.equalTo(self.jiangLiBgv.mas_centerY);
  96. make.left.equalTo(self.jiangLiIcon.mas_right).offset(adapt(10));
  97. }];
  98. [self.jiangLiNumDesLb mas_makeConstraints:^(MASConstraintMaker *make) {
  99. make.centerY.equalTo(self.jiangLiBgv.mas_centerY);
  100. make.left.equalTo(self.jiangLiNumLb.mas_right).offset(adapt(10));
  101. }];
  102. [self.jiangLiNumDesLb setContentCompressionResistancePriority:(UILayoutPriorityDefaultLow) forAxis:(UILayoutConstraintAxisHorizontal)];
  103. [self.invitationBreakdownBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  104. make.centerY.equalTo(self.jiangLiBgv.mas_centerY);
  105. make.right.equalTo(self.jiangLiBgv.mas_right).offset(adapt(-8));
  106. make.width.mas_equalTo(adapt(70));
  107. make.height.mas_equalTo(adapt(30));
  108. }];
  109. // [self.bottomBaseView mas_makeConstraints:^(MASConstraintMaker *make) {
  110. // make.top.equalTo(self.topRightView.mas_bottom).offset(adapt(-5));
  111. // make.left.equalTo(self).offset(adapt(15));
  112. // make.right.equalTo(self).offset(adapt(-15));
  113. // make.bottom.equalTo(self);
  114. // }];
  115. //
  116. // [self.invitationInfoGridView mas_makeConstraints:^(MASConstraintMaker *make) {
  117. // make.top.equalTo(self.bottomBaseView).offset(adapt(31));
  118. // make.left.equalTo(self.bottomBaseView).offset(adapt(12));
  119. // make.right.equalTo(self.bottomBaseView).offset(adapt(-12));
  120. // make.bottom.equalTo(self.bottomBaseView).offset(adapt(-31));
  121. // make.height.mas_equalTo(adapt(60));
  122. // }];
  123. [super updateConstraints];
  124. }
  125. - (void)ym_bindViewModel:(YMInvitingPrizesViewModel *)viewModel{
  126. if (!viewModel) {
  127. return;
  128. }
  129. _viewModel = viewModel;
  130. @weakify(self)
  131. [[[[RACObserve(self.viewModel, invitationInfoGridDataArray) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSArray * invitationInfoGridDataArray) {
  132. @strongify(self)
  133. for (YMInvitingPrizesInvitationInfoViewModel *viewModel in invitationInfoGridDataArray) {
  134. if (viewModel.infoType == YMInvitingPrizesInvitationInfoTypeCumulativeInvitations) {
  135. self.inviteNumLb.text = viewModel.titleString;
  136. }
  137. else if (viewModel.infoType == YMInvitingPrizesInvitationInfoTypeCumulativeReward) {
  138. self.jiangLiNumLb.text = viewModel.titleString;
  139. }
  140. }
  141. // self.invitationInfoGridView.config = self.invitationInfoGridViewConfig;
  142. // self.invitationInfoGridViewConfig.dataArray = invitationInfoGridDataArray;
  143. // [self.invitationInfoGridView mas_remakeConstraints:^(MASConstraintMaker *make) {
  144. // make.top.equalTo(self.bottomBaseView).offset(adapt(31));
  145. // make.left.equalTo(self.bottomBaseView).offset(adapt(12));
  146. // make.right.equalTo(self.bottomBaseView).offset(adapt(-12));
  147. // make.bottom.equalTo(self.bottomBaseView).offset(adapt(-31));
  148. // make.height.mas_equalTo(adapt(60));
  149. // }];
  150. }];
  151. }
  152. - (UIView *)topRightView{
  153. if (!_topRightView) {
  154. _topRightView = [[UIView alloc]init];
  155. _topRightView.backgroundColor = UIColor.clearColor;
  156. //[_topRightView addRectCorner:UIRectCornerTopLeft|UIRectCornerTopRight radius:adapt(21)];
  157. }
  158. return _topRightView;
  159. }
  160. - (UIImageView *)bgImgv {
  161. if (!_bgImgv) {
  162. _bgImgv = [[UIImageView alloc] initWithImage:ImageByName(@"ym_inviting_prizes_my_invitation_bg")];
  163. }
  164. return _bgImgv;
  165. }
  166. - (UIImageView *)titleImgv{
  167. if (!_titleImgv) {
  168. _titleImgv = [[UIImageView alloc]initWithImage:ImageByName(@"ym_inviting_prizes_my_invitation_title")];
  169. }
  170. return _titleImgv;
  171. }
  172. - (UILabel *)inviteNumLb {
  173. if (!_inviteNumLb) {
  174. _inviteNumLb = [[UILabel alloc]init];
  175. _inviteNumLb.font = LCSemiboldFont(24);
  176. _inviteNumLb.textColor = HexColorFromRGB(0x000000);
  177. _inviteNumLb.textAlignment = NSTextAlignmentLeft;
  178. _inviteNumLb.text = @"0";
  179. }
  180. return _inviteNumLb;
  181. }
  182. - (UILabel *)inviteNumDesLb {
  183. if (!_inviteNumDesLb) {
  184. _inviteNumDesLb = [[UILabel alloc] init];
  185. _inviteNumDesLb.font = LCFont(13);
  186. _inviteNumDesLb.textColor = HexColorFromRGB(0x222222);
  187. _inviteNumDesLb.textAlignment = NSTextAlignmentLeft;
  188. _inviteNumDesLb.text = @"累计邀请(人数)";
  189. }
  190. return _inviteNumDesLb;
  191. }
  192. - (UIView *)jiangLiBgv {
  193. if (!_jiangLiBgv) {
  194. _jiangLiBgv = [[UIView alloc] init];
  195. _jiangLiBgv.backgroundColor = HexColorFromRGBA(0xFEFAF9, 1);
  196. _jiangLiBgv.layer.cornerRadius = adapt(12);
  197. _jiangLiBgv.layer.masksToBounds = YES;
  198. _jiangLiBgv.layer.borderWidth = 1;
  199. _jiangLiBgv.layer.borderColor = HexColorFromRGBA(0xFFEFEF, 1).CGColor;
  200. }
  201. return _jiangLiBgv;
  202. }
  203. - (UIImageView *)jiangLiIcon {
  204. if (!_jiangLiIcon) {
  205. _jiangLiIcon = [[UIImageView alloc] initWithImage:ImageByName(@"ym_inviting_prizes_my_invitation_icon")];
  206. }
  207. return _jiangLiIcon;
  208. }
  209. - (UILabel *)jiangLiNumLb {
  210. if (!_jiangLiNumLb) {
  211. _jiangLiNumLb = [[UILabel alloc] init];
  212. _jiangLiNumLb.font = LCSemiboldFont(28);
  213. _jiangLiNumLb.textColor = HexColorFromRGB(0xFF6C27);
  214. _jiangLiNumLb.textAlignment = NSTextAlignmentLeft;
  215. _jiangLiNumLb.text = @"0";
  216. }
  217. return _jiangLiNumLb;
  218. }
  219. - (UILabel *)jiangLiNumDesLb {
  220. if (!_jiangLiNumDesLb) {
  221. _jiangLiNumDesLb = [[UILabel alloc] init];
  222. _jiangLiNumDesLb.font = LCFont(13);
  223. _jiangLiNumDesLb.textColor = HexColorFromRGB(0x222222);
  224. _jiangLiNumDesLb.textAlignment = NSTextAlignmentLeft;
  225. _jiangLiNumDesLb.text = @"累计奖励(金币)";
  226. }
  227. return _jiangLiNumDesLb;
  228. }
  229. - (UIButton *)invitationBreakdownBtn{
  230. if (!_invitationBreakdownBtn) {
  231. _invitationBreakdownBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  232. _invitationBreakdownBtn.titleLabel.font = LCBoldFont(12);
  233. [_invitationBreakdownBtn setTitleColor:HexColorFromRGBA(0xFFFFFF,1) forState:UIControlStateNormal];
  234. [_invitationBreakdownBtn setTitle:@"邀请明细" forState:UIControlStateNormal];
  235. //_invitationBreakdownBtn.backgroundColor = HexColorFromRGBA(0xFF4563, 1);
  236. _invitationBreakdownBtn.layer.cornerRadius = adapt(30) / 2.0;
  237. _invitationBreakdownBtn.layer.masksToBounds = YES;
  238. //[_invitationBreakdownBtn setImage:ImageByName(@"ym_inviting_prizes_arrow") forState:UIControlStateNormal];
  239. _invitationBreakdownBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
  240. //[_invitationBreakdownBtn setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];
  241. [_invitationBreakdownBtn ym_setGradientBackgroundWithColors:kMainGradColors locations:kMainGradLocation startPoint:kMainGradStartP endPoint:kMainGradEndP];
  242. CGFloat margin = 3;
  243. _invitationBreakdownBtn.imageEdgeInsets = UIEdgeInsetsMake(0, margin, 0, -margin);
  244. WS(weakSelf)
  245. [[[_invitationBreakdownBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) {
  246. [weakSelf.viewModel gotoInvitationBreakdown];
  247. }];
  248. }
  249. return _invitationBreakdownBtn;
  250. }
  251. - (UIView *)bottomBaseView{
  252. if (!_bottomBaseView) {
  253. _bottomBaseView = [[UIView alloc]init];
  254. _bottomBaseView.hidden = YES;
  255. _bottomBaseView.backgroundColor = UIColor.clearColor;
  256. [_bottomBaseView addRectCorner: UIRectCornerBottomLeft|UIRectCornerBottomRight radius:adapt(21)];
  257. }
  258. return _bottomBaseView;
  259. }
  260. - (BAGridView_Config *)invitationInfoGridViewConfig{
  261. if (!_invitationInfoGridViewConfig) {
  262. _invitationInfoGridViewConfig = [[BAGridView_Config alloc]init];
  263. _invitationInfoGridViewConfig.scrollEnabled = NO;
  264. // 是否显示分割线
  265. _invitationInfoGridViewConfig.showLineView = NO;
  266. // item:分割线颜色,默认:BAKit_Color_Gray_11【BAKit_Color_RGB(248, 248, 248)】
  267. _invitationInfoGridViewConfig.ba_gridView_lineColor = HexColorFromRGB(0xededed);
  268. // item:每行 item 的个数
  269. _invitationInfoGridViewConfig.ba_gridView_rowCount = kinvitationInfoGridView_rowCount;
  270. // item:高度/宽度
  271. _invitationInfoGridViewConfig.ba_gridView_itemHeight = adapt(kinvitationInfoGridView_itemHeight);
  272. // item:title 颜色,默认:BAKit_Color_Black【[UIColor blackColor]】
  273. _invitationInfoGridViewConfig.ba_gridView_titleColor = BAKit_Color_Black_pod;
  274. _invitationInfoGridViewConfig.ba_gridView_titleDescColor = BAKit_Color_Gray_1_pod;
  275. // item:title Font,默认:图文样式下 16,两行文字下(上25,下12)
  276. _invitationInfoGridViewConfig.ba_gridView_titleFont = LCBoldFont(24);
  277. _invitationInfoGridViewConfig.ba_gridView_titleDescFont = LCFont(13);
  278. // item:背景颜色,默认:白色
  279. _invitationInfoGridViewConfig.ba_gridView_backgroundColor = BAKit_Color_Clear_pod;
  280. // item:背景选中颜色,默认:无色
  281. _invitationInfoGridViewConfig.ba_gridView_selectedBackgroundColor = BAKit_Color_Clear_pod;
  282. // badge
  283. _invitationInfoGridViewConfig.ba_gridView_badgeType = kBAGridViewBadgeType_Center;
  284. _invitationInfoGridViewConfig.ba_gridView_badgeFont = LCFont(10);
  285. _invitationInfoGridViewConfig.ba_gridView_badgeRectCorners = UIRectCornerTopLeft | UIRectCornerTopRight |UIRectCornerBottomLeft| UIRectCornerBottomRight;
  286. _invitationInfoGridViewConfig.ba_gridView_badgeCornerRadius = 7;
  287. _invitationInfoGridViewConfig.ba_gridView_badgeBgColor = HexColorFromRGB(0xF4003F);
  288. _invitationInfoGridViewConfig.ba_gridView_badgeTextColor = HexColorFromRGB(0xFFFFFF);
  289. _invitationInfoGridViewConfig.ba_gridView_badgeHeight = 14;
  290. _invitationInfoGridViewConfig.ba_gridView_badgeOffsetPoint = CGPointMake(8, 8);
  291. // _invitationInfoGridViewConfig.ba_gridView_itemEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10);
  292. // _invitationInfoGridViewConfig.minimumLineSpacing = 10;
  293. // _invitationInfoGridViewConfig.minimumInteritemSpacing = 10;
  294. _invitationInfoGridViewConfig.gridViewType = BAGridViewTypeTitleDesc;
  295. }
  296. return _invitationInfoGridViewConfig;
  297. }
  298. - (BAGridView *)invitationInfoGridView{
  299. if (!_invitationInfoGridView) {
  300. @weakify(self)
  301. _invitationInfoGridView = [BAGridView ba_creatGridViewWithGridViewConfig:self.invitationInfoGridViewConfig block:^(BAGridItemModel *model, NSIndexPath *indexPath) {
  302. @strongify(self)
  303. }];
  304. }
  305. return _invitationInfoGridView;
  306. }
  307. @end