From c1b50b407d4aba25d24ec9918fce00f1a305b93d Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Wed, 4 Feb 2026 15:40:45 +0800 Subject: [PATCH] 2 --- .../pay_leftline_icon.imageset/Contents.json | 22 +++++ .../pay_leftline_icon@2x.png | Bin 0 -> 570 bytes .../pay_leftline_icon@3x.png | Bin 0 -> 841 bytes .../pay_rightline_icon.imageset/Contents.json | 22 +++++ .../pay_rightline_icon@2x.png | Bin 0 -> 580 bytes .../pay_rightline_icon@3x.png | Bin 0 -> 846 bytes keyBoard/Class/Pay/M/KBPayProductModel.h | 4 + keyBoard/Class/Pay/M/KBPayProductModel.m | 4 + keyBoard/Class/Pay/V/KBSvipBenefitCell.m | 2 +- keyBoard/Class/Pay/V/KBSvipFlowLayout.m | 14 ++-- keyBoard/Class/Pay/V/KBSvipSubscribeCell.h | 4 +- keyBoard/Class/Pay/V/KBSvipSubscribeCell.m | 75 ++++++++++++++---- keyBoard/Class/Pay/VC/KBPaySvipVC.m | 31 +++++--- 13 files changed, 146 insertions(+), 32 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/pay_leftline_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/pay_leftline_icon@3x.png create mode 100644 keyBoard/Assets.xcassets/Pay/pay_rightline_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Pay/pay_rightline_icon.imageset/pay_rightline_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Pay/pay_rightline_icon.imageset/pay_rightline_icon@3x.png diff --git a/keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/Contents.json b/keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/Contents.json new file mode 100644 index 0000000..477ba0d --- /dev/null +++ b/keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "pay_leftline_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "pay_leftline_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/pay_leftline_icon@2x.png b/keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/pay_leftline_icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d9d401cf02dbc8d29622cf7610a75d0d3939d20 GIT binary patch literal 570 zcmV-A0>%A_P)Z@pqHL{(-&X;KmPyx9{zz+sWgZ4{RMdl7un@< z&=?VTtB ztaseEwB!9q?~GVVS07SO_1W5)h^2P-Lgjp~rCz*=l*?gL?g>LBbREi9u3E~q5D>#X zrgS3&#aow5;r0a}-Z^Iqce{ZQIcxI$r-5+qq`^i{0PaDj!47n3`9~c_;qft@eR4!& zh7Re4=j|FZd_ZGfwQ2d+`!r^xRi)qV*RrwQDxGLispKw|BAXQ|vqPnF+vG8Ni;`oS zlrgqZ&I(NuDK#iLrC!SD8|4hBlQM96L_z~n|Kj(4rUvs(m@7Y}9&n!0ncV^+88mO2o z^CugoOCPA1F~zI@U0{lSBK8je0RR78tq{!s000I_L_t&o0G$a1bliq0_y7O^07*qo IM6N<$g2bW;M*si- literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/pay_leftline_icon@3x.png b/keyBoard/Assets.xcassets/Pay/pay_leftline_icon.imageset/pay_leftline_icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..86dd5ba3fc8a168b9629ed51500c9817c368a64d GIT binary patch literal 841 zcmV-P1GfB$P)uL4dHep} zeeca1ok~JO5<@D&HYltC|A;nf*iSF_!2Qm5&iUZGDhPtS`I;JE$m#4!S5)+dMA1*I ztn@3ZuI|Ub;s>Ar45SrhFza*jx?$?`BnQHI+97zw#t0ak}&v`JCMSjxq5R+nqM z-oZ~aIl*LInKZ>vE>A5|l<8VgoT-+iSz3oMTdjaO8mBl{Bhw4=9Uw4I5f?slN{e$H zU}+9umpzgAe{Oi5UiC9`WEIJk9b60;#)W;dpb^yXBN-;yFRTkp%< z_GFRSktDG@lVo~#B4G9;3e>&?KnKO~)PZ<`I2b3;jLUj}Y+iaDj*jW6{V^4!sn@VVA>rG&-0=uDEga zG>cw8#UimMIpoH17KuN`A-9e(aKaH5xqX;{?;K+6N&8tSIf#bu1~K+~2Uu&$UdEof zo3W+sqU{+wX?x}l%9^!}wmov=@m9*3y_vSnUsAI;!;fTGEogfikJr zP!`Q9(o(RJG#9QQ%{n*q%Lub^DQPw>ARygT zw68~?x{48q?#)o7sL~(RRrw=DZ-*d7)q{}2cW%@SfD3E;BZcq#!rD4NSo@(5to_&< z)_(GX)t`N#f_h&_^Q8x*`Q`&@zITTTet6q8KfBu1UsbjjQL2D|0Pk*fbzWUOonD?A z&3T{Z#J|_xEiHecT8f%7U7Hro-mUfAQk5GWx*ZPiG`%s{^Cx-owaqupY@E`zr@e|+ z@_f3eyw0hrs;Yj~wl}R)*SUfJvH`F9hKAo6e*gdg|NpxYk@Elm00v1!K~w_((0h~U TJTKXNL8CcwzX|Yz%_iS} z0t)v|nSAgJlXl9;ws%-+ z+fA%p>az6pSp^YDOU9U3IC z{$a}6KSW^NBNy#`L167u7u7t&u=t)z;d$#ALe|h2uM!AZ!D1W$o>wAcyv&@OT;gQ2#p4Jq5`4cXlgZ32n2~2@ zPIWmj_3*#$v+_Uw51l`ro}DwjEVo*ai+|}400030{~lBHH~;_u21!IgR09B`ECo1? So-Wz|0000bwf zQkY^ja8q#uGu>*ST~ITv)wWr<5qDvogB#JgR-za2ZGw6iH5lkcL2WaG42!mb? zBazfYEVvTNpebQ2dMTVila4T0Vg!p`aB==PhsQ^<*0WJ8b|#v^;$nDPY%Gt*oZ|44 z@th_4G>b>Yv3TS;!FDX3$0HJW;%EYA3%|${hZA`!^fE^tOcIEYWQht+;cfeqIdWgB zKn11ocwm}9?@pJgUFj0DBSWOOXUgo>EQ#KnDRP^#M0Vp%nOUDL(d+Km*)_Q`vpPqj z1MW)PszRArktg%Z?@QdW0)bhYFEC4r9Ma-qMO;{97Z#Mr{CvnE&M8xb*`;=VR+%Kt z)QaK^ouW)LHON!+_0nXcLzq-)=O!AQ&hcZH#ZLwo0@!pDEd&1jo!fF@G{AAKLCK*vsJB%@n}DP z?it;*xfj-n>tE-4czAYl>z_zHeqZc{rDI6fCF+jWpZhN4_QRg-%ipAb*I^osM(wF; zYt3|7zPjjisybD>x!4^a)peKspP%uI#vAPG+Xln%_a6WN0RR889j222000I_L_t&o Y0Ce?|X_hJ6`Tzg`07*qoM6N<$f( 0 ? 1 : NSNotFound; // 默认选中第二个(1 Month) + // 过滤 level=2 的 SVIP 数据 + NSMutableArray *svipProducts = [NSMutableArray array]; + for (KBPayProductModel *product in products) { + if (product.level == 1) { + [svipProducts addObject:product]; + } + } + self.plans = svipProducts.copy; + self.selectedIndex = self.plans.count > 1 ? 1 : (self.plans.count > 0 ? 0 : NSNotFound); // 默认选中第二个(1 Month) [self.collectionView reloadData]; [self selectCurrentPlanAnimated:NO]; [self prepareStoreKitWithPlans:self.plans]; @@ -231,8 +238,9 @@ static NSString * const kKBSvipBenefitHeaderId = @"kKBSvipBenefitHeaderId"; if (indexPath.item < self.plans.count) { KBPayProductModel *plan = self.plans[indexPath.item]; NSString *title = [self displayTitleForPlan:plan]; - NSString *price = [plan priceDisplayText]; - [cell configTitle:title price:price strike:nil]; + NSString *currency = plan.currency ?: @"$"; + NSString *price = [plan priceNumberText]; + [cell configTitle:title currency:currency price:price strike:nil]; [cell applySelected:(indexPath.item == self.selectedIndex) animated:NO]; } return cell; @@ -264,22 +272,22 @@ static NSString * const kKBSvipBenefitHeaderId = @"kKBSvipBenefitHeaderId"; make.center.equalTo(header); }]; // 左右横线 - UIView *leftLine = [UIView new]; - leftLine.backgroundColor = [UIColor colorWithHex:0xE5E5E5]; + UIImageView *leftLine = [UIImageView new]; + leftLine.image = [UIImage imageNamed:@"pay_leftline_icon"]; [header addSubview:leftLine]; [leftLine mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(titleLabel.mas_left).offset(-12); make.centerY.equalTo(header); - make.width.mas_equalTo(40); + make.width.mas_equalTo(53); make.height.mas_equalTo(1); }]; - UIView *rightLine = [UIView new]; - rightLine.backgroundColor = [UIColor colorWithHex:0xE5E5E5]; + UIImageView *rightLine = [UIImageView new]; + rightLine.image = [UIImage imageNamed:@"pay_rightline_icon"]; [header addSubview:rightLine]; [rightLine mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(titleLabel.mas_right).offset(12); make.centerY.equalTo(header); - make.width.mas_equalTo(40); + make.width.mas_equalTo(53); make.height.mas_equalTo(1); }]; return header; @@ -361,7 +369,8 @@ static NSString * const kKBSvipBenefitHeaderId = @"kKBSvipBenefitHeaderId"; - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { if (section == 0) { - return UIEdgeInsetsMake(16, 16, 10, 16); + // 订阅选项:外层背景距屏幕16,Cell距外层背景17,所以 16+17=33 + return UIEdgeInsetsMake(16, 22, 10, 22); } return UIEdgeInsetsMake(0, 16, 20, 16); }