瀏覽代碼

vip中心首页完成

iOS-Abel 2 年之前
父節點
當前提交
1aba4b2015
共有 27 個文件被更改,包括 621 次插入3 次删除
  1. 34 0
      Asteria.xcodeproj/project.pbxproj
  2. 2 0
      Asteria/ASUI/ColorDefine.h
  3. 2 0
      Asteria/ASUI/CustomView/UserInfoV/ASUserBaseInfoView.h
  4. 2 2
      Asteria/ASUI/CustomView/UserInfoV/ASUserBaseInfoView.m
  5. 6 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/Contents.json
  6. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg1.imageset/Contents.json
  7. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg1.imageset/卡片@2x.png
  8. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg1.imageset/卡片@3x.png
  9. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg2.imageset/Contents.json
  10. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg2.imageset/卡片@2x.png
  11. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg2.imageset/卡片@3x.png
  12. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg3.imageset/Contents.json
  13. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg3.imageset/卡片@2x.png
  14. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg3.imageset/卡片@3x.png
  15. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg4.imageset/Contents.json
  16. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg4.imageset/卡片@2x.png
  17. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg4.imageset/卡片@3x.png
  18. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg5.imageset/Contents.json
  19. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg5.imageset/卡片@2x.png
  20. 二進制
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg5.imageset/卡片@3x.png
  21. 8 1
      Asteria/Fuction/UserCenter/UserCenterHome/ASUserCenterViewController.m
  22. 16 0
      Asteria/Fuction/UserCenter/VipCenter/ASVipCenterViewController.h
  23. 227 0
      Asteria/Fuction/UserCenter/VipCenter/ASVipCenterViewController.m
  24. 20 0
      Asteria/Fuction/UserCenter/VipCenter/Views/ASVipCenterCollectCell.h
  25. 66 0
      Asteria/Fuction/UserCenter/VipCenter/Views/ASVipCenterCollectCell.m
  26. 20 0
      Asteria/Fuction/UserCenter/VipCenter/Views/ASVipCenterLineItemView.h
  27. 108 0
      Asteria/Fuction/UserCenter/VipCenter/Views/ASVipCenterLineItemView.m

+ 34 - 0
Asteria.xcodeproj/project.pbxproj

@@ -131,6 +131,9 @@
 		81E257F62A12259B004EEF71 /* UserCenter.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 81E257F52A12259B004EEF71 /* UserCenter.xcassets */; };
 		81E257F92A122AC6004EEF71 /* ASUI.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 81E257F82A122AC6004EEF71 /* ASUI.xcassets */; };
 		81E257FD2A12340E004EEF71 /* ASEnterItemV.m in Sources */ = {isa = PBXBuildFile; fileRef = 81E257FC2A12340E004EEF71 /* ASEnterItemV.m */; };
+		81E5EE902A498FC90075695F /* ASVipCenterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81E5EE8F2A498FC90075695F /* ASVipCenterViewController.m */; };
+		81E5EE942A4A760D0075695F /* ASVipCenterLineItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81E5EE932A4A760D0075695F /* ASVipCenterLineItemView.m */; };
+		81E5EE972A4A822D0075695F /* ASVipCenterCollectCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81E5EE962A4A822D0075695F /* ASVipCenterCollectCell.m */; };
 		81EC47662A33035D00516573 /* ASHomeNewInCellTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81EC47652A33035D00516573 /* ASHomeNewInCellTableViewCell.m */; };
 		81EC47692A33073100516573 /* ASHomeNewInProductItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81EC47682A33073100516573 /* ASHomeNewInProductItemView.m */; };
 		81EC476C2A33131100516573 /* ASHomeNewInSubCollectCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81EC476B2A33131100516573 /* ASHomeNewInSubCollectCell.m */; };
