YMMineOpenMembershipView.m 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. //
  2. // YMMineOpenMembershipView.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/15.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMMineOpenMembershipView.h"
  9. #import "YMMineViewModel.h"
  10. @interface YMMineOpenMembershipView ()
  11. /// 我的VM
  12. @property (nonatomic, strong) YMMineViewModel *viewModel;
  13. /// 开通会员渐变一视图
  14. @property (nonatomic, strong) UIImageView *bgv;
  15. /// 开通会员提示标签
  16. @property (nonatomic, strong) UILabel *tipsLb;
  17. /// 开通会员箭头视图
  18. @property (nonatomic, strong) UIImageView *openMembershipArrowView;
  19. /// 开通会员背景视图
  20. @property (nonatomic, strong) UIImageView *openMembershipBgView;
  21. /// 开通会员图标视图
  22. @property (nonatomic, strong) UIImageView *iconImgv;
  23. /// 开通会员标题标签
  24. @property (nonatomic, strong) UILabel *openMembershipTitleLb;
  25. /// 开通会员按钮
  26. @property (nonatomic, strong) UIButton *openButn;
  27. @end
  28. @implementation YMMineOpenMembershipView
  29. - (void)ym_setupViews{
  30. [self addSubview:self.bgv];
  31. [self.bgv addSubview:self.iconImgv];
  32. [self.bgv addSubview:self.tipsLb];
  33. [self.bgv addSubview:self.openButn];
  34. [self.bgv addSubview:self.openMembershipArrowView];
  35. [self.bgv addSubview:self.openMembershipTitleLb];
  36. [self setNeedsUpdateConstraints];
  37. [self updateConstraintsIfNeeded];
  38. }
  39. - (void)updateConstraints{
  40. [self.bgv mas_makeConstraints:^(MASConstraintMaker *make) {
  41. make.top.equalTo(self).offset(adapt(20));
  42. make.left.equalTo(self).offset(adapt(15));
  43. make.right.equalTo(self).offset(adapt(-15));
  44. make.bottom.equalTo(self).offset(adapt(-0));
  45. make.height.mas_equalTo(adapt(34));
  46. }];
  47. [self.iconImgv mas_makeConstraints:^(MASConstraintMaker *make) {
  48. make.centerY.equalTo(self.bgv.mas_centerY);
  49. make.left.equalTo(self.bgv.mas_left).offset(adapt(10));
  50. }];
  51. [self.tipsLb mas_makeConstraints:^(MASConstraintMaker *make) {
  52. make.centerY.equalTo(self.bgv.mas_centerY);
  53. make.left.equalTo(self.iconImgv.mas_right).offset(adapt(10));
  54. }];
  55. [self.openButn mas_makeConstraints:^(MASConstraintMaker *make) {
  56. make.centerY.equalTo(self.bgv.mas_centerY);
  57. make.right.equalTo(self.bgv).offset(-10);
  58. make.width.mas_equalTo(48);
  59. make.height.mas_equalTo(24);
  60. }];
  61. [super updateConstraints];
  62. }
  63. - (void)ym_bindViewModel:(YMMineViewModel *)viewModel{
  64. if (!viewModel) {
  65. return;
  66. }
  67. _viewModel = viewModel;
  68. @weakify(self)
  69. [[[[RACObserve(self.viewModel, isVIP) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSNumber * isVIP) {
  70. @strongify(self)
  71. if ([isVIP boolValue]) {
  72. [self.openButn setTitle:@"续费" forState:(UIControlStateNormal)];
  73. } else {
  74. [self.openButn setTitle:@"开通" forState:(UIControlStateNormal)];
  75. }
  76. }];
  77. RAC(self.tipsLb, text) = RACObserve(self.viewModel, openMembershipTips);
  78. }
  79. - (UIImageView *)bgv{
  80. if (!_bgv) {
  81. _bgv = [[UIImageView alloc]init];
  82. //_openMembershipGradientView.image = ImageByName(@"ym_mine_my_member_bg");
  83. _bgv.backgroundColor = rgba(254, 200, 91, 1);
  84. _bgv.userInteractionEnabled = YES;
  85. _bgv.layer.cornerRadius = adapt(12);
  86. _bgv.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner;
  87. _bgv.layer.masksToBounds = YES;
  88. WS(weakSelf)
  89. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
  90. [_bgv addGestureRecognizer:tap];
  91. [[[tap rac_gestureSignal] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
  92. [weakSelf.viewModel gotoMemberCenter];
  93. }];
  94. }
  95. return _bgv;
  96. }
  97. - (UILabel *)tipsLb{
  98. if (!_tipsLb) {
  99. _tipsLb = [[UILabel alloc]init];
  100. _tipsLb.font = LCFont(10);
  101. _tipsLb.textColor = UIColor.whiteColor;
  102. _tipsLb.textAlignment = NSTextAlignmentLeft;
  103. _tipsLb.text = @"查看开通会员10大权益";
  104. }
  105. return _tipsLb;
  106. }
  107. - (UIImageView *)openMembershipArrowView{
  108. if (!_openMembershipArrowView) {
  109. _openMembershipArrowView = [[UIImageView alloc]init];
  110. _openMembershipArrowView.hidden = YES;
  111. _openMembershipArrowView.image = ImageByName(@"ym_mine_next_arrow_icon");
  112. }
  113. return _openMembershipArrowView;
  114. }
  115. - (UIImageView *)openMembershipBgView{
  116. if (!_openMembershipBgView) {
  117. _openMembershipBgView = [[UIImageView alloc]init];
  118. //_openMembershipBgView.image = ImageByName(@"ym_mine_open_membership_bg");
  119. _openMembershipBgView.userInteractionEnabled = YES;
  120. WS(weakSelf)
  121. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
  122. [_openMembershipBgView addGestureRecognizer:tap];
  123. [[[tap rac_gestureSignal] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
  124. [weakSelf.viewModel gotoMemberCenter];
  125. }];
  126. }
  127. return _openMembershipBgView;
  128. }
  129. - (UILabel *)openMembershipTitleLb{
  130. if (!_openMembershipTitleLb) {
  131. _openMembershipTitleLb = [[UILabel alloc]init];
  132. _openMembershipTitleLb.hidden = YES;
  133. _openMembershipTitleLb.font = LCFont(14);
  134. _openMembershipTitleLb.textColor = UIColor.blackColor;
  135. _openMembershipTitleLb.textAlignment = NSTextAlignmentLeft;
  136. _openMembershipTitleLb.text = @"开通会员";
  137. }
  138. return _openMembershipTitleLb;
  139. }
  140. - (UIButton *)openButn {
  141. if (!_openButn) {
  142. _openButn = [UIButton buttonWithType:UIButtonTypeCustom];
  143. _openButn.titleLabel.font = LCFont(12);
  144. [_openButn setTitle:@"开通" forState:UIControlStateNormal];
  145. [_openButn setTitleColor:rgba(144, 84, 13, 1) forState:(UIControlStateNormal)];
  146. [_openButn setBackgroundImage:ImageByName(@"ym_mine_open_membership_butn_bg") forState:UIControlStateNormal];
  147. WS(weakSelf)
  148. [[[_openButn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
  149. [weakSelf.viewModel gotoMemberCenter];
  150. }];
  151. }
  152. return _openButn;
  153. }
  154. - (UIImageView *)iconImgv{
  155. if (!_iconImgv) {
  156. _iconImgv = [[UIImageView alloc]init];
  157. _iconImgv.hidden = NO;
  158. _iconImgv.image = ImageByName(@"ym_mine_open_membership_Icon");
  159. }
  160. return _iconImgv;
  161. }
  162. @end