// // YMInvitingPrizesMyInvitationView.m // MSYOUPAI // // Created by YoMi on 2024/3/6. // Copyright © 2024 MS. All rights reserved. // #import "YMInvitingPrizesMyInvitationView.h" #import "YMInvitingPrizesViewModel.h" #define kinvitationInfoGridView_rowCount 2 #define kinvitationInfoGridView_itemHeight 60 @interface YMInvitingPrizesMyInvitationView () /// 邀请有奖VM @property (nonatomic, strong) YMInvitingPrizesViewModel *viewModel; /// 顶部右视图 @property (nonatomic, strong) UIView *topRightView; @property (nonatomic, strong) UIImageView *bgImgv; /// 渐变色图片视图 @property (nonatomic, strong) UILabel *titleLb; /// 渐变色图片视图 @property (nonatomic, strong) UIImageView *titleImgv; /// 渐变色图片视图 @property (nonatomic, strong) UIImageView *titleImgvL; /// 渐变色图片视图 @property (nonatomic, strong) UIImageView *titleImgvR; /// 邀请人数 @property (nonatomic, strong) UILabel *inviteNumLb; /// 邀请人数描述 @property (nonatomic, strong) UILabel *inviteNumDesLb; /// 邀请明细 @property (nonatomic, strong) UIButton *invitationBreakdownBtn; /// 奖励背景图 @property (nonatomic, strong) UIView *jiangLiBgv; /// 奖励图标 @property (nonatomic, strong) UIImageView *jiangLiIcon; /// 奖励数量 @property (nonatomic, strong) UILabel *jiangLiNumLb; /// 奖励数量描述 @property (nonatomic, strong) UILabel *jiangLiNumDesLb; /// 底部基础视图 @property (nonatomic, strong) UIView *bottomBaseView; /// 邀请信息宫格配置 @property (nonatomic, strong) BAGridView_Config *invitationInfoGridViewConfig; /// 邀请信息宫格视图 @property (nonatomic, strong) BAGridView *invitationInfoGridView; @end @implementation YMInvitingPrizesMyInvitationView - (void)ym_setupViews{ [self addSubview:self.topRightView]; [self.topRightView addSubview:self.bgImgv]; [self.topRightView addSubview:self.titleLb]; [self.topRightView addSubview:self.titleImgvL]; [self.topRightView addSubview:self.titleImgvR]; [self.topRightView addSubview:self.inviteNumLb]; [self.topRightView addSubview:self.inviteNumDesLb]; [self.topRightView addSubview:self.jiangLiBgv]; [self.topRightView addSubview:self.jiangLiIcon]; [self.topRightView addSubview:self.jiangLiNumLb]; [self.topRightView addSubview:self.jiangLiNumDesLb]; [self.topRightView addSubview:self.invitationBreakdownBtn]; // [self addSubview:self.bottomBaseView]; // [self.bottomBaseView addSubview:self.invitationInfoGridView]; [self setNeedsUpdateConstraints]; [self updateConstraintsIfNeeded]; } - (void)updateConstraints{ [self.topRightView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.bottom.equalTo(self); make.left.equalTo(self).offset(adapt(18)); make.right.equalTo(self).offset(adapt(-18)); make.height.mas_equalTo(adapt(229)); }]; [self.bgImgv mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.topRightView); }]; [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.topRightView.mas_top).offset(adapt(16)); make.centerX.equalTo(self.topRightView); //make.width.mas_equalTo(adapt(156)); make.height.mas_equalTo(adapt(22)); }]; [self.titleImgvL mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(self.titleLb.mas_left).offset(adapt(-10)); make.centerY.equalTo(self.titleLb); //make.height.mas_equalTo(adapt(22)); }]; [self.titleImgvR mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.titleLb.mas_right).offset(adapt(10)); make.centerY.equalTo(self.titleLb); //make.height.mas_equalTo(adapt(22)); }]; [self.inviteNumLb mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.titleLb.mas_bottom).offset(adapt(18)); make.centerX.equalTo(self.topRightView); }]; [self.inviteNumDesLb mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.inviteNumLb.mas_bottom).offset(adapt(3)); make.centerX.equalTo(self.topRightView); make.height.mas_equalTo(adapt(18)); }]; [self.jiangLiBgv mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.inviteNumDesLb.mas_bottom).offset(adapt(20)); make.left.right.equalTo(self.topRightView).inset(adapt(20)); make.height.mas_equalTo(adapt(48)); }]; [self.jiangLiIcon mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(self.jiangLiBgv.mas_centerY); make.left.equalTo(self.jiangLiBgv).offset(adapt(16)); make.width.height.mas_equalTo(adapt(26)); }]; [self.jiangLiNumLb mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(self.jiangLiBgv.mas_centerY); make.left.equalTo(self.jiangLiIcon.mas_right).offset(adapt(3)); }]; [self.jiangLiNumDesLb mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(self.jiangLiBgv.mas_centerY); make.left.equalTo(self.jiangLiNumLb.mas_right).offset(adapt(10)); }]; [self.jiangLiNumDesLb setContentCompressionResistancePriority:(UILayoutPriorityDefaultLow) forAxis:(UILayoutConstraintAxisHorizontal)]; [self.invitationBreakdownBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(self.jiangLiBgv.mas_centerY); make.right.equalTo(self.jiangLiBgv.mas_right).offset(adapt(-16)); make.width.mas_equalTo(adapt(59)); make.height.mas_equalTo(adapt(26)); }]; // [self.bottomBaseView mas_makeConstraints:^(MASConstraintMaker *make) { // make.top.equalTo(self.topRightView.mas_bottom).offset(adapt(-5)); // make.left.equalTo(self).offset(adapt(15)); // make.right.equalTo(self).offset(adapt(-15)); // make.bottom.equalTo(self); // }]; // // [self.invitationInfoGridView mas_makeConstraints:^(MASConstraintMaker *make) { // make.top.equalTo(self.bottomBaseView).offset(adapt(31)); // make.left.equalTo(self.bottomBaseView).offset(adapt(12)); // make.right.equalTo(self.bottomBaseView).offset(adapt(-12)); // make.bottom.equalTo(self.bottomBaseView).offset(adapt(-31)); // make.height.mas_equalTo(adapt(60)); // }]; [super updateConstraints]; } - (void)ym_bindViewModel:(YMInvitingPrizesViewModel *)viewModel{ if (!viewModel) { return; } _viewModel = viewModel; @weakify(self) [[[[RACObserve(self.viewModel, invitationInfoGridDataArray) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSArray * invitationInfoGridDataArray) { @strongify(self) for (YMInvitingPrizesInvitationInfoViewModel *viewModel in invitationInfoGridDataArray) { if (viewModel.infoType == YMInvitingPrizesInvitationInfoTypeCumulativeInvitations) { self.inviteNumLb.text = viewModel.titleString; } else if (viewModel.infoType == YMInvitingPrizesInvitationInfoTypeCumulativeReward) { self.jiangLiNumLb.text = viewModel.titleString; } } // self.invitationInfoGridView.config = self.invitationInfoGridViewConfig; // self.invitationInfoGridViewConfig.dataArray = invitationInfoGridDataArray; // [self.invitationInfoGridView mas_remakeConstraints:^(MASConstraintMaker *make) { // make.top.equalTo(self.bottomBaseView).offset(adapt(31)); // make.left.equalTo(self.bottomBaseView).offset(adapt(12)); // make.right.equalTo(self.bottomBaseView).offset(adapt(-12)); // make.bottom.equalTo(self.bottomBaseView).offset(adapt(-31)); // make.height.mas_equalTo(adapt(60)); // }]; }]; } - (UIView *)topRightView{ if (!_topRightView) { _topRightView = [[UIView alloc]init]; _topRightView.backgroundColor = rgba(255, 255, 255, 1); _topRightView.layer.cornerRadius = adapt(23); _topRightView.layer.masksToBounds = YES; //[_topRightView addRectCorner:UIRectCornerTopLeft|UIRectCornerTopRight radius:adapt(21)]; } return _topRightView; } - (UIImageView *)bgImgv { if (!_bgImgv) { _bgImgv = [[UIImageView alloc] initWithImage:ImageByName(@"ym_inviting_prizes_my_invitation_bg")]; _bgImgv.hidden = YES; } return _bgImgv; } - (UILabel *)titleLb { if (!_titleLb) { _titleLb = [[UILabel alloc] init]; _titleLb.font = LCSemiboldFont(16); _titleLb.textColor = rgba(255, 63, 104, 1); _titleLb.textAlignment = NSTextAlignmentCenter; _titleLb.text = @"我的邀请"; } return _titleLb; } - (UIImageView *)titleImgv{ if (!_titleImgv) { _titleImgv = [[UIImageView alloc]initWithImage:ImageByName(@"ym_inviting_prizes_my_invitation_title")]; } return _titleImgv; } - (UIImageView *)titleImgvL{ if (!_titleImgvL) { _titleImgvL = [[UIImageView alloc]initWithImage:ImageByName(@"ym_inviting_prizes_my_invitation_title_left")]; } return _titleImgvL; } - (UIImageView *)titleImgvR{ if (!_titleImgvR) { _titleImgvR = [[UIImageView alloc]initWithImage:ImageByName(@"ym_inviting_prizes_my_invitation_title_right")]; } return _titleImgvR; } - (UILabel *)inviteNumLb { if (!_inviteNumLb) { _inviteNumLb = [[UILabel alloc] init]; _inviteNumLb.font = LCSemiboldFont(46); _inviteNumLb.textColor = rgba(51, 51, 51, 1); _inviteNumLb.textAlignment = NSTextAlignmentCenter; _inviteNumLb.text = @"0"; } return _inviteNumLb; } - (UILabel *)inviteNumDesLb { if (!_inviteNumDesLb) { _inviteNumDesLb = [[UILabel alloc] init]; _inviteNumDesLb.font = LCFont(14); _inviteNumDesLb.textColor = rgba(51, 51, 51, 1); _inviteNumDesLb.textAlignment = NSTextAlignmentCenter; _inviteNumDesLb.text = @"累计邀请(人数)"; } return _inviteNumDesLb; } - (UIView *)jiangLiBgv { if (!_jiangLiBgv) { _jiangLiBgv = [[UIView alloc] init]; _jiangLiBgv.backgroundColor = rgba(255, 255, 255, 1); _jiangLiBgv.layer.cornerRadius = adapt(24); _jiangLiBgv.layer.masksToBounds = YES; _jiangLiBgv.layer.borderWidth = 1; _jiangLiBgv.layer.borderColor = HexColorFromRGBA(0xFBBF82, 1).CGColor; } return _jiangLiBgv; } - (UIImageView *)jiangLiIcon { if (!_jiangLiIcon) { _jiangLiIcon = [[UIImageView alloc] initWithImage:ImageByName(@"ym_my_earnings_coin")]; } return _jiangLiIcon; } - (UILabel *)jiangLiNumLb { if (!_jiangLiNumLb) { _jiangLiNumLb = [[UILabel alloc] init]; _jiangLiNumLb.font = LCSemiboldFont(24); _jiangLiNumLb.textColor = HexColorFromRGB(0xFEA802); _jiangLiNumLb.textAlignment = NSTextAlignmentLeft; _jiangLiNumLb.text = @"0"; } return _jiangLiNumLb; } - (UILabel *)jiangLiNumDesLb { if (!_jiangLiNumDesLb) { _jiangLiNumDesLb = [[UILabel alloc] init]; _jiangLiNumDesLb.font = LCFont(13); _jiangLiNumDesLb.textColor = HexColorFromRGB(0x666666); _jiangLiNumDesLb.textAlignment = NSTextAlignmentLeft; _jiangLiNumDesLb.text = @"累计奖励(金币)"; } return _jiangLiNumDesLb; } - (UIButton *)invitationBreakdownBtn{ if (!_invitationBreakdownBtn) { _invitationBreakdownBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_invitationBreakdownBtn setBackgroundImage:ImageByName(@"ym_inviting_prizes_arrow") forState:UIControlStateNormal]; _invitationBreakdownBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; _invitationBreakdownBtn.titleLabel.font=LCFont(13); [_invitationBreakdownBtn setTitle:@"去邀请" forState:0]; [_invitationBreakdownBtn setTitleColor:UIColor.whiteColor forState:0]; //[_invitationBreakdownBtn setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; //[_invitationBreakdownBtn ym_setGradientBackgroundWithColors:kMainGradColors locations:kMainGradLocation startPoint:kMainGradStartP endPoint:kMainGradEndP]; CGFloat margin = 3; _invitationBreakdownBtn.imageEdgeInsets = UIEdgeInsetsMake(0, margin, 0, -margin); WS(weakSelf) [[[_invitationBreakdownBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) { [weakSelf.viewModel gotoInvitationBreakdown]; }]; } return _invitationBreakdownBtn; } - (UIView *)bottomBaseView{ if (!_bottomBaseView) { _bottomBaseView = [[UIView alloc]init]; _bottomBaseView.hidden = YES; _bottomBaseView.backgroundColor = UIColor.clearColor; [_bottomBaseView addRectCorner: UIRectCornerBottomLeft|UIRectCornerBottomRight radius:adapt(21)]; } return _bottomBaseView; } - (BAGridView_Config *)invitationInfoGridViewConfig{ if (!_invitationInfoGridViewConfig) { _invitationInfoGridViewConfig = [[BAGridView_Config alloc]init]; _invitationInfoGridViewConfig.scrollEnabled = NO; // 是否显示分割线 _invitationInfoGridViewConfig.showLineView = NO; // item:分割线颜色,默认:BAKit_Color_Gray_11【BAKit_Color_RGB(248, 248, 248)】 _invitationInfoGridViewConfig.ba_gridView_lineColor = HexColorFromRGB(0xededed); // item:每行 item 的个数 _invitationInfoGridViewConfig.ba_gridView_rowCount = kinvitationInfoGridView_rowCount; // item:高度/宽度 _invitationInfoGridViewConfig.ba_gridView_itemHeight = adapt(kinvitationInfoGridView_itemHeight); // item:title 颜色,默认:BAKit_Color_Black【[UIColor blackColor]】 _invitationInfoGridViewConfig.ba_gridView_titleColor = BAKit_Color_Black_pod; _invitationInfoGridViewConfig.ba_gridView_titleDescColor = BAKit_Color_Gray_1_pod; // item:title Font,默认:图文样式下 16,两行文字下(上25,下12) _invitationInfoGridViewConfig.ba_gridView_titleFont = LCBoldFont(24); _invitationInfoGridViewConfig.ba_gridView_titleDescFont = LCFont(13); // item:背景颜色,默认:白色 _invitationInfoGridViewConfig.ba_gridView_backgroundColor = BAKit_Color_Clear_pod; // item:背景选中颜色,默认:无色 _invitationInfoGridViewConfig.ba_gridView_selectedBackgroundColor = BAKit_Color_Clear_pod; // badge _invitationInfoGridViewConfig.ba_gridView_badgeType = kBAGridViewBadgeType_Center; _invitationInfoGridViewConfig.ba_gridView_badgeFont = LCFont(10); _invitationInfoGridViewConfig.ba_gridView_badgeRectCorners = UIRectCornerTopLeft | UIRectCornerTopRight |UIRectCornerBottomLeft| UIRectCornerBottomRight; _invitationInfoGridViewConfig.ba_gridView_badgeCornerRadius = 7; _invitationInfoGridViewConfig.ba_gridView_badgeBgColor = HexColorFromRGB(0xF4003F); _invitationInfoGridViewConfig.ba_gridView_badgeTextColor = HexColorFromRGB(0xFFFFFF); _invitationInfoGridViewConfig.ba_gridView_badgeHeight = 14; _invitationInfoGridViewConfig.ba_gridView_badgeOffsetPoint = CGPointMake(8, 8); // _invitationInfoGridViewConfig.ba_gridView_itemEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10); // _invitationInfoGridViewConfig.minimumLineSpacing = 10; // _invitationInfoGridViewConfig.minimumInteritemSpacing = 10; _invitationInfoGridViewConfig.gridViewType = BAGridViewTypeTitleDesc; } return _invitationInfoGridViewConfig; } - (BAGridView *)invitationInfoGridView{ if (!_invitationInfoGridView) { @weakify(self) _invitationInfoGridView = [BAGridView ba_creatGridViewWithGridViewConfig:self.invitationInfoGridViewConfig block:^(BAGridItemModel *model, NSIndexPath *indexPath) { @strongify(self) }]; } return _invitationInfoGridView; } @end