@@ -466,6 +469,12 @@
 		81E257F82A122AC6004EEF71 /* ASUI.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = ASUI.xcassets; sourceTree = "<group>"; };
 		81E257FB2A12340E004EEF71 /* ASEnterItemV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASEnterItemV.h; sourceTree = "<group>"; };
 		81E257FC2A12340E004EEF71 /* ASEnterItemV.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASEnterItemV.m; sourceTree = "<group>"; };
+		81E5EE8E2A498FC90075695F /* ASVipCenterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASVipCenterViewController.h; sourceTree = "<group>"; };
+		81E5EE8F2A498FC90075695F /* ASVipCenterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASVipCenterViewController.m; sourceTree = "<group>"; };
+		81E5EE922A4A760D0075695F /* ASVipCenterLineItemView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASVipCenterLineItemView.h; sourceTree = "<group>"; };
+		81E5EE932A4A760D0075695F /* ASVipCenterLineItemView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASVipCenterLineItemView.m; sourceTree = "<group>"; };
+		81E5EE952A4A822D0075695F /* ASVipCenterCollectCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASVipCenterCollectCell.h; sourceTree = "<group>"; };
+		81E5EE962A4A822D0075695F /* ASVipCenterCollectCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASVipCenterCollectCell.m; sourceTree = "<group>"; };
 		81EC47642A33035D00516573 /* ASHomeNewInCellTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASHomeNewInCellTableViewCell.h; sourceTree = "<group>"; };
 		81EC47652A33035D00516573 /* ASHomeNewInCellTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASHomeNewInCellTableViewCell.m; sourceTree = "<group>"; };
 		81EC47672A33073100516573 /* ASHomeNewInProductItemView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASHomeNewInProductItemView.h; sourceTree = "<group>"; };
@@ -1122,6 +1131,7 @@
 		81D484DD2A0F40510075DC43 /* UserCenter */ = {
 			isa = PBXGroup;
 			children = (
+				81E5EE8D2A498FA20075695F /* VipCenter */,
 				81DFA5722A47D91400DA708B /* ConponsAndGiftCard */,
 				811F42432A40531C00DA68F1 /* Points */,
 				81E257F52A12259B004EEF71 /* UserCenter.xcassets */,
@@ -1225,6 +1235,27 @@
 			path = CutomBottomBar;
 			sourceTree = "<group>";
 		};
+		81E5EE8D2A498FA20075695F /* VipCenter */ = {
+			isa = PBXGroup;
+			children = (
+				81E5EE8E2A498FC90075695F /* ASVipCenterViewController.h */,
+				81E5EE8F2A498FC90075695F /* ASVipCenterViewController.m */,
+				81E5EE912A4A75DF0075695F /* Views */,
+			);
+			path = VipCenter;
+			sourceTree = "<group>";
+		};
+		81E5EE912A4A75DF0075695F /* Views */ = {
+			isa = PBXGroup;
+			children = (
+				81E5EE922A4A760D0075695F /* ASVipCenterLineItemView.h */,
+				81E5EE932A4A760D0075695F /* ASVipCenterLineItemView.m */,
+				81E5EE952A4A822D0075695F /* ASVipCenterCollectCell.h */,
+				81E5EE962A4A822D0075695F /* ASVipCenterCollectCell.m */,
+			);
+			path = Views;
+			sourceTree = "<group>";
+		};
 		9A1247912A1B07F400126226 /* Tool */ = {
 			isa = PBXGroup;
 			children = (
@@ -1857,6 +1888,7 @@
 				9AD346042A08D60F005CA070 /* ZFKVOController.m in Sources */,
 				81717CA12A3C0A3500648139 /* KWProductMenuFilterItemHeaderView.m in Sources */,
 				81C326662A36B794002EF442 /* VerScrollTextView.m in Sources */,
+				81E5EE972A4A822D0075695F /* ASVipCenterCollectCell.m in Sources */,
 				81717D372A3D322700648139 /* KWHisCollectHeaderView.m in Sources */,
 				9A8DD8C82A0B93F700573324 /* GoodsDetailsVM.m in Sources */,
 				9AD346132A08D60F005CA070 /* ZFLoadingView.m in Sources */,
@@ -1924,6 +1956,7 @@
 				81C3266A2A36F035002EF442 /* ASProductListViewModel.m in Sources */,
 				815DA3DF2A396BD300616EF7 /* ASMoreBtCell.m in Sources */,
 				9A1247942A1B082300126226 /* Fuction_Tool.m in Sources */,
+				81E5EE942A4A760D0075695F /* ASVipCenterLineItemView.m in Sources */,
 				81601FFF2A2DC8E700E4A8F1 /* ASHomeBannerCell.m in Sources */,
 				81717D132A3C4AE000648139 /* KWSearchViewController.m in Sources */,
 				9AD6A5442A1218E8001DE3D9 /* PassWordSecureBtnV.m in Sources */,
@@ -1939,6 +1972,7 @@
 				9ACBEC2B2A14CCA300A8F97A /* ThirdPartService.m in Sources */,
 				81C3265F2A36B284002EF442 /* ASProductListViewController.m in Sources */,
 				9AD346142A08D60F005CA070 /* ZFSpeedLoadingView.m in Sources */,
+				81E5EE902A498FC90075695F /* ASVipCenterViewController.m in Sources */,
 				9AD346062A08D60F005CA070 /* ZFReachabilityManager.m in Sources */,
 				81717CA52A3C0A5000648139 /* KWProductFilterItemCell.m in Sources */,
 				9AD345FE2A08D60F005CA070 /* UIScrollView+ZFPlayer.m in Sources */,

+ 2 - 0
Asteria/ASUI/ColorDefine.h

@@ -48,6 +48,8 @@
 
 #define _128273 ([UIColor colorWithHexString:@"#128273"])
 #define _1CBC9D ([UIColor colorWithHexString:@"#1CBC9D"])
+
+#define _FFE797 ([UIColor colorWithHexString:@"#FFE797"])
 // as主题色 绿色
 #define _32CFB0 ([UIColor colorWithHexString:@"#32CFB0"])
 

+ 2 - 0
Asteria/ASUI/CustomView/UserInfoV/ASUserBaseInfoView.h

@@ -6,11 +6,13 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "ASUserAvaterView.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface ASUserBaseInfoView : UIView
 
+@property (nonatomic, strong) ASUserAvaterView *avaterV;
 @property (nonatomic, strong) UILabel *usefualLb;
 
 // vip页面展示用户信息调整

+ 2 - 2
Asteria/ASUI/CustomView/UserInfoV/ASUserBaseInfoView.m

@@ -6,11 +6,11 @@
 //
 
 #import "ASUserBaseInfoView.h"
-#import "ASUserAvaterView.h"
+
 
 @interface ASUserBaseInfoView ()
 
-@property (nonatomic, strong) ASUserAvaterView *avaterV;
+
 @property (nonatomic, strong) UILabel *uNameLb;
 @property (nonatomic, strong) UILabel *emailLb;
 @property (nonatomic, strong) UIImageView *vipLevelV;

+ 6 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg1.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "卡片@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "卡片@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg1.imageset/卡片@2x.png


二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg1.imageset/卡片@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg2.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "卡片@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "卡片@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg2.imageset/卡片@2x.png


二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg2.imageset/卡片@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg3.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "卡片@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "卡片@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg3.imageset/卡片@2x.png


二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg3.imageset/卡片@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg4.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "卡片@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "卡片@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg4.imageset/卡片@2x.png


二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg4.imageset/卡片@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg5.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "卡片@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "卡片@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg5.imageset/卡片@2x.png


二進制
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipCenter/vip_bg5.imageset/卡片@3x.png


+ 8 - 1
Asteria/Fuction/UserCenter/UserCenterHome/ASUserCenterViewController.m

@@ -12,6 +12,7 @@
 #import "KWMineMoreProductsCell.h"
 #import "ASCouponsListViewController.h"
 #import "ASPointsHomeViewController.h"
+#import "ASVipCenterViewController.h"
 
 
 @interface ASUserCenterViewController ()<UITableViewDelegate,UITableViewDataSource>
@@ -49,7 +50,7 @@
     
     __weak typeof(self) weakSelf = self;
     [self.tableHeadV.itemsV setItemTapCallBack:^(NSInteger tag) {
-        // -2编辑头像 -1设置 0 vip  1优惠券 2积分 3 钱包 4联系 5浏览历史
+        /// -2编辑头像 -1设置 0 优惠券  1礼品卡 2积分 3vip  4联系  5消息
         switch (tag) {
             case -2:
                 
@@ -70,6 +71,12 @@
                 ASPointsHomeViewController *vc = [[ASPointsHomeViewController alloc] init];
                 [weakSelf.navigationController pushViewController:vc animated:true];
             }
+                break;
+            case 3: {
+                ASVipCenterViewController *vc = [ASVipCenterViewController new];
+                [weakSelf.navigationController pushViewController:vc animated:true];
+            }
+                break;
             default:
                 break;
         }

+ 16 - 0
Asteria/Fuction/UserCenter/VipCenter/ASVipCenterViewController.h

@@ -0,0 +1,16 @@
+//
+//  ASVipCenterViewController.h
+//  Asteria
+//
+//  Created by iOS on 2023/6/26.
+//
+
+#import "ASBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASVipCenterViewController : ASBaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 227 - 0
Asteria/Fuction/UserCenter/VipCenter/ASVipCenterViewController.m

@@ -0,0 +1,227 @@
+//
+//  ASVipCenterViewController.m
+//  Asteria
+//
+//  Created by iOS on 2023/6/26.
+//
+
+#import "ASVipCenterViewController.h"
+#import "ASUserBaseInfoView.h"
+#import "ASVipCenterLineItemView.h"
+#import "ASVipCenterCollectCell.h"
+
+@interface ASVipCenterViewController () <UICollectionViewDelegate,UICollectionViewDataSource>
+
+@property (nonatomic, strong) UIScrollView *scrollV;
+@property (nonatomic, strong) UIView *contentV;
+@property (nonatomic, strong) ASUserBaseInfoView *userInfoV;
+
+@property (nonatomic, strong) UICollectionView *collectV;
+
+@property (nonatomic, strong) UIPageControl *control;
+
+@property (nonatomic, strong) NSMutableArray <ASVipCenterLineItemView *>*bottomVArr;
+
+@property (nonatomic, strong) NSArray *bottomTitleArr;
+
+@property (nonatomic, strong) NSArray *vipImgArr;
+
+
+@end
+
+@implementation ASVipCenterViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    [UIView viewAddHorColorBg:self.view colorArr:@[
+        (id)_E0FFF5.CGColor,
+        (id)Col_FFF.CGColor
+        ] startP:CGPointMake(0.5, 0.25) endP:CGPointMake(0.5, 1)];
+    
+    self.bottomTitleArr = @[@"EXCLUSIVE $100 COUPON", @"BIRTHDAY TREAT"];
+    self.vipImgArr = @[@"vip_bg1",@"vip_bg2",@"vip_bg3",@"vip_bg4",@"vip_bg5"];
+    [self loadSubVs];
+    [self.view bringSubviewToFront:self.customNavBar];
+    [self configSubVs];
+    [self demoData];
+    
+}
+
+- (void)demoData {
+    self.userInfoV.usefualLb.text = @"Growth Value 7220/10000";
+    self.control.numberOfPages = self.vipImgArr.count;
+    self.control.currentPage = 0;
+}
+
+- (void)configSubVs {
+    self.titleStr = @"VIP Center";
+    [self setNavRightSearch:^{
+        
+    }];
+    self.statusBgV.backgroundColor = _E0FFF5;
+    self.customNavBar.backgroundColor = _F0FFFA;
+    
+}
+
+// MARK: - loadSubVs
+- (void)loadSubVs {
+    [self.view addSubview:self.scrollV];
+    [self.scrollV addSubview:self.contentV];
+    [self.contentV addSubview:self.userInfoV];
+    [self.contentV addSubview:self.collectV];
+    [self.contentV addSubview:self.control];
+    UIStackView *stv = [self getBottomV];
+    [self.contentV addSubview:stv];
+    
+    [self.scrollV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.customNavBar.mas_bottom);
+        make.leading.trailing.bottom.equalTo(self.view);
+    }];
+    
+    [self.contentV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self.scrollV);
+        make.width.equalTo(self.view);
+    }];
+    
+    [self.userInfoV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.contentV).offset(30);
+        make.leading.equalTo(self.contentV).offset(20);
+        make.trailing.equalTo(self.contentV).offset(-20);
+    }];
+    
+    [self.collectV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.userInfoV.mas_bottom).offset(50);
+        make.leading.trailing.equalTo(self.contentV);
+        CGFloat collH = (KScreenWidth-40)/335*256;
+        make.height.equalTo(@(collH));
+    }];
+    
+    [self.control mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@10);
+        make.leading.equalTo(self.contentV).offset(20);
+        make.trailing.equalTo(self.contentV).offset(-20);
+        make.top.equalTo(self.collectV.mas_bottom).offset(20);
+    }];
+    
+    [stv mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.control.mas_bottom).offset(20);
+        make.leading.trailing.equalTo(self.contentV);
+        make.bottom.equalTo(self.contentV.mas_bottom).offset(-80);
+    }];
+    
+}
+
+// MARK: - subvs
+- (ASUserBaseInfoView *)userInfoV {
+    if (!_userInfoV) {
+        ASUserBaseInfoView *v = [[ASUserBaseInfoView alloc] initWithFrame:CGRectZero];
+        v.backgroundColor = UIColor.clearColor;
+        v.usefualLb.font = [UIFont fontWithName:Rob_Regular size:14];
+        v.usefualLb.textColor = Col_666;
+        v.avaterV.layer.cornerRadius = 8;
+        v.avaterV.layer.masksToBounds = true;
+        _userInfoV = v;
+    }
+    return _userInfoV;
+}
+
+- (UIScrollView *)scrollV {
+    if (!_scrollV) {
+        UIScrollView *v = [[UIScrollView alloc] init];
+        v.backgroundColor = UIColor.clearColor;
+        v.showsVerticalScrollIndicator = false;
+        v.alwaysBounceVertical = true;
+        _scrollV = v;
+    }
+    return _scrollV;
+}
+
+- (UIView *)contentV {
+    if (!_contentV) {
+        UIView *v = [UIView baseV];
+        v.backgroundColor = UIColor.clearColor;
+        _contentV = v;
+    }
+    return _contentV;
+}
+
+- (UICollectionView *)collectV {
+    if (!_collectV) {
+        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
+        layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
+        layout.minimumInteritemSpacing = 0;
+        layout.minimumLineSpacing = 0;
+        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
+        CGFloat collH = (KScreenWidth-40)/335*256;
+        layout.itemSize = CGSizeMake(KScreenWidth, collH);
+        UICollectionView *collV = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, collH) collectionViewLayout:layout];
+        collV.backgroundColor = [UIColor clearColor];
+        collV.alwaysBounceHorizontal = true;
+        collV.scrollEnabled = true;
+        collV.pagingEnabled = true;
+        collV.delegate = self;
+        collV.dataSource = self;
+        collV.showsHorizontalScrollIndicator = false;
+        [collV registerClass:[ASVipCenterCollectCell class] forCellWithReuseIdentifier:@"ASVipCenterCollectCell"];
+        _collectV = collV;
+    }
+    return  _collectV;
+}
+
+-(UIPageControl *)control {
+    if (!_control) {
+        _control = [[UIPageControl alloc] init];
+        [_control setTintColor:[UIColor colorWithHexString:@"#000000"]];
+        [_control setPageIndicatorTintColor:[[UIColor colorWithHexString:@"#000000"] colorWithAlphaComponent:0.3] ];
+        [_control setCurrentPageIndicatorTintColor:[UIColor colorWithHexString:@"#000000"] ];
+        _control.transform = CGAffineTransformScale(_control.transform, 1.15, 1.15);
+    }
+    return  _control;
+}
+
+- (UIStackView *)getBottomV {
+    UIStackView *stv = [UIStackView baseStackV:true];
+    stv.spacing = 0;
+    stv.distribution = UIStackViewDistributionFillEqually;
+    
+    self.bottomVArr = [NSMutableArray array];
+    for (int i=0; i<self.bottomTitleArr.count; i++) {
+        NSString *title = self.bottomTitleArr[i];
+        ASVipCenterLineItemView *v = [[ASVipCenterLineItemView alloc] initWithFrame:CGRectZero];
+        [v setData:title canGoNext:true];
+        v.tag = 90000+i;
+        [self.bottomVArr addObject:v];
+        [stv addArrangedSubview:v];
+    }
+    return stv;
+}
+
+
+// MARK: - collectV delegate datesource
+- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
+    return self.vipImgArr.count;
+}
+
+- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
+    ASVipCenterCollectCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ASVipCenterCollectCell" forIndexPath:indexPath];
+    [cell setData:self.vipImgArr[indexPath.row] desStr:@"INTEGRAL TO 0-1000"];
+    cell.desLb.textColor = Col_000;
+    if (indexPath.row == self.vipImgArr.count-1) {
+        cell.desLb.textColor = _FFE797;
+    }
+    return cell;
+}
+
+- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
+    NSInteger page = (NSInteger)scrollView.contentOffset.x/SCREEN_WIDTH;
+    self.control.currentPage = page;
+}
+
+- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
+    NSInteger page = (NSInteger)scrollView.contentOffset.x/SCREEN_WIDTH;
+    self.control.currentPage = page;
+}
+
+
+@end

+ 20 - 0
Asteria/Fuction/UserCenter/VipCenter/Views/ASVipCenterCollectCell.h

@@ -0,0 +1,20 @@
+//
+//  ASVipCenterCollectCell.h
+//  Asteria
+//
+//  Created by iOS on 2023/6/27.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASVipCenterCollectCell : UICollectionViewCell
+
+@property (nonatomic, strong) UILabel *desLb;
+
+- (void)setData:(NSString *)imgName desStr:(NSString *)desStr;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 66 - 0
Asteria/Fuction/UserCenter/VipCenter/Views/ASVipCenterCollectCell.m

@@ -0,0 +1,66 @@
+//
+//  ASVipCenterCollectCell.m
+//  Asteria
+//
+//  Created by iOS on 2023/6/27.
+//
+
+#import "ASVipCenterCollectCell.h"
+
+@interface ASVipCenterCollectCell ()
+
+@property (nonatomic, strong) UIImageView *imgV;
+
+
+@end
+
+@implementation ASVipCenterCollectCell
+
+- (void)setData:(NSString *)imgName desStr:(NSString *)desStr {
+    self.imgV.image = [UIImage imageNamed:imgName];
+    self.desLb.text = desStr;
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self addSubview:self.imgV];
+        [self addSubview:self.desLb];
+        
+        [self.imgV mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.leading.equalTo(self).offset(20);
+            make.trailing.equalTo(self).offset(-20);
+            make.top.bottom.equalTo(self);
+        }];
+        [self.desLb mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.trailing.equalTo(self.imgV).offset(-24);
+            make.leading.greaterThanOrEqualTo(self.imgV).offset(24);
+            make.bottom.equalTo(self.imgV).offset(-24);
+            make.height.equalTo(@17);
+        }];
+    }
+    return self;
+}
+
+
+- (UIImageView *)imgV {
+    if (!_imgV) {
+        UIImageView *v = [UIImageView baseImgV];
+        _imgV = v;
+    }
+    return _imgV;
+}
+
+- (UILabel *)desLb {
+    if (!_desLb) {
+        UILabel *lb = [UILabel baseLb];
+        lb.font = [UIFont fontWithName:Rob_BoldItalic size:14];
+        lb.textColor = Col_000;
+        lb.textAlignment = NSTextAlignmentRight;
+        _desLb = lb;
+    }
+    return _desLb;
+}
+
+
+@end

+ 20 - 0
Asteria/Fuction/UserCenter/VipCenter/Views/ASVipCenterLineItemView.h

@@ -0,0 +1,20 @@
+//
+//  ASVipCenterLineItemView.h
+//  Asteria
+//
+//  Created by iOS on 2023/6/27.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASVipCenterLineItemView : UIView
+
+@property (nonatomic, copy) btnClickBlock selectCallBack;
+
+- (void)setData:(NSString *)title canGoNext:(BOOL)canGoNext;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 108 - 0
Asteria/Fuction/UserCenter/VipCenter/Views/ASVipCenterLineItemView.m

@@ -0,0 +1,108 @@
+//
+//  ASVipCenterLineItemView.m
+//  Asteria
+//
+//  Created by iOS on 2023/6/27.
+//
+
+#import "ASVipCenterLineItemView.h"
+
+@interface ASVipCenterLineItemView ()
+
+@property (nonatomic, strong) UILabel *titleLb;
+
+@property (nonatomic, strong) UIImageView *moreV;
+
+@property (nonatomic, strong) UIView *lineV;
+
+@property (nonatomic, strong) UIButton *bt;
+
+@end
+
+@implementation ASVipCenterLineItemView
+
+- (void)setData:(NSString *)title canGoNext:(BOOL)canGoNext {
+    self.titleLb.text = title;
+    self.bt.hidden = !canGoNext;
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self loadSubVs];
+    }
+    return self;
+}
+
+- (void)loadSubVs {
+    self.backgroundColor = UIColor.clearColor;
+    [self addSubview:self.titleLb];
+    [self addSubview:self.moreV];
+    [self addSubview:self.lineV];
+    [self addSubview:self.bt];
+    
+    [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@78);
+        make.top.bottom.equalTo(self);
+        make.leading.equalTo(self).offset(30);
+    }];
+    [self.moreV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.equalTo(@7);
+        make.height.equalTo(@13);
+        make.centerY.equalTo(self.titleLb);
+        make.trailing.equalTo(self).offset(-30);
+    }];
+    [self.lineV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.leading.equalTo(self.titleLb);
+        make.trailing.equalTo(self.moreV);
+        make.height.equalTo(@1);
+        make.bottom.equalTo(self);
+    }];
+    [self.bt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self);
+    }];
+}
+
+
+// MARK: - subVs
+- (UILabel *)titleLb {
+    if (!_titleLb) {
+        UILabel *lb = [UILabel baseLb];
+        lb.font = [UIFont fontWithName:Rob_Bold size:14];
+        lb.textColor = Col_000;
+        _titleLb = lb;
+    }
+    return _titleLb;
+}
+
+- (UIImageView *)moreV {
+    if (!_moreV) {
+        UIImageView *v = [UIImageView baseImgV];
+        v.image = [UIImage imageNamed:@"uc_more"];
+        _moreV = v;
+    }
+    return _moreV;
+}
+
+- (UIView *)lineV {
+    if (!_lineV) {
+        UIView *v = [UIView baseV];
+        v.backgroundColor = _043632;
+        v.alpha = 0.1;
+        _lineV = v;
+    }
+    return _lineV;
+}
+
+- (UIButton *)bt {
+    if (!_bt) {
+        UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom];
+        _bt = b;
+    }
+    return _bt;
+}
+
+
+
+
+@end