Parcourir la source

个人中心首页UI开发完成

iOS-Abel il y a 2 ans
Parent
commit
aa9e12f90c
65 fichiers modifiés avec 2267 ajouts et 201 suppressions
  1. 124 10
      Asteria.xcodeproj/project.pbxproj
  2. 6 0
      Asteria/ASUI/ASUI.xcassets/Contents.json
  3. 6 0
      Asteria/ASUI/ASUI.xcassets/nav/Contents.json
  4. 22 0
      Asteria/ASUI/ASUI.xcassets/nav/nav_icon.imageset/Contents.json
  5. BIN
      Asteria/ASUI/ASUI.xcassets/nav/nav_icon.imageset/组 2@2x.png
  6. BIN
      Asteria/ASUI/ASUI.xcassets/nav/nav_icon.imageset/组 2@3x.png
  7. 22 0
      Asteria/ASUI/ASUI.xcassets/nav/nav_search.imageset/Contents.json
  8. BIN
      Asteria/ASUI/ASUI.xcassets/nav/nav_search.imageset/搜索@2x.png
  9. BIN
      Asteria/ASUI/ASUI.xcassets/nav/nav_search.imageset/搜索@3x.png
  10. 6 0
      Asteria/ASUI/ASUI.xcassets/product/Contents.json
  11. 22 0
      Asteria/ASUI/ASUI.xcassets/product/product_addCart.imageset/Contents.json
  12. BIN
      Asteria/ASUI/ASUI.xcassets/product/product_addCart.imageset/购物车@2x.png
  13. BIN
      Asteria/ASUI/ASUI.xcassets/product/product_addCart.imageset/购物车@3x.png
  14. 22 0
      Asteria/ASUI/ASUI.xcassets/product/product_defualtImg.imageset/Contents.json
  15. BIN
      Asteria/ASUI/ASUI.xcassets/product/product_defualtImg.imageset/组 11196@2x.png
  16. BIN
      Asteria/ASUI/ASUI.xcassets/product/product_defualtImg.imageset/组 11196@3x.png
  17. 0 19
      Asteria/ASUI/CustomView/ASProductItemView.h
  18. 0 132
      Asteria/ASUI/CustomView/ASProductItemView.m
  19. 36 0
      Asteria/ASUI/CustomView/productView/ASProductBaseModel.h
  20. 42 0
      Asteria/ASUI/CustomView/productView/ASProductBaseModel.m
  21. 21 0
      Asteria/ASUI/CustomView/productView/ASProductItemView.h
  22. 187 0
      Asteria/ASUI/CustomView/productView/ASProductItemView.m
  23. 21 0
      Asteria/ASUI/CustomView/someView/KWScrollOffsetView.h
  24. 63 0
      Asteria/ASUI/CustomView/someView/KWScrollOffsetView.m
  25. 21 0
      Asteria/ASUI/CustomView/someView/KWTimeEndView.h
  26. 142 0
      Asteria/ASUI/CustomView/someView/KWTimeEndView.m
  27. 18 0
      Asteria/ASUI/Extensions/UITableView+ASBase.h
  28. 26 0
      Asteria/ASUI/Extensions/UITableView+ASBase.m
  29. 2 0
      Asteria/ASUI/SimpleBase/ASBaseViewController.h
  30. 94 0
      Asteria/ASUI/SimpleBase/ASBaseViewController.m
  31. 6 0
      Asteria/Assets.xcassets/launch/Contents.json
  32. 22 0
      Asteria/Assets.xcassets/launch/name_icon.imageset/Contents.json
  33. BIN
      Asteria/Assets.xcassets/launch/name_icon.imageset/组 2@2x.png
  34. BIN
      Asteria/Assets.xcassets/launch/name_icon.imageset/组 2@3x.png
  35. 115 1
      Asteria/Fuction/UserCenter/ASUserCenterViewController.m
  36. 27 0
      Asteria/Fuction/UserCenter/models/HomeFilterModel.h
  37. 30 0
      Asteria/Fuction/UserCenter/models/HomeFilterModel.m
  38. 39 0
      Asteria/Fuction/UserCenter/models/KWMineHomeOrderModel.h
  39. 26 0
      Asteria/Fuction/UserCenter/models/KWMineHomeOrderModel.m
  40. 23 0
      Asteria/Fuction/UserCenter/models/KWMineMoreProductModel.h
  41. 35 0
      Asteria/Fuction/UserCenter/models/KWMineMoreProductModel.m
  42. 0 0
      Asteria/Fuction/UserCenter/views/ASSginView.h
  43. 6 1
      Asteria/Fuction/UserCenter/ASSginView.m
  44. 0 0
      Asteria/Fuction/UserCenter/views/ASUserCenterEnterItemV.h
  45. 0 0
      Asteria/Fuction/UserCenter/views/ASUserCenterEnterItemV.m
  46. 0 0
      Asteria/Fuction/UserCenter/views/ASUserCenterTableHeadView.h
  47. 0 0
      Asteria/Fuction/UserCenter/views/ASUserCenterTableHeadView.m
  48. 0 0
      Asteria/Fuction/UserCenter/views/ASUserCenterTopView.h
  49. 1 2
      Asteria/Fuction/UserCenter/ASUserCenterTopView.m
  50. 22 0
      Asteria/Fuction/UserCenter/views/HomeFlashDealSubCollectCell.h
  51. 55 0
      Asteria/Fuction/UserCenter/views/HomeFlashDealSubCollectCell.m
  52. 18 0
      Asteria/Fuction/UserCenter/views/KWMineHomeOrderHeadView.h
  53. 116 0
      Asteria/Fuction/UserCenter/views/KWMineHomeOrderHeadView.m
  54. 22 0
      Asteria/Fuction/UserCenter/views/KWMineHomeOrderListCell.h
  55. 197 0
      Asteria/Fuction/UserCenter/views/KWMineHomeOrderListCell.m
  56. 19 0
      Asteria/Fuction/UserCenter/views/KWMineHomeOrderSubView.h
  57. 139 0
      Asteria/Fuction/UserCenter/views/KWMineHomeOrderSubView.m
  58. 19 0
      Asteria/Fuction/UserCenter/views/KWMineMoreProductTypeCell.h
  59. 56 0
      Asteria/Fuction/UserCenter/views/KWMineMoreProductTypeCell.m
  60. 34 0
      Asteria/Fuction/UserCenter/views/KWMineMoreProductsCell.h
  61. 317 0
      Asteria/Fuction/UserCenter/views/KWMineMoreProductsCell.m
  62. 1 1
      Asteria/PreFixHeader.h
  63. 1 1
      Asteria/Product/Tool/Fuction_Tool.m
  64. 2 0
      Asteria/Tabber/AS_TabBarViewController.m
  65. 16 34
      Pods/Pods.xcodeproj/project.pbxproj

+ 124 - 10
Asteria.xcodeproj/project.pbxproj

@@ -14,6 +14,19 @@
 		8134C1BA2A1372A7006EB0EC /* ASUserCenterEnterItemV.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134C1B92A1372A7006EB0EC /* ASUserCenterEnterItemV.m */; };
 		8134C1BD2A1372D5006EB0EC /* ASUserCenterTableHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134C1BC2A1372D5006EB0EC /* ASUserCenterTableHeadView.m */; };
 		8134C1C52A145172006EB0EC /* ASProductItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134C1C42A145172006EB0EC /* ASProductItemView.m */; };
+		81354BE72A28786C0082C93A /* ASProductBaseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354BE62A28786C0082C93A /* ASProductBaseModel.m */; };
+		81354BED2A287AB50082C93A /* KWMineHomeOrderHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354BEA2A287AB50082C93A /* KWMineHomeOrderHeadView.m */; };
+		81354BEE2A287AB50082C93A /* KWMineHomeOrderListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354BEC2A287AB50082C93A /* KWMineHomeOrderListCell.m */; };
+		81354BF22A287B120082C93A /* KWMineHomeOrderModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354BF02A287B120082C93A /* KWMineHomeOrderModel.m */; };
+		81354BF52A287BED0082C93A /* KWMineHomeOrderSubView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354BF42A287BEC0082C93A /* KWMineHomeOrderSubView.m */; };
+		81354BF72A288AC20082C93A /* ASUI.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 81354BF62A288AC20082C93A /* ASUI.xcassets */; };
+		81354BFC2A28998B0082C93A /* KWMineMoreProductTypeCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354BF92A28998A0082C93A /* KWMineMoreProductTypeCell.m */; };
+		81354BFD2A28998B0082C93A /* KWMineMoreProductsCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354BFB2A28998A0082C93A /* KWMineMoreProductsCell.m */; };
+		81354C002A2899CB0082C93A /* KWMineMoreProductModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354BFF2A2899CB0082C93A /* KWMineMoreProductModel.m */; };
+		81354C032A289A070082C93A /* HomeFilterModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354C022A289A070082C93A /* HomeFilterModel.m */; };
+		81354C0A2A289C350082C93A /* KWScrollOffsetView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354C082A289C350082C93A /* KWScrollOffsetView.m */; };
+		81354C0B2A289C350082C93A /* KWTimeEndView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354C092A289C350082C93A /* KWTimeEndView.m */; };
+		81354C0E2A297D6A0082C93A /* HomeFlashDealSubCollectCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81354C0C2A297D690082C93A /* HomeFlashDealSubCollectCell.m */; };
 		814F5CEF2A11B1F2003847A9 /* ASUserCenterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 814F5CEE2A11B1F2003847A9 /* ASUserCenterViewController.m */; };
 		814F5CF52A11B37E003847A9 /* ASUserAvaterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 814F5CF42A11B37E003847A9 /* ASUserAvaterView.m */; };
 		814F5D052A11B76F003847A9 /* Roboto-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5CF82A11B76F003847A9 /* Roboto-Medium.ttf */; };
@@ -37,6 +50,7 @@
 		817244C229F3B81C005FA9C9 /* NotificationServiceExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 817244BA29F3B81C005FA9C9 /* NotificationServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
 		81932E2B29F7539B007C37AF /* UIColor+AS.m in Sources */ = {isa = PBXBuildFile; fileRef = 81932E2A29F7539B007C37AF /* UIColor+AS.m */; };
 		819900222A020A6F006FE68C /* LYTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 819900212A020A6F006FE68C /* LYTools.m */; };
+		81BEA6832A2D7CF3009D36C4 /* UITableView+ASBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 81BEA6822A2D7CF3009D36C4 /* UITableView+ASBase.m */; };
 		81C3B44429F6612800D79294 /* ASBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C3B44329F6612800D79294 /* ASBaseViewController.m */; };
 		81C3B44A29F6661500D79294 /* ASBaseNavController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C3B44929F6661500D79294 /* ASBaseNavController.m */; };
 		81C3B45529F66C1700D79294 /* UIView+PublicInit.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C3B45429F66C1700D79294 /* UIView+PublicInit.m */; };
@@ -154,6 +168,31 @@
 		8134C1BC2A1372D5006EB0EC /* ASUserCenterTableHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASUserCenterTableHeadView.m; sourceTree = "<group>"; };
 		8134C1C32A145172006EB0EC /* ASProductItemView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASProductItemView.h; sourceTree = "<group>"; };
 		8134C1C42A145172006EB0EC /* ASProductItemView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASProductItemView.m; sourceTree = "<group>"; };
+		81354BE52A28786C0082C93A /* ASProductBaseModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASProductBaseModel.h; sourceTree = "<group>"; };
+		81354BE62A28786C0082C93A /* ASProductBaseModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASProductBaseModel.m; sourceTree = "<group>"; };
+		81354BE92A287AB40082C93A /* KWMineHomeOrderHeadView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMineHomeOrderHeadView.h; sourceTree = "<group>"; };
+		81354BEA2A287AB50082C93A /* KWMineHomeOrderHeadView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMineHomeOrderHeadView.m; sourceTree = "<group>"; };
+		81354BEB2A287AB50082C93A /* KWMineHomeOrderListCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMineHomeOrderListCell.h; sourceTree = "<group>"; };
+		81354BEC2A287AB50082C93A /* KWMineHomeOrderListCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMineHomeOrderListCell.m; sourceTree = "<group>"; };
+		81354BF02A287B120082C93A /* KWMineHomeOrderModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMineHomeOrderModel.m; sourceTree = "<group>"; };
+		81354BF12A287B120082C93A /* KWMineHomeOrderModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMineHomeOrderModel.h; sourceTree = "<group>"; };
+		81354BF32A287BEC0082C93A /* KWMineHomeOrderSubView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMineHomeOrderSubView.h; sourceTree = "<group>"; };
+		81354BF42A287BEC0082C93A /* KWMineHomeOrderSubView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMineHomeOrderSubView.m; sourceTree = "<group>"; };
+		81354BF62A288AC20082C93A /* ASUI.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = ASUI.xcassets; sourceTree = "<group>"; };
+		81354BF82A28998A0082C93A /* KWMineMoreProductTypeCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMineMoreProductTypeCell.h; sourceTree = "<group>"; };
+		81354BF92A28998A0082C93A /* KWMineMoreProductTypeCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMineMoreProductTypeCell.m; sourceTree = "<group>"; };
+		81354BFA2A28998A0082C93A /* KWMineMoreProductsCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMineMoreProductsCell.h; sourceTree = "<group>"; };
+		81354BFB2A28998A0082C93A /* KWMineMoreProductsCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMineMoreProductsCell.m; sourceTree = "<group>"; };
+		81354BFE2A2899CA0082C93A /* KWMineMoreProductModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMineMoreProductModel.h; sourceTree = "<group>"; };
+		81354BFF2A2899CB0082C93A /* KWMineMoreProductModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMineMoreProductModel.m; sourceTree = "<group>"; };
+		81354C012A289A060082C93A /* HomeFilterModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeFilterModel.h; sourceTree = "<group>"; };
+		81354C022A289A070082C93A /* HomeFilterModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeFilterModel.m; sourceTree = "<group>"; };
+		81354C062A289C340082C93A /* KWScrollOffsetView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWScrollOffsetView.h; sourceTree = "<group>"; };
+		81354C072A289C340082C93A /* KWTimeEndView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWTimeEndView.h; sourceTree = "<group>"; };
+		81354C082A289C350082C93A /* KWScrollOffsetView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWScrollOffsetView.m; sourceTree = "<group>"; };
+		81354C092A289C350082C93A /* KWTimeEndView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWTimeEndView.m; sourceTree = "<group>"; };
+		81354C0C2A297D690082C93A /* HomeFlashDealSubCollectCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeFlashDealSubCollectCell.m; sourceTree = "<group>"; };
+		81354C0D2A297D6A0082C93A /* HomeFlashDealSubCollectCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeFlashDealSubCollectCell.h; sourceTree = "<group>"; };
 		814F5CED2A11B1F2003847A9 /* ASUserCenterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASUserCenterViewController.h; sourceTree = "<group>"; };
 		814F5CEE2A11B1F2003847A9 /* ASUserCenterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASUserCenterViewController.m; sourceTree = "<group>"; };
 		814F5CF32A11B37E003847A9 /* ASUserAvaterView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASUserAvaterView.h; sourceTree = "<group>"; };
@@ -187,6 +226,8 @@
 		8199001E2A0206F7006FE68C /* SizeDefine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SizeDefine.h; sourceTree = "<group>"; };
 		819900202A020A6F006FE68C /* LYTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LYTools.h; sourceTree = "<group>"; };
 		819900212A020A6F006FE68C /* LYTools.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LYTools.m; sourceTree = "<group>"; };
+		81BEA6812A2D7CF3009D36C4 /* UITableView+ASBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UITableView+ASBase.h"; sourceTree = "<group>"; };
+		81BEA6822A2D7CF3009D36C4 /* UITableView+ASBase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UITableView+ASBase.m"; sourceTree = "<group>"; };
 		81C3B44229F6612800D79294 /* ASBaseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASBaseViewController.h; sourceTree = "<group>"; };
 		81C3B44329F6612800D79294 /* ASBaseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASBaseViewController.m; sourceTree = "<group>"; };
 		81C3B44829F6661500D79294 /* ASBaseNavController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASBaseNavController.h; sourceTree = "<group>"; };
@@ -365,6 +406,68 @@
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
+		81354BE82A2879EE0082C93A /* views */ = {
+			isa = PBXGroup;
+			children = (
+				81354C0D2A297D6A0082C93A /* HomeFlashDealSubCollectCell.h */,
+				81354C0C2A297D690082C93A /* HomeFlashDealSubCollectCell.m */,
+				81354BFA2A28998A0082C93A /* KWMineMoreProductsCell.h */,
+				81354BFB2A28998A0082C93A /* KWMineMoreProductsCell.m */,
+				81354BF82A28998A0082C93A /* KWMineMoreProductTypeCell.h */,
+				81354BF92A28998A0082C93A /* KWMineMoreProductTypeCell.m */,
+				81354BF32A287BEC0082C93A /* KWMineHomeOrderSubView.h */,
+				81354BF42A287BEC0082C93A /* KWMineHomeOrderSubView.m */,
+				81354BE92A287AB40082C93A /* KWMineHomeOrderHeadView.h */,
+				81354BEA2A287AB50082C93A /* KWMineHomeOrderHeadView.m */,
+				81354BEB2A287AB50082C93A /* KWMineHomeOrderListCell.h */,
+				81354BEC2A287AB50082C93A /* KWMineHomeOrderListCell.m */,
+				8134C1BB2A1372D5006EB0EC /* ASUserCenterTableHeadView.h */,
+				8134C1BC2A1372D5006EB0EC /* ASUserCenterTableHeadView.m */,
+				81E257EC2A120756004EEF71 /* ASUserCenterTopView.h */,
+				81E257ED2A120756004EEF71 /* ASUserCenterTopView.m */,
+				8134C1B22A1358F3006EB0EC /* ASSginView.h */,
+				8134C1B32A1358F3006EB0EC /* ASSginView.m */,
+				8134C1B82A1372A7006EB0EC /* ASUserCenterEnterItemV.h */,
+				8134C1B92A1372A7006EB0EC /* ASUserCenterEnterItemV.m */,
+			);
+			path = views;
+			sourceTree = "<group>";
+		};
+		81354BEF2A287B040082C93A /* models */ = {
+			isa = PBXGroup;
+			children = (
+				81354C012A289A060082C93A /* HomeFilterModel.h */,
+				81354C022A289A070082C93A /* HomeFilterModel.m */,
+				81354BFE2A2899CA0082C93A /* KWMineMoreProductModel.h */,
+				81354BFF2A2899CB0082C93A /* KWMineMoreProductModel.m */,
+				81354BF12A287B120082C93A /* KWMineHomeOrderModel.h */,
+				81354BF02A287B120082C93A /* KWMineHomeOrderModel.m */,
+			);
+			path = models;
+			sourceTree = "<group>";
+		};
+		81354C042A289C100082C93A /* productView */ = {
+			isa = PBXGroup;
+			children = (
+				8134C1C32A145172006EB0EC /* ASProductItemView.h */,
+				8134C1C42A145172006EB0EC /* ASProductItemView.m */,
+				81354BE52A28786C0082C93A /* ASProductBaseModel.h */,
+				81354BE62A28786C0082C93A /* ASProductBaseModel.m */,
+			);
+			path = productView;
+			sourceTree = "<group>";
+		};
+		81354C052A289C230082C93A /* someView */ = {
+			isa = PBXGroup;
+			children = (
+				81354C062A289C340082C93A /* KWScrollOffsetView.h */,
+				81354C082A289C350082C93A /* KWScrollOffsetView.m */,
+				81354C072A289C340082C93A /* KWTimeEndView.h */,
+				81354C092A289C350082C93A /* KWTimeEndView.m */,
+			);
+			path = someView;
+			sourceTree = "<group>";
+		};
 		814F5CF02A11B317003847A9 /* SimpleBase */ = {
 			isa = PBXGroup;
 			children = (
@@ -387,6 +490,7 @@
 				81E257EF2A12093A004EEF71 /* CustomView */,
 				814F5CF22A11B35B003847A9 /* ASUserAvater */,
 				814F5CF02A11B317003847A9 /* SimpleBase */,
+				81354BF62A288AC20082C93A /* ASUI.xcassets */,
 			);
 			path = ASUI;
 			sourceTree = "<group>";
@@ -496,6 +600,8 @@
 				81C3B45429F66C1700D79294 /* UIView+PublicInit.m */,
 				81932E2929F7539B007C37AF /* UIColor+AS.h */,
 				81932E2A29F7539B007C37AF /* UIColor+AS.m */,
+				81BEA6812A2D7CF3009D36C4 /* UITableView+ASBase.h */,
+				81BEA6822A2D7CF3009D36C4 /* UITableView+ASBase.m */,
 			);
 			path = Extensions;
 			sourceTree = "<group>";
@@ -506,14 +612,8 @@
 				81E257F52A12259B004EEF71 /* UserCenter.xcassets */,
 				814F5CED2A11B1F2003847A9 /* ASUserCenterViewController.h */,
 				814F5CEE2A11B1F2003847A9 /* ASUserCenterViewController.m */,
-				8134C1BB2A1372D5006EB0EC /* ASUserCenterTableHeadView.h */,
-				8134C1BC2A1372D5006EB0EC /* ASUserCenterTableHeadView.m */,
-				81E257EC2A120756004EEF71 /* ASUserCenterTopView.h */,
-				81E257ED2A120756004EEF71 /* ASUserCenterTopView.m */,
-				8134C1B22A1358F3006EB0EC /* ASSginView.h */,
-				8134C1B32A1358F3006EB0EC /* ASSginView.m */,
-				8134C1B82A1372A7006EB0EC /* ASUserCenterEnterItemV.h */,
-				8134C1B92A1372A7006EB0EC /* ASUserCenterEnterItemV.m */,
+				81354BEF2A287B040082C93A /* models */,
+				81354BE82A2879EE0082C93A /* views */,
 				8134C1AB2A13094F006EB0EC /* Target_userCenter.h */,
 				8134C1AC2A13094F006EB0EC /* Target_userCenter.m */,
 			);
@@ -528,8 +628,8 @@
 				81E257F02A120952004EEF71 /* UserInfoV */,
 				8134C1B52A1359E6006EB0EC /* ASSignDayView.h */,
 				8134C1B62A1359E6006EB0EC /* ASSignDayView.m */,
-				8134C1C32A145172006EB0EC /* ASProductItemView.h */,
-				8134C1C42A145172006EB0EC /* ASProductItemView.m */,
+				81354C052A289C230082C93A /* someView */,
+				81354C042A289C100082C93A /* productView */,
 			);
 			path = CustomView;
 			sourceTree = "<group>";
@@ -1039,6 +1139,7 @@
 				814F5D0C2A11B76F003847A9 /* Roboto-Italic.ttf in Resources */,
 				814F5D0F2A11B76F003847A9 /* Roboto-Bold.ttf in Resources */,
 				814F5D0B2A11B76F003847A9 /* Roboto-LightItalic.ttf in Resources */,
+				81354BF72A288AC20082C93A /* ASUI.xcassets in Resources */,
 				814F5D112A11B76F003847A9 /* Roboto-Black.ttf in Resources */,
 				814F5D0E2A11B76F003847A9 /* Roboto-BlackItalic.ttf in Resources */,
 				814F5D072A11B76F003847A9 /* Roboto-Regular.ttf in Resources */,
@@ -1170,6 +1271,8 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				81354BEE2A287AB50082C93A /* KWMineHomeOrderListCell.m in Sources */,
+				81354BF22A287B120082C93A /* KWMineHomeOrderModel.m in Sources */,
 				9AD345F82A08D60F005CA070 /* ZFPlayerGestureControl.m in Sources */,
 				9AD345FA2A08D60F005CA070 /* ZFLandscapeWindow.m in Sources */,
 				81E257EE2A120756004EEF71 /* ASUserCenterTopView.m in Sources */,
@@ -1192,17 +1295,21 @@
 				9AD346012A08D60F005CA070 /* ZFFloatView.m in Sources */,
 				9AD345F92A08D60F005CA070 /* ZFPlayerController.m in Sources */,
 				9AD345AC2A08D59A005CA070 /* WKM_goodsBanner.m in Sources */,
+				81354BE72A28786C0082C93A /* ASProductBaseModel.m in Sources */,
 				9A8DD8C52A0B8F1700573324 /* As_GoodsSizeC.m in Sources */,
 				8134C1BD2A1372D5006EB0EC /* ASUserCenterTableHeadView.m in Sources */,
 				9AD346002A08D60F005CA070 /* ZFPresentTransition.m in Sources */,
 				9A337E3B2A04EE1A00D058A5 /* BViewController.m in Sources */,
 				9AD345A72A08D571005CA070 /* TYPageControl.m in Sources */,
+				81354C0A2A289C350082C93A /* KWScrollOffsetView.m in Sources */,
+				81354C032A289A070082C93A /* HomeFilterModel.m in Sources */,
 				9AD364D12A05EC7800452C7A /* AS_TabBarViewController.m in Sources */,
 				9AD345FB2A08D60F005CA070 /* ZFOrientationObserver.m in Sources */,
 				9AD346192A08D679005CA070 /* GoodsBannerModel.m in Sources */,
 				9AD346082A08D60F005CA070 /* ZFIJKPlayerManager.m in Sources */,
 				9AD3459E2A08D545005CA070 /* GoodsDetailSrcView.m in Sources */,
 				9AD346022A08D60F005CA070 /* ZFPlayerView.m in Sources */,
+				81BEA6832A2D7CF3009D36C4 /* UITableView+ASBase.m in Sources */,
 				81C3B44429F6612800D79294 /* ASBaseViewController.m in Sources */,
 				9A1247942A1B082300126226 /* Fuction_Tool.m in Sources */,
 				9AD6A5442A1218E8001DE3D9 /* PassWordSecureBtnV.m in Sources */,
@@ -1217,10 +1324,13 @@
 				9A788C442A08A663003E0025 /* Target_Goods.m in Sources */,
 				9AD3461D2A08D6F0005CA070 /* GoodsInformationM.m in Sources */,
 				9A1247972A1B0A2800126226 /* AS_ForgotC.m in Sources */,
+				81354BF52A287BED0082C93A /* KWMineHomeOrderSubView.m in Sources */,
 				9AD345A82A08D571005CA070 /* TYCyclePagerView.m in Sources */,
 				9AD346202A08E30E005CA070 /* SelectVCollectionViewCell.m in Sources */,
+				81354C002A2899CB0082C93A /* KWMineMoreProductModel.m in Sources */,
 				8134C1BA2A1372A7006EB0EC /* ASUserCenterEnterItemV.m in Sources */,
 				9AD3460A2A08D60F005CA070 /* ZFUtilities.m in Sources */,
+				81354BFC2A28998B0082C93A /* KWMineMoreProductTypeCell.m in Sources */,
 				9AD6A5492A1237D0001DE3D9 /* Target_Login.m in Sources */,
 				9A337E3A2A04EE1A00D058A5 /* Target_B.m in Sources */,
 				9AD6A5452A1218E8001DE3D9 /* EamilTFmatchV.m in Sources */,
@@ -1231,7 +1341,9 @@
 				9AD3460E2A08D60F005CA070 /* ZFNetworkSpeedMonitor.m in Sources */,
 				9AD346052A08D60F005CA070 /* ZFLandscapeViewController.m in Sources */,
 				814F5CF52A11B37E003847A9 /* ASUserAvaterView.m in Sources */,
+				81354C0B2A289C350082C93A /* KWTimeEndView.m in Sources */,
 				9AD346032A08D60F005CA070 /* ZFPortraitViewController.m in Sources */,
+				81354BED2A287AB50082C93A /* KWMineHomeOrderHeadView.m in Sources */,
 				9AD3460D2A08D60F005CA070 /* ZFLandScapeControlView.m in Sources */,
 				9AD364C62A05E73E00452C7A /* AS_GoodsDetailsC.m in Sources */,
 				9AD3460B2A08D60F005CA070 /* UIView+ZFFrame.m in Sources */,
@@ -1241,6 +1353,8 @@
 				9A5C64582A12064300CBB185 /* AS_LoginC.m in Sources */,
 				9AD345FD2A08D60F005CA070 /* ZFPersentInteractiveTransition.m in Sources */,
 				9AD345FC2A08D60F005CA070 /* ZFPlayerLogManager.m in Sources */,
+				81354C0E2A297D6A0082C93A /* HomeFlashDealSubCollectCell.m in Sources */,
+				81354BFD2A28998B0082C93A /* KWMineMoreProductsCell.m in Sources */,
 				9ACBEC252A14707400A8F97A /* AS_SignUpC.m in Sources */,
 				9AD346162A08D60F005CA070 /* UIImageView+ZFCache.m in Sources */,
 				9AD345A92A08D571005CA070 /* TYCyclePagerTransformLayout.m in Sources */,

+ 6 - 0
Asteria/ASUI/ASUI.xcassets/Contents.json

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

+ 6 - 0
Asteria/ASUI/ASUI.xcassets/nav/Contents.json

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

+ 22 - 0
Asteria/ASUI/ASUI.xcassets/nav/nav_icon.imageset/Contents.json

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

BIN
Asteria/ASUI/ASUI.xcassets/nav/nav_icon.imageset/组 2@2x.png


BIN
Asteria/ASUI/ASUI.xcassets/nav/nav_icon.imageset/组 2@3x.png


+ 22 - 0
Asteria/ASUI/ASUI.xcassets/nav/nav_search.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
+  }
+}

BIN
Asteria/ASUI/ASUI.xcassets/nav/nav_search.imageset/搜索@2x.png


BIN
Asteria/ASUI/ASUI.xcassets/nav/nav_search.imageset/搜索@3x.png


+ 6 - 0
Asteria/ASUI/ASUI.xcassets/product/Contents.json

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

+ 22 - 0
Asteria/ASUI/ASUI.xcassets/product/product_addCart.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
+  }
+}

BIN
Asteria/ASUI/ASUI.xcassets/product/product_addCart.imageset/购物车@2x.png


BIN
Asteria/ASUI/ASUI.xcassets/product/product_addCart.imageset/购物车@3x.png


+ 22 - 0
Asteria/ASUI/ASUI.xcassets/product/product_defualtImg.imageset/Contents.json

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

BIN
Asteria/ASUI/ASUI.xcassets/product/product_defualtImg.imageset/组 11196@2x.png


BIN
Asteria/ASUI/ASUI.xcassets/product/product_defualtImg.imageset/组 11196@3x.png


+ 0 - 19
Asteria/ASUI/CustomView/ASProductItemView.h

@@ -1,19 +0,0 @@
-//
-//  ASProductItemView.h
-//  Asteria
-//
-//  Created by iOS on 2023/5/17.
-//
-
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface ASProductItemView : UIView
-
-//@property (nonatomic, strong)HomeProductListModel *model;
-//@property (nonatomic, copy, nullable) void(^addCartBlock)(HomeProductListModel* m);
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 132
Asteria/ASUI/CustomView/ASProductItemView.m

@@ -1,132 +0,0 @@
-//
-//  ASProductItemView.m
-//  Asteria
-//
-//  Created by iOS on 2023/5/17.
-//
-
-#import "ASProductItemView.h"
-
-@interface ASProductItemView ()
-
-@property (nonatomic, strong) UIImageView *imgV;
-@property (nonatomic, strong) UILabel *titleLb;
-
-@property (nonatomic, strong) UILabel *nowPriceLb;
-@property (nonatomic, strong) UILabel *oldPriceLb;
-
-@property (nonatomic,strong) UILabel *hotLb;
-
-
-@property (nonatomic,strong) UIStackView *lbStackV;
-
-@property (nonatomic,strong) UIButton *addCartBt;
-
-
-//@property (nonatomic, strong)UIStackView *priceStackV;
-//@property (nonatomic, strong) UIView* hotV;
-
-
-@end
-
-@implementation ASProductItemView
-
-
-- (instancetype)initWithFrame:(CGRect)frame {
-    self = [super initWithFrame:frame];
-    if (self) {
-        [self configSubV];
-        self.clipsToBounds = true;
-    }
-    return  self;
-}
-
-- (void) configSubV {
-    self.layer.cornerRadius = 8;
-    self.layer.masksToBounds = true;
-    self.backgroundColor = _F5F5F5;
-    
-    [self addSubview:self.imgV];
-    [self addSubview:self.titleLb];
-    [self addSubview:self.hotLb];
-    [self addSubview: self.nowPriceLb];
-    [self addSubview: self.oldPriceLb];
-    
-    
-}
-
-- (UIImageView *)imgV {
-    if (!_imgV) {
-        UIImageView *v = [[UIImageView alloc] init];
-        v.contentMode = UIViewContentModeScaleToFill;
-        _imgV = v;
-    }
-    return  _imgV;
-}
-
-
-- (UILabel *)titleLb {
-    if (!_titleLb) {
-        UILabel *lb = [[UILabel alloc] init];
-        lb.font = [UIFont fontWithName:Rob_Regular size:12];
-        lb.textColor = [UIColor blackColor];
-        lb.textAlignment = NSTextAlignmentLeft;
-        lb.numberOfLines = 2;
-        _titleLb = lb;
-    }
-    return  _titleLb;
-}
-
-- (UILabel *)nowPriceLb {
-    if (!_nowPriceLb) {
-        UILabel *lb = [[UILabel alloc] init];
-        lb.font = [UIFont fontWithName:Rob_Bold size:14];
-        lb.textColor = [UIColor blackColor];
-        lb.textAlignment = NSTextAlignmentLeft;
-        _nowPriceLb = lb;
-    }
-    return  _nowPriceLb;
-}
-
-- (UILabel *)oldPriceLb {
-    if (!_oldPriceLb) {
-        UILabel *lb = [[UILabel alloc] init];
-        lb.font = [UIFont fontWithName:Rob_Regular size:12];
-        lb.textColor = Col_999;
-        lb.textAlignment = NSTextAlignmentLeft;
-        _oldPriceLb = lb;
-    }
-    return  _oldPriceLb;
-}
-
-
-
-- (UILabel *)hotLb {
-    if (!_hotLb) {
-        UILabel *lb = [[UILabel alloc] init];
-        lb.font = [UIFont fontWithName:Rob_Regular size:12];
-        lb.textColor = Col_666;
-        lb.textAlignment = NSTextAlignmentLeft;
-        _hotLb = lb;
-    }
-    return  _hotLb;
-}
-
--(UIButton *)addCartBt {
-    if (!_addCartBt) {
-        UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
-        [bt setImage:[UIImage imageNamed:@"list_addbag"] forState:UIControlStateNormal];
-        [bt addTarget:self action:@selector(addCartBtAction) forControlEvents:UIControlEventTouchUpInside];
-        _addCartBt = bt;
-    }
-    return _addCartBt;
-}
-
-
-- (void)addCartBtAction {
-//    if (self.addCartBlock) {
-//        self.addCartBlock(self.model);
-//    }
-}
-
-@end

+ 36 - 0
Asteria/ASUI/CustomView/productView/ASProductBaseModel.h

@@ -0,0 +1,36 @@
+//
+//  ASProductBaseModel.h
+//  Asteria
+//
+//  Created by iOS on 2023/6/1.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASProductBaseModel : NSObject
+
+@property (nonatomic, copy) NSString *img;
+@property (nonatomic, copy) NSString *Id;
+@property (nonatomic, copy) NSString *title;
+
+/// 真是折扣
+@property (nonatomic, copy) NSString *percent;
+/// 展示折扣
+@property (nonatomic, copy) NSString *discount_app;
+/// 描述
+@property (nonatomic, copy) NSString *sketchy_app;
+
+@property (nonatomic, copy) NSString *oldPrice;
+@property (nonatomic, copy) NSString *nowPrice;
+
+
+@property (nonatomic, copy) NSString *rate_star;
+@property (nonatomic, copy) NSString *sale_num;
+
++ (ASProductBaseModel*)demoModel;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 42 - 0
Asteria/ASUI/CustomView/productView/ASProductBaseModel.m

@@ -0,0 +1,42 @@
+//
+//  ASProductBaseModel.m
+//  Asteria
+//
+//  Created by iOS on 2023/6/1.
+//
+
+#import "ASProductBaseModel.h"
+
+@implementation ASProductBaseModel
+
++ (ASProductBaseModel*)demoModel {
+    ASProductBaseModel *m = [[ASProductBaseModel alloc] init];
+    m.img = @"https://media.glamour.com/photos/5f3e9ad26ed7249924aba0c7/1:1/w_1234,h_1234,c_limit/IMG_2772.jpg";
+    m.title = @"HD Lace";
+    m.sketchy_app = @"Transparent Wigs Brazilian Front Wigs Straight Hair Body Wave…";
+    m.discount_app = @"10%";
+    if (arc4random()%2 == 1) {
+        m.oldPrice = @"";
+    } else {
+        m.oldPrice = @"234.43";
+    }
+    if (arc4random()%2 == 1) {
+        m.sketchy_app = @"";
+    }
+    m.Id = @(arc4random()%12130).stringValue;
+    m.nowPrice = @"223.45";
+    m.rate_star = [NSString stringWithFormat:@"%u",arc4random()%90 + 2];
+    m.sale_num = @"324123";
+    return m;
+}
+
+
++ (NSDictionary *)mj_replacedKeyFromPropertyName {
+    return @{
+        @"Id": @"id",
+        @"oldPrice": @"price.price",
+        @"nowPrice":@"price.final_price",
+    };
+}
+
+@end

+ 21 - 0
Asteria/ASUI/CustomView/productView/ASProductItemView.h

@@ -0,0 +1,21 @@
+//
+//  ASProductItemView.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/17.
+//
+
+#import <UIKit/UIKit.h>
+#import "ASProductBaseModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+static CGFloat productHWithOutImg = 102;
+@interface ASProductItemView : UIView
+
+@property (nonatomic,strong) UIButton *addCartBt;
+@property (nonatomic, strong)  ASProductBaseModel*model;
+@property (nonatomic, copy, nullable) void(^addCartBlock)(ASProductBaseModel* m);
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 187 - 0
Asteria/ASUI/CustomView/productView/ASProductItemView.m

@@ -0,0 +1,187 @@
+//
+//  ASProductItemView.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/17.
+//
+
+#import "ASProductItemView.h"
+
+@interface ASProductItemView ()
+
+@property (nonatomic, strong) UIImageView *imgV;
+@property (nonatomic, strong) UILabel *titleLb;
+
+@property (nonatomic, strong) UILabel *nowPriceLb;
+@property (nonatomic, strong) UILabel *oldPriceLb;
+
+@property (nonatomic,strong) UILabel *hotLb;
+
+
+@property (nonatomic,strong) UIStackView *lbStackV;
+
+@end
+
+@implementation ASProductItemView
+
+- (void)setModel:(ASProductBaseModel *)model {
+    _model = model;
+    [self.imgV sd_setImageWithURL:[NSURL URLWithString:model.img] placeholderImage:[UIImage imageNamed:@"product_defualtImg"]];
+    self.titleLb.text = model.title;
+    self.hotLb.text = [NSString stringWithFormat:@"SOLD %@", model.sale_num];
+    
+    self.nowPriceLb.text = model.nowPrice;
+    if ([model.oldPrice isEqualToString:@""] || [model.oldPrice isEqualToString:model.nowPrice]) {
+        [self.oldPriceLb setHidden:true];
+    } else {
+        [self.oldPriceLb setHidden:false];
+        NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@",model.oldPrice]];
+        [attStr addAttributes:@{
+            NSFontAttributeName:[UIFont fontWithName:Rob_Regular size:12],
+            NSStrikethroughStyleAttributeName:@(NSUnderlineStyleSingle),
+            NSStrikethroughColorAttributeName:Col_999,
+            NSForegroundColorAttributeName:Col_999,
+        } range:NSMakeRange(0, attStr.length)];
+        
+        self.oldPriceLb.attributedText = attStr;
+    }
+    
+}
+
+
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self configSubV];
+        self.clipsToBounds = true;
+    }
+    return  self;
+}
+
+- (void) configSubV {
+    self.layer.cornerRadius = 8;
+    self.layer.masksToBounds = true;
+    self.backgroundColor = _F5F5F5;
+    
+    [self addSubview:self.imgV];
+    [self addSubview:self.titleLb];
+    [self addSubview:self.hotLb];
+    [self addSubview: self.nowPriceLb];
+    [self addSubview: self.oldPriceLb];
+    [self addSubview:self.addCartBt];
+    
+    [self.imgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.equalTo(self);
+        make.height.equalTo(self.mas_width);
+        make.top.leading.trailing.equalTo(self);
+    }];
+    [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.imgV.mas_bottom).offset(10);
+        make.leading.equalTo(self).offset(10);
+        make.trailing.equalTo(self).offset(-10);
+    }];
+    [self.hotLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.leading.equalTo(self.titleLb);
+        make.top.equalTo(self.titleLb.mas_bottom).offset(7);
+        make.trailing.equalTo(self.titleLb);
+        make.height.equalTo(@14);
+    }];
+    [self.nowPriceLb setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
+    [self.nowPriceLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.leading.equalTo(self.titleLb);
+        make.top.greaterThanOrEqualTo(self.hotLb.mas_bottom).offset(11);
+        make.height.equalTo(@17);
+        make.bottom.equalTo(self.mas_bottom).offset(-9);
+    }];
+    
+    [self.oldPriceLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.equalTo(self.nowPriceLb);
+        make.leading.equalTo(self.nowPriceLb.mas_trailing).offset(4);
+        make.height.equalTo(@16);
+    }];
+    [self.addCartBt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@24);
+        make.trailing.equalTo(self).offset(-10);
+        make.bottom.equalTo(self).offset(-10);
+        make.leading.greaterThanOrEqualTo(self.oldPriceLb.mas_trailing).offset(8);
+    }];
+    
+    
+}
+
+- (UIImageView *)imgV {
+    if (!_imgV) {
+        UIImageView *v = [[UIImageView alloc] init];
+        v.contentMode = UIViewContentModeScaleToFill;
+        _imgV = v;
+    }
+    return  _imgV;
+}
+
+
+- (UILabel *)titleLb {
+    if (!_titleLb) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = [UIColor blackColor];
+        lb.textAlignment = NSTextAlignmentLeft;
+        lb.numberOfLines = 2;
+        _titleLb = lb;
+    }
+    return  _titleLb;
+}
+
+- (UILabel *)nowPriceLb {
+    if (!_nowPriceLb) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Bold size:14];
+        lb.textColor = [UIColor blackColor];
+        lb.textAlignment = NSTextAlignmentLeft;
+        _nowPriceLb = lb;
+    }
+    return  _nowPriceLb;
+}
+
+- (UILabel *)oldPriceLb {
+    if (!_oldPriceLb) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = Col_999;
+        lb.textAlignment = NSTextAlignmentLeft;
+        _oldPriceLb = lb;
+    }
+    return  _oldPriceLb;
+}
+
+
+
+- (UILabel *)hotLb {
+    if (!_hotLb) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = Col_666;
+        lb.textAlignment = NSTextAlignmentLeft;
+        _hotLb = lb;
+    }
+    return  _hotLb;
+}
+
+-(UIButton *)addCartBt {
+    if (!_addCartBt) {
+        UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
+        [bt setImage:[UIImage imageNamed:@"product_addCart"] forState:UIControlStateNormal];
+        [bt addTarget:self action:@selector(addCartBtAction) forControlEvents:UIControlEventTouchUpInside];
+        _addCartBt = bt;
+    }
+    return _addCartBt;
+}
+
+
+- (void)addCartBtAction {
+    if (self.addCartBlock) {
+        self.addCartBlock(self.model);
+    }
+}
+
+@end

+ 21 - 0
Asteria/ASUI/CustomView/someView/KWScrollOffsetView.h

@@ -0,0 +1,21 @@
+//
+//  KWScrollOffsetView.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/6.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWScrollOffsetView : UIView
+
+@property (nonatomic,assign) CGFloat offWidth;
+
+/// 0-1
+@property (nonatomic, assign) CGFloat offset;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 63 - 0
Asteria/ASUI/CustomView/someView/KWScrollOffsetView.m

@@ -0,0 +1,63 @@
+//
+//  KWScrollOffsetView.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/6.
+//
+
+#import "KWScrollOffsetView.h"
+
+@interface KWScrollOffsetView ()
+
+@property (nonatomic, strong) UIView *offsetV;
+
+
+@end
+
+@implementation KWScrollOffsetView
+
+- (void)setOffWidth:(CGFloat)offWidth {
+    _offWidth = offWidth;
+    if (self.offsetV.superview != nil) {
+        [self.offsetV mas_updateConstraints:^(MASConstraintMaker *make) {
+            make.width.equalTo([NSNumber numberWithFloat:_offWidth]);
+        }];
+    }
+}
+
+- (void)setOffset:(CGFloat)offset {
+    CGFloat newoff = offset < 0 ? 0 : offset;
+    newoff = offset > 1 ? 1 : offset;
+    _offset = newoff;
+    if (self.offsetV.superview != nil && self.offsetV.superview.superview != nil) {
+        CGFloat scrollMax = self.frame.size.width-self.offWidth;
+        CGFloat newOff = scrollMax*newoff;
+        [self.offsetV mas_updateConstraints:^(MASConstraintMaker *make) {
+            make.left.equalTo([NSNumber numberWithFloat:newOff]);
+        }];
+    }
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        
+        [self configSubV];
+    }
+    return self;
+}
+
+-(void)configSubV {
+    self.offsetV = [[UIView alloc] init];
+    self.offsetV.backgroundColor = [UIColor colorWithHexString:@"#707070"];
+    self.backgroundColor = [UIColor colorWithHexString:@"#C5C5C5"];
+    [self addSubview:self.offsetV];
+    [self.offsetV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.bottom.equalTo(self);
+        make.left.equalTo(@0);
+        make.width.equalTo([NSNumber numberWithFloat:54]);
+    }];
+    
+}
+
+@end

+ 21 - 0
Asteria/ASUI/CustomView/someView/KWTimeEndView.h

@@ -0,0 +1,21 @@
+//
+//  KWTimeEndView.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/6.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWTimeEndView : UIView
+
+@property (nonatomic, assign) NSTimeInterval time;
+
+- (void)startTimer;
+- (void)stopTimer;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 142 - 0
Asteria/ASUI/CustomView/someView/KWTimeEndView.m

@@ -0,0 +1,142 @@
+//
+//  KWTimeEndView.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/6.
+//
+
+
+#import "KWTimeEndView.h"
+
+@interface KWTimeEndView ()
+
+@property (nonatomic, strong) UILabel *hourLb;
+@property (nonatomic, strong) UILabel *hourSpaceLb;
+@property (nonatomic, strong) UILabel *minLb;
+@property (nonatomic, strong) UILabel *minSpaceLb;
+@property (nonatomic, strong) UILabel *secLb;
+
+@property (nonatomic, strong) NSTimer *timer;
+
+@end
+
+@implementation KWTimeEndView
+
+-(void)setTime:(NSTimeInterval)time {
+    _time = time;
+    [self showTime];
+    
+}
+- (void)stopTimer {
+    if (self.timer != nil) {
+        [self.timer invalidate];
+        self.timer = nil;
+    }
+}
+
+- (void)startTimer {
+    if (self.timer != nil) {
+        [self.timer invalidate];
+        self.timer = nil;
+    }
+    self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction) userInfo:nil repeats:true];
+}
+
+- (void)dealloc {
+    [self stopTimer];
+}
+
+
+-(void)timerAction {
+    self.time -= 1;
+    if (_time <= 0 && self.timer != nil) {
+        [self stopTimer];
+    }
+}
+
+-(void)showTime {
+    NSInteger hour = ((NSInteger)self.time)/(60*60);
+    NSInteger sec = ((NSInteger)self.time)%60;
+    NSInteger min = (((NSInteger)self.time) - hour*60*60 - sec)/60;
+    self.hourLb.text = [NSString stringWithFormat:@"%02ld",hour];
+    self.minLb.text = [NSString stringWithFormat:@"%02ld",min];
+    self.secLb.text = [NSString stringWithFormat:@"%02ld",sec];
+    
+}
+
+
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self configSubV];
+    }
+    return self;
+}
+
+-(void)configSubV {
+    self.hourLb = [KWTimeEndView createTimeLB];
+    self.minLb = [KWTimeEndView createTimeLB];
+    self.secLb = [KWTimeEndView createTimeLB];
+    self.hourSpaceLb = [KWTimeEndView createSpaceLB];
+    self.minSpaceLb = [KWTimeEndView createSpaceLB];
+    UIStackView *contentStackV = [KWTimeEndView createStackV];
+    [contentStackV addArrangedSubview:_hourLb];
+    [contentStackV addArrangedSubview:_hourSpaceLb];
+    [contentStackV addArrangedSubview:_minLb];
+    [contentStackV addArrangedSubview:_minSpaceLb];
+    [contentStackV addArrangedSubview:_secLb];
+    
+    [self addSubview:contentStackV];
+    [contentStackV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.center.equalTo(self);
+    }];
+    
+    [self.hourLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@21);
+    }];
+    [self.minLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@21);
+    }];
+    [self.secLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@21);
+    }];
+    [self.minSpaceLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@21);
+        make.width.equalTo(@3);
+    }];
+    [self.hourSpaceLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@21);
+        make.width.equalTo(@3);
+    }];
+}
+
++ (UILabel *)createTimeLB {
+    UILabel *lb = [[UILabel alloc] init];
+    lb.font = [UIFont fontWithName:Rob_Bold size:12];
+    lb.textColor = [UIColor whiteColor];
+    lb.textAlignment = NSTextAlignmentCenter;
+    lb.backgroundColor = [UIColor blackColor];
+    return  lb;
+}
+
++ (UILabel *)createSpaceLB {
+    UILabel *lb = [[UILabel alloc] init];
+    lb.font = [UIFont fontWithName:Rob_Bold size:12];
+    lb.textColor = [UIColor blackColor];
+    lb.text = @":";
+    lb.textAlignment = NSTextAlignmentCenter;
+    lb.backgroundColor = [UIColor clearColor];
+    return  lb;
+}
+
++ (UIStackView *)createStackV {
+    UIStackView *v = [[UIStackView alloc] init];
+    v.alignment = UIStackViewAlignmentFill;
+    v.distribution = UIStackViewDistributionFill;
+    v.spacing = 3;
+    v.axis = UILayoutConstraintAxisHorizontal;
+    return v;
+}
+
+@end

+ 18 - 0
Asteria/ASUI/Extensions/UITableView+ASBase.h

@@ -0,0 +1,18 @@
+//
+//  UITableView+ASBase.h
+//  Asteria
+//
+//  Created by iOS on 2023/6/5.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface UITableView (ASBase)
+
+- (void)baseSet;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 26 - 0
Asteria/ASUI/Extensions/UITableView+ASBase.m

@@ -0,0 +1,26 @@
+//
+//  UITableView+ASBase.m
+//  Asteria
+//
+//  Created by iOS on 2023/6/5.
+//
+
+#import "UITableView+ASBase.h"
+
+@implementation UITableView (ASBase)
+
+- (void)baseSet {
+    
+    self.separatorStyle = UITableViewCellSeparatorStyleNone;
+    
+    self.rowHeight = UITableViewAutomaticDimension;
+    self.estimatedRowHeight = 100;
+    self.separatorStyle = UITableViewCellSeparatorStyleNone;
+    if (@available(iOS 15.0, *)) {
+        self.sectionHeaderTopPadding = 0;
+    } else {
+        // Fallback on earlier versions
+    }
+}
+
+@end

+ 2 - 0
Asteria/ASUI/SimpleBase/ASBaseViewController.h

@@ -19,6 +19,8 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic, strong) UIView *leftV;
 @property (nonatomic, strong) UIView *rightV;
 
+- (void)ucHomeStyle:(btnClickBlock)tapSearch;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 94 - 0
Asteria/ASUI/SimpleBase/ASBaseViewController.m

@@ -9,6 +9,13 @@
 
 @interface ASBaseViewController ()
 
+@property (nonatomic, strong) UIImageView *leftImgV;
+@property (nonatomic, strong) UITextField *searchTf;
+@property (nonatomic, strong) UIButton *tfBt;
+@property (nonatomic, copy) btnClickBlock tapSearchBlock;
+
+@property (nonatomic, strong) UIView *nav_bottomLineV;
+
 @end
 
 @implementation ASBaseViewController
@@ -23,14 +30,53 @@
     
 }
 
+- (void)ucHomeStyle:(btnClickBlock)tapSearch {
+    self.statusBgV.backgroundColor = Col_FFF;
+    self.customNavBar.backgroundColor = Col_FFF;
+    self.tapSearchBlock = tapSearch;
+    [self.customNavBar addSubview:self.leftImgV];
+    [self.customNavBar addSubview:self.searchTf];
+    [self.customNavBar addSubview:self.tfBt];
+    
+    [self.leftImgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.leading.equalTo(self.customNavBar).offset(20);
+        make.width.equalTo(@140);
+        make.height.equalTo(@43.5);
+        make.centerY.equalTo(self.customNavBar);
+    }];
+    
+    [self.searchTf mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.leading.equalTo(self.leftImgV.mas_trailing).offset(20);
+        make.height.equalTo(@36);
+        make.centerY.equalTo(self.leftImgV);
+        make.trailing.equalTo(self.customNavBar).offset(-10);
+    }];
+    [self.tfBt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self.searchTf);
+    }];
+    
+}
+
 - (void)addBaseNav {
     
     [self.view addSubview:self.statusBgV];
     [self.view addSubview:self.customNavBar];
+    [self.customNavBar addSubview:self.nav_bottomLineV];
     self.statusBgV.frame = CGRectMake(0, 0, KScreenWidth, kStatusBarH);
     self.customNavBar.frame = CGRectMake(0, kStatusBarH, KScreenWidth, kCustomNavBarH);
+    self.nav_bottomLineV.frame = CGRectMake(0, kCustomNavBarH-1, KScreenWidth, 1);
+}
+
+// MARK: - actions
+- (void)searchBtAction {
+    if (self.tapSearchBlock) {
+        self.tapSearchBlock();
+    }
 }
 
+
+// MARK: - subVs
+
 - (UIView *)statusBgV {
     if (!_statusBgV) {
         UIView *v = [UIView baseV];
@@ -49,6 +95,54 @@
     return _customNavBar;
 }
 
+- (UIView *)nav_bottomLineV {
+    if (!_nav_bottomLineV) {
+        UIView *v = [UIView baseV];
+        v.backgroundColor = [UIColor.blackColor colorWithAlphaComponent:0.05];
+        _nav_bottomLineV = v;
+    }
+    return _nav_bottomLineV;
+}
+
+- (UIImageView *)leftImgV {
+    if (!_leftImgV) {
+        UIImageView *v = [UIImageView baseImgV];
+        v.image = [UIImage imageNamed:@"nav_icon"];
+        _leftImgV = v;
+    }
+    return _leftImgV;
+}
+
+- (UITextField *)searchTf {
+    if (!_searchTf) {
+        UITextField *tf = [[UITextField alloc] init];
+        tf.borderStyle = UITextBorderStyleNone;
+        UIView *leftV = [[UIView alloc] init];
+        leftV.backgroundColor = UIColor.clearColor;
+        UIImageView *imgV = [UIImageView baseImgV];
+        imgV.backgroundColor = UIColor.clearColor;
+        imgV.image = [UIImage imageNamed:@"nav_search"];
+        leftV.frame = CGRectMake(0, 0, 44, 36);
+        imgV.frame = CGRectMake(10, 6, 24, 24);
+        [leftV addSubview:imgV];
+        tf.leftView = leftV;
+        tf.leftViewMode = UITextFieldViewModeAlways;
+        tf.backgroundColor = _F5F5F5;
+        tf.layer.cornerRadius = 5;
+        tf.layer.masksToBounds = true;
+        _searchTf = tf;
+    }
+    return _searchTf;
+}
+
+- (UIButton *)tfBt {
+    if (!_tfBt) {
+        UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
+        [bt addTarget:self action:@selector(searchBtAction) forControlEvents:UIControlEventTouchUpInside];
+        _tfBt = bt;
+    }
+    return _tfBt;
+}
 
 
 @end

+ 6 - 0
Asteria/Assets.xcassets/launch/Contents.json

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

+ 22 - 0
Asteria/Assets.xcassets/launch/name_icon.imageset/Contents.json

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

BIN
Asteria/Assets.xcassets/launch/name_icon.imageset/组 2@2x.png


BIN
Asteria/Assets.xcassets/launch/name_icon.imageset/组 2@3x.png


+ 115 - 1
Asteria/Fuction/UserCenter/ASUserCenterViewController.m

@@ -7,8 +7,12 @@
 
 #import "ASUserCenterViewController.h"
 #import "ASUserCenterTableHeadView.h"
+#import "KWMineHomeOrderHeadView.h"
+#import "KWMineHomeOrderListCell.h"
+#import "KWMineMoreProductsCell.h"
 
-@interface ASUserCenterViewController ()
+
+@interface ASUserCenterViewController ()<UITableViewDelegate,UITableViewDataSource>
 
 @property (nonatomic,strong) UITableView *tableV;
 
@@ -21,6 +25,11 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     
+    __block typeof(self) wSelf = self;
+    [self ucHomeStyle:^{
+        // TODO: 跳转搜索模块
+    }];
+    
     [self.view addSubview:self.tableV];
     [self.tableV mas_makeConstraints:^(MASConstraintMaker *make) {
         make.top.equalTo(self.customNavBar.mas_bottom);
@@ -32,8 +41,105 @@
     
 }
 
+#pragma mark - UITableViewDelegate,UITableViewDataSource
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+
+}
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+    return 2;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    if (section == 0) {
+        return 3; //self.orderVm.orderList.count;
+    }
+    if (section == 1) {
+        return 1;
+    }
+    
+    return 0;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    
+    if (indexPath.section == 0) {
+        KWMineHomeOrderListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"KWMineHomeOrderListCell" forIndexPath:indexPath];
+//        if (self.orderVm.orderList.count <= indexPath.row) {
+//            return cell;
+//        }
+//        KWMineHomeOrderModel *m = self.orderVm.orderList[indexPath.row];
+//        [cell setData:m];
+//        @weakify(self);
+        [cell setViewOrderCall:^{
+//            if (![weak_self checkLogin:true]) {
+//                return;
+//            }
+            // 查看订单
+            NSLog(@"查看订单 view order");
+//            KWM_OrderViewC *vc = [[KWM_OrderViewC alloc]init];
+//            vc.order_id = m.orderId;
+//            [[Current_normalTool topViewController].navigationController pushViewController:vc animated:YES];
+        }];
+        return cell;
+    }
+    KWMineMoreProductsCell *cell = [tableView dequeueReusableCellWithIdentifier:@"KWMineMoreProductsCell" forIndexPath:indexPath];
+    cell.topSpace = 20;
+    KWMineMoreProductModel * model = [KWMineMoreProductModel demoData];
+    [cell setData: model];
+    @weakify(self);
+    [cell setProductClick:^(NSInteger i, ASProductBaseModel *m) {
+//        if (![weak_self checkLogin:true]) {
+//            return;
+//        }
+       // 点击推荐商品
+//        [weak_self goto_WKM_GoodsDetailsC:m.Id];
+    }];
+    return cell;
+}
+
+-(void)goto_WKM_GoodsDetailsC:(NSString *)entity_id {
+
+
+}
+
+-(void)pushToProductList:(NSString *)name typeid:(NSString *)typeId {
+    if (typeId == nil || [typeId isEqualToString:@""]) {
+        return;
+    }
+    if (name == nil || [name isEqualToString:@""]) {
+        name = @"Products";
+    }
+    
+
+}
+
 
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
+    if (section == 0) {
+        return 80;
+    }
+    return 0;
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
+    KWMineHomeOrderHeadView *v = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"KWMineHomeOrderHeadView"];
+    v.backgroundColor = UIColor.whiteColor;
+//    @weakify(self);
+    [v setToAllBlock:^{
+//        if (![weak_self checkLogin:true]) {
+//            return;
+//        }
+//        KWM_OrderListC *orderC = [[KWM_OrderListC alloc]init];
+//        [self.navigationController pushViewController:orderC animated:true];
 
+    }];
+    return v;
+}
+
+
+// MARK: - subViews
 - (ASUserCenterTableHeadView *)tableHeadV {
     if (!_tableHeadV) {
         ASUserCenterTableHeadView *v = [[ASUserCenterTableHeadView alloc] initWithFrame:CGRectZero];
@@ -47,9 +153,17 @@
     if (!_tableV) {
         UITableView *v = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
         v.tableHeaderView = self.tableHeadV;
+        [v registerClass:[KWMineHomeOrderListCell class] forCellReuseIdentifier:@"KWMineHomeOrderListCell"];
+        [v registerClass:[KWMineHomeOrderHeadView class] forHeaderFooterViewReuseIdentifier:@"KWMineHomeOrderHeadView"];
+        [v registerClass:[KWMineMoreProductsCell class] forCellReuseIdentifier:@"KWMineMoreProductsCell"];
+        v.delegate = self;
+        v.dataSource = self;
+        [v baseSet];
         _tableV = v;
     }
     return _tableV;
 }
 
+
+
 @end

+ 27 - 0
Asteria/Fuction/UserCenter/models/HomeFilterModel.h

@@ -0,0 +1,27 @@
+//
+//  HomeFilterModel.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/6.
+//
+
+#import <Foundation/Foundation.h>
+#import "ASProductBaseModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HomeFilterModel : NSObject
+
+@property (nonatomic, copy) NSString *title;
+@property (nonatomic, copy) NSString *imgUrl;
+@property (nonatomic, copy) NSString *webUrl;
+@property (nonatomic, copy) NSString *typeId;
+@property (nonatomic, assign) int selected;
+
+@property (nonatomic, strong) NSArray<ASProductBaseModel *> *list;
+
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 30 - 0
Asteria/Fuction/UserCenter/models/HomeFilterModel.m

@@ -0,0 +1,30 @@
+//
+//  HomeFilterModel.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/6.
+//
+
+#import "HomeFilterModel.h"
+
+@implementation HomeFilterModel
+
+//+ (NSDictionary *)mj_replacedKeyFromPropertyName {
+//    return @{
+//        @"typeId": @"typeid",
+//    };
+//}
+
++ (NSDictionary *)mj_objectClassInArray{
+    
+    return @{
+        
+        @"list" : [ASProductBaseModel class]
+        
+    };
+    
+    
+    
+}
+
+@end

+ 39 - 0
Asteria/Fuction/UserCenter/models/KWMineHomeOrderModel.h

@@ -0,0 +1,39 @@
+//
+//  KWMineHomeOrderModel.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/15.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class KWMineOrderProInfoModel;
+@interface KWMineHomeOrderModel : NSObject
+
+/// 状态
+@property (nonatomic, copy) NSString *status;
+/// 编号
+@property (nonatomic, copy) NSString *orderNumber;
+@property (nonatomic, copy) NSString *orderId;
+/// 时间
+@property (nonatomic, copy) NSString *orderData;
+/// 金额
+@property (nonatomic, copy) NSString *orderTotal;
+
+@property (nonatomic, strong) NSArray<KWMineOrderProInfoModel *> *info;
+
+@end
+
+@interface KWMineOrderProInfoModel : NSObject
+
+@property (nonatomic, copy) NSString *product_img;
+@property (nonatomic, copy) NSString *product_name;
+@property (nonatomic, copy) NSString *product_price;
+@property (nonatomic, copy) NSString *product_id;
+@property (nonatomic, copy) NSString *qty;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 26 - 0
Asteria/Fuction/UserCenter/models/KWMineHomeOrderModel.m

@@ -0,0 +1,26 @@
+//
+//  KWMineHomeOrderModel.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/15.
+//
+
+#import "KWMineHomeOrderModel.h"
+
+@implementation KWMineHomeOrderModel
+
++ (NSDictionary *)mj_objectClassInArray{
+    return @{
+        
+        @"info" : [KWMineOrderProInfoModel class],
+        
+    };
+}
+
+@end
+
+@implementation KWMineOrderProInfoModel
+
+
+
+@end

+ 23 - 0
Asteria/Fuction/UserCenter/models/KWMineMoreProductModel.h

@@ -0,0 +1,23 @@
+//
+//  KWMineMoreProductModel.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/15.
+//
+
+#import <Foundation/Foundation.h>
+#import "HomeFilterModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWMineMoreProductModel : NSObject
+
+@property (nonatomic, copy) NSString *title;
+
+@property (nonatomic, strong) NSArray<HomeFilterModel *> *keysArr;
+
++ (KWMineMoreProductModel *)demoData;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 35 - 0
Asteria/Fuction/UserCenter/models/KWMineMoreProductModel.m

@@ -0,0 +1,35 @@
+//
+//  KWMineMoreProductModel.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/15.
+//
+
+#import "KWMineMoreProductModel.h"
+
+@implementation KWMineMoreProductModel
+
++ (KWMineMoreProductModel *)demoData {
+    KWMineMoreProductModel *m = [[KWMineMoreProductModel alloc] init];
+    m.title = @"CUSTOMERS ALSO VIEWED";
+    NSMutableArray *tempArr = [NSMutableArray array];
+    for (NSString *title in @[@"TOP SALE",@"CLEARANCE SALE",@"NEW ARRIVALS",@"RECOMMEND BY BEHAVIOR",@"RECOMMEND BY TEXTURE"]) {
+        HomeFilterModel *temp = [[HomeFilterModel alloc]init];
+        temp.title = title;
+        temp.typeId = @(arc4random()%200).stringValue;
+        
+        int count = arc4random()%10 + 1;
+        NSMutableArray<ASProductBaseModel *> *arr = [NSMutableArray array];
+        for (int i = 0; i<count; i++) {
+            [arr addObject: [ASProductBaseModel demoModel] ];
+        }
+        temp.list = arr;
+        [tempArr addObject:temp];
+    }
+    
+    m.keysArr = tempArr;
+    
+    return m;
+}
+
+@end

Asteria/Fuction/UserCenter/ASSginView.h → Asteria/Fuction/UserCenter/views/ASSginView.h


+ 6 - 1
Asteria/Fuction/UserCenter/ASSginView.m

@@ -76,6 +76,7 @@
     }
     
     
+    
 }
 
 
@@ -84,13 +85,17 @@
 - (instancetype)initWithFrame:(CGRect)frame {
     self = [super initWithFrame:frame];
     if (self) {
+        self.bgV.frame = CGRectMake(10, 10, frame.size.width-20, frame.size.height-20);
+        self.colorBgV.frame = self.bgV.bounds;
         [self loadSubV];
     }
     return self;
 }
 
 - (void)loadSubV {
+    
     [self addSubview:self.bgV];
+    [self.bgV addSubview:self.colorBgV];
     [self.bgV addSubview:self.titleLb];
     [self.bgV addSubview:self.signBt];
     [self.bgV addSubview:self.baseLineV];
@@ -155,7 +160,7 @@
         UIView *v = [UIView baseV];
         v.layer.cornerRadius = 8;
         v.layer.masksToBounds = true;
-        v.backgroundColor = _F8F8F8;
+//        v.backgroundColor = _F8F8F8;
         _colorBgV = v;
     }
     return _colorBgV;

Asteria/Fuction/UserCenter/ASUserCenterEnterItemV.h → Asteria/Fuction/UserCenter/views/ASUserCenterEnterItemV.h


Asteria/Fuction/UserCenter/ASUserCenterEnterItemV.m → Asteria/Fuction/UserCenter/views/ASUserCenterEnterItemV.m


Asteria/Fuction/UserCenter/ASUserCenterTableHeadView.h → Asteria/Fuction/UserCenter/views/ASUserCenterTableHeadView.h


Asteria/Fuction/UserCenter/ASUserCenterTableHeadView.m → Asteria/Fuction/UserCenter/views/ASUserCenterTableHeadView.m


Asteria/Fuction/UserCenter/ASUserCenterTopView.h → Asteria/Fuction/UserCenter/views/ASUserCenterTopView.h


+ 1 - 2
Asteria/Fuction/UserCenter/ASUserCenterTopView.m

@@ -39,7 +39,6 @@
 - (void)setDemoData {
     [self.bgAvaterV setUserHeadV:@"" uName:@"new"];
     [self.bgAvaterV setBorderColor:[UIColor clearColor] width:0];
-    self.backgroundColor = _F0F0F0;
 }
 
 - (void)settingAction {
@@ -64,7 +63,7 @@
 - (void)loadSubV {
     self.backgroundColor = Col_FFF;
     [self addSubview:self.bgV];
-    self.bgV.backgroundColor = _F8F8F8;
+    self.bgV.backgroundColor = Col_FFF;
     self.bgV.frame = CGRectMake(10, 10, KScreenWidth-20, 206);
     UIVisualEffectView *blurV = [UIView getBlurV:self.bgV.bounds];
     blurV.alpha = 0.95;

+ 22 - 0
Asteria/Fuction/UserCenter/views/HomeFlashDealSubCollectCell.h

@@ -0,0 +1,22 @@
+//
+//  HomeFlashDealSubCollectCell.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/6.
+//
+
+#import <UIKit/UIKit.h>
+#import "ASProductItemView.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HomeFlashDealSubCollectCell : UICollectionViewCell
+
+@property (nonatomic, strong) ASProductItemView *contView;
+@property (nonatomic, strong) UIImageView *numImgV;
+
+@property (nonatomic, strong) ASProductBaseModel *model;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 55 - 0
Asteria/Fuction/UserCenter/views/HomeFlashDealSubCollectCell.m

@@ -0,0 +1,55 @@
+//
+//  HomeFlashDealSubCollectCell.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/6.
+//
+
+#import "HomeFlashDealSubCollectCell.h"
+
+@implementation HomeFlashDealSubCollectCell
+
+- (void)setModel:(ASProductBaseModel *)model {
+    _model = model;
+    self.contView.model = model;
+}
+
+- (void)layoutSubviews {
+    [self loadSubV];
+}
+
+- (void)loadSubV {
+    self.backgroundColor = UIColor.whiteColor;
+    [self addSubview:self.contView];
+    [self.contView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.left.right.equalTo(self);
+        make.width.equalTo(self.contView.mas_height).offset(-productHWithOutImg);
+        make.bottom.equalTo(@0);
+    }];
+    [self addSubview:self.numImgV];
+    [self.numImgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.left.equalTo(self.contentView);
+        make.width.height.equalTo(@60);
+    }];
+}
+
+- (ASProductItemView *)contView {
+    if (!_contView) {
+        ASProductItemView *v = [[ASProductItemView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth-20, KScreenWidth-20+productHWithOutImg)];
+        _contView = v;
+    }
+    return _contView;
+}
+
+- (UIImageView *)numImgV {
+    if (!_numImgV) {
+        UIImageView *v = [[UIImageView alloc] init];
+        v.contentMode = UIViewContentModeScaleAspectFit;
+        v.hidden = true;
+        _numImgV = v;
+    }
+    return _numImgV;
+}
+
+
+@end

+ 18 - 0
Asteria/Fuction/UserCenter/views/KWMineHomeOrderHeadView.h

@@ -0,0 +1,18 @@
+//
+//  KWMineHomeOrderHeadView.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/16.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWMineHomeOrderHeadView : UITableViewHeaderFooterView
+
+@property (nonatomic,copy) btnClickBlock toAllBlock;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 116 - 0
Asteria/Fuction/UserCenter/views/KWMineHomeOrderHeadView.m

@@ -0,0 +1,116 @@
+//
+//  KWMineHomeOrderHeadView.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/16.
+//
+
+#import "KWMineHomeOrderHeadView.h"
+//#import ""
+
+@interface KWMineHomeOrderHeadView ()
+
+//@property (nonatomic, strong) UIView *bgV;
+@property (nonatomic, strong) UILabel *titleLB;
+@property (nonatomic, strong) UILabel *rightLB;
+@property (nonatomic, strong) UIImageView *moreV;
+@property (nonatomic, strong) UIButton *moreBt;
+
+@end
+
+@implementation KWMineHomeOrderHeadView
+
+- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier {
+    self = [super initWithReuseIdentifier:reuseIdentifier];
+    if (self) {
+        [self configSubV];
+    }
+    return self;
+}
+
+
+- (void)configSubV {
+    self.contentView.backgroundColor = UIColor.whiteColor;
+    [self.contentView addSubview:self.titleLB];
+    [self.contentView addSubview:self.rightLB];
+    [self.contentView addSubview:self.moreV];
+    [self.contentView addSubview:self.moreBt];
+    
+   
+    [self.titleLB mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.contentView).offset(20);
+        make.top.equalTo(self.contentView).offset(20);
+        make.bottom.equalTo(self.contentView).offset(-20);
+        make.height.equalTo(@20);
+    }];
+    [self.rightLB mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.titleLB.mas_right).offset(10);
+        make.centerY.equalTo(self.titleLB);
+        make.width.equalTo(@90);
+        make.height.equalTo(@20);
+    }];
+    [self.moreV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.equalTo(self.contentView).offset(-25);
+        make.left.equalTo(self.rightLB.mas_right).offset(5);
+        make.centerY.equalTo(self.titleLB);
+        make.width.height.equalTo(@13);
+    }];
+    [self.moreBt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@40);
+        make.centerY.equalTo(self.rightLB);
+        make.left.equalTo(self.rightLB);
+        make.right.equalTo(self.moreV);
+    }];
+}
+
+- (UIImageView *)moreV {
+    if (!_moreV) {
+        UIImageView *imgV = [[UIImageView alloc] init];
+        imgV.image = [UIImage imageNamed:@"uc_more"];
+        imgV.contentMode = UIViewContentModeScaleAspectFit;
+        _moreV = imgV;
+    }
+    return _moreV;
+}
+
+- (UILabel *)titleLB {
+    if (!_titleLB) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Bold size:16];
+        lb.textColor = [UIColor blackColor];
+        lb.backgroundColor = [UIColor clearColor];
+        lb.text = @"ORDERS";
+        _titleLB = lb;
+    }
+    return _titleLB;
+}
+
+- (UILabel *)rightLB {
+    if (!_rightLB) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:14];
+        lb.textColor = _0B0B0B;
+        lb.textAlignment = NSTextAlignmentRight;
+        lb.backgroundColor = [UIColor clearColor];
+        lb.text = @"All Orders";
+        _rightLB = lb;
+    }
+    return _rightLB;
+}
+
+- (UIButton *)moreBt {
+    if (!_moreBt) {
+        _moreBt = [UIButton buttonWithType:UIButtonTypeCustom];
+        [_moreBt addTarget:self action:@selector(moreBtAction) forControlEvents:UIControlEventTouchUpInside];
+    }
+    return  _moreBt;
+}
+
+- (void)moreBtAction {
+    if (self.toAllBlock) {
+        self.toAllBlock();
+    }
+}
+
+
+@end

+ 22 - 0
Asteria/Fuction/UserCenter/views/KWMineHomeOrderListCell.h

@@ -0,0 +1,22 @@
+//
+//  KWMineHomeOrderListCell.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/15.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "KWMineHomeOrderModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWMineHomeOrderListCell : UITableViewCell
+
+@property (nonatomic, copy) btnClickBlock viewOrderCall;
+
+- (void)setData:(KWMineHomeOrderModel *)model;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 197 - 0
Asteria/Fuction/UserCenter/views/KWMineHomeOrderListCell.m

@@ -0,0 +1,197 @@
+//
+//  KWMineHomeOrderListCell.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/15.
+//
+
+#import "KWMineHomeOrderListCell.h"
+#import "KWMineHomeOrderSubView.h"
+
+
+@interface KWMineHomeOrderListCell ()
+
+@property (nonatomic, strong) UIStackView *prodStackV;
+
+@property (nonatomic, strong) UIView *bgV;
+
+@property (nonatomic, strong) UILabel *orderNoNameLB;
+@property (nonatomic, strong) UILabel *orderNoLB;
+@property (nonatomic, strong) UILabel *timeLB;
+@property (nonatomic, strong) UIButton *viewBt;
+
+@property (nonatomic, strong) KWMineHomeOrderModel *m;
+
+@end
+
+@implementation KWMineHomeOrderListCell
+
+- (void)setData:(KWMineHomeOrderModel *)model {
+    self.m = model;
+    self.timeLB.text = model.orderData;
+    self.orderNoLB.text = model.orderNumber;
+    for (UIView*item in self.prodStackV.arrangedSubviews) {
+        if (item.superview) {
+            [item removeFromSuperview];
+        }
+    }
+    for (KWMineOrderProInfoModel *info in model.info) {
+        KWMineHomeOrderSubView *subV = [[KWMineHomeOrderSubView alloc] init];
+        [subV setData:info];
+        [self.prodStackV addArrangedSubview:subV];
+    }
+}
+
+- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        [self configSubV];
+    }
+    return self;
+}
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+- (void)configSubV {
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+    
+    self.contentView.backgroundColor = Col_FFF;
+    self.bgV = [UIView new];
+    self.bgV.layer.cornerRadius = 4;
+    self.bgV.layer.masksToBounds = true;
+    self.bgV.backgroundColor = [UIColor colorWithHexString:@"#F8F8F8"];
+    
+    [self.contentView addSubview:self.bgV];
+    [self.bgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.contentView).offset(10);
+        make.right.equalTo(self.contentView).offset(-10);
+        make.top.equalTo(self.contentView).offset(0);
+        make.bottom.equalTo(self.contentView).offset(-10);
+    }];
+    
+    self.prodStackV = [[UIStackView alloc] init];
+    self.prodStackV.axis = UILayoutConstraintAxisVertical;
+    self.prodStackV.spacing = 20;
+    self.prodStackV.distribution = UIStackViewDistributionFillEqually;
+    self.prodStackV.alignment = UIStackViewAlignmentFill;
+    
+    [self.bgV addSubview:self.prodStackV];
+    
+    [self.prodStackV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.bgV).offset(20);
+        make.left.equalTo(self.bgV).offset(10);
+        make.right.equalTo(self.bgV).offset(-15);
+    }];
+    
+    [self.bgV addSubview:self.orderNoNameLB];
+    [self.bgV addSubview:self.orderNoLB];
+    [self.bgV addSubview:self.timeLB];
+    [self.bgV addSubview:self.viewBt];
+    
+    
+    
+    
+    [self.orderNoNameLB mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.greaterThanOrEqualTo(self.prodStackV.mas_left);
+        make.centerY.equalTo(self.timeLB);
+        make.height.equalTo(@16);
+    }];
+    [self.orderNoLB setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
+    [self.orderNoLB mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.centerY.equalTo(self.timeLB);
+        make.left.equalTo(self.orderNoNameLB.mas_right);
+        make.height.equalTo(@16);
+    }];
+    
+    [self.timeLB setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
+    [self.timeLB mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.equalTo(self.prodStackV);
+        make.top.equalTo(self.prodStackV.mas_bottom).offset(10);
+        make.height.equalTo(@14);
+        make.left.equalTo(self.orderNoLB.mas_right).offset(20);
+    }];
+    
+    [self.viewBt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.timeLB.mas_bottom).offset(10);
+        make.right.equalTo(self.prodStackV);
+        make.bottom.equalTo(self.bgV.mas_bottom).offset(-20);
+        make.height.equalTo(@17);
+        make.width.equalTo(@75);
+    }];
+    
+    
+}
+
+
+
+- (UILabel *)orderNoNameLB {
+    if (!_orderNoNameLB) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = [UIColor colorWithHexString:@"#666666"];
+        lb.backgroundColor = [UIColor clearColor];
+        lb.textAlignment = NSTextAlignmentRight;
+        lb.text = @"Order Number:";
+        _orderNoNameLB = lb;
+    }
+    return _orderNoNameLB;
+}
+
+- (UILabel *)orderNoLB {
+    if (!_orderNoLB) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = [UIColor colorWithHexString:@"#666666"];
+        lb.backgroundColor = [UIColor clearColor];
+        _orderNoLB = lb;
+    }
+    return _orderNoLB;
+}
+- (UILabel *)timeLB {
+    if (!_timeLB) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = [UIColor colorWithHexString:@"#666666"];
+        lb.backgroundColor = [UIColor clearColor];
+        lb.textAlignment = NSTextAlignmentLeft;
+        _timeLB = lb;
+    }
+    return _timeLB;
+}
+
+- (UIButton *)viewBt {
+    if (!_viewBt) {
+        UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
+        NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"View Order"];
+        [attStr addAttributes:@{
+            NSFontAttributeName:[UIFont fontWithName:Rob_Regular size:14],
+            NSUnderlineStyleAttributeName:@(NSUnderlineStyleSingle),
+            NSUnderlineColorAttributeName:[UIColor colorWithHexString:@"#000000"],
+            NSForegroundColorAttributeName:[UIColor colorWithHexString:@"#000000"],
+        } range:NSMakeRange(0, attStr.length)];
+        
+        [bt setAttributedTitle:attStr forState:UIControlStateNormal];
+        [bt addTarget:self action:@selector(viewBtAction) forControlEvents:UIControlEventTouchUpInside];
+        _viewBt = bt;
+    }
+    return _viewBt;
+}
+
+-(void)viewBtAction {
+    
+    if (self.viewOrderCall) {
+        self.viewOrderCall();
+    }
+    
+}
+
+@end

+ 19 - 0
Asteria/Fuction/UserCenter/views/KWMineHomeOrderSubView.h

@@ -0,0 +1,19 @@
+//
+//  KWMineHomeOrderSubView.h
+//  westkissMob
+//
+//  Created by iOS on 2022/10/12.
+//
+
+#import <UIKit/UIKit.h>
+#import "KWMineHomeOrderModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWMineHomeOrderSubView : UIView
+
+- (void)setData:(KWMineOrderProInfoModel *)model;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 139 - 0
Asteria/Fuction/UserCenter/views/KWMineHomeOrderSubView.m

@@ -0,0 +1,139 @@
+//
+//  KWMineHomeOrderSubView.m
+//  westkissMob
+//
+//  Created by iOS on 2022/10/12.
+//
+
+#import "KWMineHomeOrderSubView.h"
+
+
+@interface KWMineHomeOrderSubView ()
+
+@property (nonatomic, strong) UILabel *titleLB;
+@property (nonatomic, strong) UILabel *priceLb;
+@property (nonatomic, strong) UILabel *xLB;
+@property (nonatomic, strong) UILabel *numLB;
+@property (nonatomic, strong) UIImageView *imgV;
+
+@property (nonatomic, strong) KWMineOrderProInfoModel *m;
+
+@end
+
+@implementation KWMineHomeOrderSubView
+
+- (void)setData:(KWMineOrderProInfoModel *)model {
+    self.m = model;
+    self.titleLB.text = model.product_name;
+    self.priceLb.text = [NSString stringWithFormat:@"%@",model.product_price];
+    self.numLB.text = model.qty;
+    [self.imgV sd_setImageWithURL:[NSURL URLWithString:model.product_img.urlEncode]];
+}
+
+-(instancetype)init {
+    self = [super init];
+    if (self) {
+        [self loadSubV];
+    }
+    return self;
+}
+
+- (void)loadSubV {
+    self.backgroundColor = UIColor.clearColor;
+    [self addSubview:self.imgV];
+    [self addSubview:self.titleLB];
+    [self addSubview:self.priceLb];
+    [self addSubview:self.xLB];
+    [self addSubview:self.numLB];
+    
+    
+    [_imgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self).offset(0);
+        make.left.equalTo(self).offset(0);
+        make.bottom.equalTo(self).offset(0);
+        make.width.height.equalTo(@86);
+    }];
+    
+    [_titleLB mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.imgV);
+        make.left.equalTo(self.imgV.mas_right).offset(10);
+        make.right.equalTo(self).offset(0);
+        make.height.equalTo(@35);
+    }];
+    
+    [self.priceLb setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
+    [self.priceLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.equalTo(self.imgV);
+        make.left.equalTo(self.titleLB);
+        make.height.equalTo(@17);
+    }];
+    [self.xLB mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.equalTo(@17);
+        make.height.equalTo(@17);
+        make.left.equalTo(self.priceLb.mas_right);
+        make.centerY.equalTo(self.priceLb);
+    }];
+    [self.numLB mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.equalTo(@25);
+        make.height.equalTo(@17);
+        make.left.equalTo(self.xLB.mas_right);
+        make.centerY.equalTo(self.priceLb);
+    }];
+}
+
+
+- (UIImageView *)imgV {
+    if (!_imgV) {
+        UIImageView *imgV = [[UIImageView alloc] init];
+        _imgV = imgV;
+    }
+    return _imgV;
+}
+
+- (UILabel *)titleLB {
+    if (!_titleLB) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = [UIColor blackColor];
+        lb.backgroundColor = [UIColor clearColor];
+        lb.numberOfLines = 2;
+        _titleLB = lb;
+    }
+    return _titleLB;
+}
+- (UILabel *)priceLb {
+    if (!_priceLb) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Bold size:14];
+        lb.textColor = _0B0B0B;
+        lb.backgroundColor = [UIColor clearColor];
+        _priceLb = lb;
+    }
+    return _priceLb;
+}
+
+- (UILabel *)xLB {
+    if (!_xLB) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:14];
+        lb.textColor = _0B0B0B;
+        lb.backgroundColor = [UIColor clearColor];
+        lb.textAlignment = NSTextAlignmentCenter;
+        lb.text = @"x";
+        _xLB = lb;
+    }
+    return _xLB;
+}
+- (UILabel *)numLB {
+    if (!_numLB) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:14];
+        lb.textColor = _0B0B0B;
+        lb.backgroundColor = [UIColor clearColor];
+        _numLB = lb;
+    }
+    return _numLB;
+}
+
+
+@end

+ 19 - 0
Asteria/Fuction/UserCenter/views/KWMineMoreProductTypeCell.h

@@ -0,0 +1,19 @@
+//
+//  KWMineMoreProductTypeCell.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/16.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWMineMoreProductTypeCell : UICollectionViewCell
+
+
+- (void)setTitle:(NSString *)title isSelect:(BOOL)select;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 56 - 0
Asteria/Fuction/UserCenter/views/KWMineMoreProductTypeCell.m

@@ -0,0 +1,56 @@
+//
+//  KWMineMoreProductTypeCell.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/16.
+//
+
+#import "KWMineMoreProductTypeCell.h"
+
+@interface KWMineMoreProductTypeCell ()
+
+@property (nonatomic, strong) UILabel *titleLb;
+
+@end
+
+@implementation KWMineMoreProductTypeCell
+
+- (void)setTitle:(NSString *)title isSelect:(BOOL)select {
+    self.titleLb.text = title;
+    self.titleLb.textColor = select ? UIColor.whiteColor :  UIColor.blackColor;
+//    self.titleLb.font = select ? [UIFont fontWithName:Rob_Bold size:12] : [UIFont fontWithName:Rob_Regular size:12];
+    self.titleLb.backgroundColor = select ? _113632 : _F8F8F8;
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self configSubV];
+    }
+    return self;
+}
+
+- (void)configSubV {
+    self.backgroundColor = _F8F8F8;
+    self.contentView.backgroundColor = _F8F8F8;
+    [self addSubview:self.titleLb];
+    [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self);
+    }];
+}
+
+- (UILabel *)titleLb {
+    if (!_titleLb) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.textAlignment = NSTextAlignmentCenter;
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = [UIColor blackColor];
+        lb.layer.cornerRadius = 4;
+        lb.layer.masksToBounds = true;
+        _titleLb = lb;
+        
+    }
+    return _titleLb;
+}
+
+@end

+ 34 - 0
Asteria/Fuction/UserCenter/views/KWMineMoreProductsCell.h

@@ -0,0 +1,34 @@
+//
+//  KWMineMoreProductsCell.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/15.
+//
+
+#import <UIKit/UIKit.h>
+#import "KWScrollOffsetView.h"
+#import "KWMineMoreProductModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWMineMoreProductsCell : UITableViewCell
+
+@property (nonatomic, assign) CGFloat topSpace;
+
+@property (nonatomic, strong) UICollectionView *collectV;
+@property (nonatomic, strong) UICollectionView *typeCollectV;
+
+@property (nonatomic, strong) UILabel *titleLb;
+
+@property (nonatomic, strong) KWScrollOffsetView *offsetV;
+
+@property (nonatomic, strong) KWMineMoreProductModel *model;
+
+@property (nonatomic, copy) void(^productClick)(NSInteger i, ASProductBaseModel *m);
+
+//
+-(void)setData:(KWMineMoreProductModel *)model;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 317 - 0
Asteria/Fuction/UserCenter/views/KWMineMoreProductsCell.m

@@ -0,0 +1,317 @@
+//
+//  KWMineMoreProductsCell.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/15.
+//
+
+#import "KWMineMoreProductsCell.h"
+#import "KWMineMoreProductTypeCell.h"
+#import "HomeFlashDealSubCollectCell.h"
+
+@interface KWMineMoreProductsCell ()<UICollectionViewDelegate,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource>
+
+@property (nonatomic, strong) HomeFilterModel *currentKey;
+@property (nonatomic, strong) NSArray<NSNumber *> *keyWidthArr;
+
+@end
+
+@implementation KWMineMoreProductsCell
+
+- (void)setTopSpace:(CGFloat)topSpace {
+    _topSpace = topSpace;
+    [self.titleLb mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.contentView).offset(topSpace);
+        make.centerX.equalTo(self.contentView);
+        make.left.greaterThanOrEqualTo(self.contentView).offset(20);
+        make.height.equalTo(@34);
+        make.width.greaterThanOrEqualTo(@80);
+    }];
+}
+
+-(void)setData:(KWMineMoreProductModel *)model {
+    self.model = model;
+    for (HomeFilterModel *type in self.model.keysArr) {
+        if (type.selected) {
+            self.currentKey = type;
+        }
+    }
+    if (!self.currentKey) {
+        self.currentKey = self.model.keysArr.firstObject;
+    }
+    self.titleLb.text = self.model.title;
+    [self calulateItemWidth];
+    [self.typeCollectV reloadData];
+    [self.collectV reloadData];
+}
+
+-(void)calulateItemWidth {
+    NSMutableArray<NSNumber *> *tempArr = [NSMutableArray array];
+    NSDictionary *attribute = @{NSFontAttributeName: self.titleLb.font};
+    for (HomeFilterModel *typeM in self.model.keysArr) {
+        NSString *key = typeM.title;
+        CGFloat wid = [key boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, 34) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size.width + 10;
+//        CGFloat wid = [key widthForFont:[UIFont fontWithName:Rob_Regular size:12]]  + 10;
+        [tempArr addObject:[NSNumber numberWithFloat:wid]];
+    }
+    int numLins = tempArr.count > 0 ? 1 : 0;
+    CGFloat totalWid = 0;
+    CGFloat maxWid = KScreenWidth - 20;
+    int lineBeginI = 0;
+    for (int i = 0; i < tempArr.count; i++) {
+        CGFloat tempW = tempArr[i].floatValue;
+        
+        if ((tempW + totalWid + (i-lineBeginI)*10) > maxWid) {
+            if (i>lineBeginI) {
+                int num = i-lineBeginI;
+                CGFloat elseSpace = (maxWid - totalWid - (num-1)*10)/num;
+                for (int j = lineBeginI; j<i; j++) {
+                    CGFloat tempSubW = tempArr[j].floatValue;
+                    tempArr[j] = [NSNumber numberWithFloat: tempSubW + elseSpace];
+                }
+            }
+            if (i == tempArr.count - 1) {
+                tempArr[i] = [NSNumber numberWithFloat: maxWid];
+                break;
+            }
+            totalWid = tempW;
+            lineBeginI = i;
+            numLins += 1;
+        } else {
+            totalWid += tempW;
+            if (i == tempArr.count - 1) {
+                if (tempArr.count>lineBeginI) {
+                    int num = (int)(tempArr.count) - lineBeginI;
+                    CGFloat elseSpace = (maxWid - totalWid- (num-1)*10)/num;
+                    for (int j = lineBeginI; j<tempArr.count; j++) {
+                        CGFloat tempSubW = tempArr[j].floatValue;
+                        tempArr[j] = [NSNumber numberWithFloat: tempSubW + elseSpace];
+                    }
+                }
+            }
+        }
+    }
+    self.keyWidthArr = tempArr;
+    @weakify(self);
+    [self.typeCollectV mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(weak_self.titleLb.mas_bottom).offset(20);
+        make.height.equalTo([NSNumber numberWithInteger:20 + numLins * 40 + (numLins-1)*10]);
+        make.left.right.equalTo(weak_self.contentView);
+    }];
+}
+
+- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        [self loadSubV];
+    }
+    return self;
+}
+
+- (void)loadSubV {
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+    self.contentView.backgroundColor = [UIColor colorWithHexString:@"#FFFFFF"];
+    self.backgroundColor = [UIColor colorWithHexString:@"#FFFFFF"];
+    
+    
+    [self.contentView addSubview:self.titleLb];
+    [self.contentView addSubview:self.typeCollectV];
+    [self.contentView addSubview:self.collectV];
+    [self.contentView addSubview:self.offsetV];
+    
+        
+    [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.contentView).offset(20);
+        make.centerX.equalTo(self.contentView);
+        make.left.greaterThanOrEqualTo(self.contentView).offset(20);
+        make.height.equalTo(@34);
+        make.width.greaterThanOrEqualTo(@80);
+    }];
+    
+    [self.typeCollectV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.titleLb.mas_bottom).offset(20);
+        make.height.equalTo(@110);
+        make.left.right.equalTo(self.contentView);
+    }];
+    
+    CGFloat collH = (KScreenWidth-30)/2 + productHWithOutImg;
+    [self.collectV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.contentView).offset(10);
+        make.right.equalTo(self.contentView).offset(-10);
+        make.height.equalTo([NSNumber numberWithFloat:collH]);
+        make.top.equalTo(self.typeCollectV.mas_bottom).offset(10);
+    }];
+    [self.offsetV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.centerX.equalTo(self.contentView);
+        make.height.equalTo(@2);
+        make.width.equalTo(@137);
+        make.top.equalTo(self.collectV.mas_bottom).offset(20);
+        make.bottom.equalTo(self.contentView).offset(-40);
+    }];
+    
+   
+}
+
+
+
+- (UILabel *)titleLb {
+    if (!_titleLb) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.textColor = [UIColor blackColor];
+        lb.font = [UIFont fontWithName:Rob_Bold size:24];
+        lb.textAlignment = NSTextAlignmentCenter;
+        _titleLb = lb;
+    }
+    return _titleLb;
+}
+
+
+- (KWScrollOffsetView *)offsetV {
+    if (!_offsetV) {
+        KWScrollOffsetView *v = [[KWScrollOffsetView alloc] initWithFrame:CGRectMake(0, 0, 137, 2)];
+        v.clipsToBounds = true;
+        v.offWidth = 54;
+        v.offset = 0;
+        _offsetV = v;
+    }
+    return _offsetV;
+}
+
+-(UICollectionView *)collectV {
+    if (!_collectV) {
+        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
+        layout.sectionInset = UIEdgeInsetsMake(10, 0, 10, 0);
+        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
+        CGFloat collH = (KScreenWidth-30)/2 + 126;
+        layout.itemSize = CGSizeMake((KScreenWidth - 30)/2, collH);
+        UICollectionView *collV = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, collH) collectionViewLayout:layout];
+        collV.backgroundColor = [UIColor whiteColor];
+        collV.alwaysBounceHorizontal = true;
+        collV.delegate = self;
+        collV.dataSource = self;
+        collV.showsHorizontalScrollIndicator = false;
+        [collV registerClass:[HomeFlashDealSubCollectCell class] forCellWithReuseIdentifier:@"HomeFlashDealSubCollectCell"];
+        _collectV = collV;
+    }
+    return  _collectV;
+}
+
+-(UICollectionView *)typeCollectV {
+    if (!_typeCollectV) {
+        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
+        layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
+        layout.scrollDirection = UICollectionViewScrollDirectionVertical;
+        layout.itemSize = CGSizeMake(100, 40);
+        UICollectionView *collV = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 110) collectionViewLayout:layout];
+        collV.scrollEnabled = false;
+        collV.backgroundColor = [UIColor whiteColor];
+        collV.alwaysBounceVertical = true;
+        collV.delegate = self;
+        collV.dataSource = self;
+        collV.showsVerticalScrollIndicator = false;
+        collV.showsHorizontalScrollIndicator = false;
+        [collV registerClass:[KWMineMoreProductTypeCell class] forCellWithReuseIdentifier:@"KWMineMoreProductTypeCell"];
+        _typeCollectV = collV;
+    }
+    return  _typeCollectV;
+}
+
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+// MARK: - UICollectionViewDelegate
+
+- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
+    if (self.offsetV.isHidden) {
+        return;
+    }
+    CGFloat offset = scrollView.contentOffset.x;
+    CGFloat itemWidth = (KScreenWidth-30)/2;
+    NSArray<ASProductBaseModel*> *arr = self.currentKey.list;
+    if (arr.count > 0) {
+        CGFloat maxOffset = (arr.count * (itemWidth + 10) - 10 ) - (KScreenWidth-20);
+        self.offsetV.offset = offset/maxOffset;
+    }
+}
+
+- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
+    if (collectionView == self.typeCollectV) {
+        for (int i = 0; i < self.model.keysArr.count; i++) {
+            HomeFilterModel *item = self.model.keysArr[i];
+            item.selected = i == indexPath.row;
+        }
+        HomeFilterModel *key = self.model.keysArr[indexPath.row];
+        self.currentKey = key;
+        [self.typeCollectV reloadData];
+        [self.collectV reloadData];
+        return;
+    }
+    
+    if (self.productClick) {
+        NSArray<ASProductBaseModel*> *arr = self.currentKey.list;
+        ASProductBaseModel *m = arr[indexPath.row];
+        self.productClick(indexPath.row, m);
+    }
+    
+}
+
+// MARK: - UICollectionViewDataSource
+- (nonnull __kindof UICollectionViewCell *)collectionView:(nonnull UICollectionView *)collectionView cellForItemAtIndexPath:(nonnull NSIndexPath *)indexPath {
+    if (collectionView == self.typeCollectV) {
+        KWMineMoreProductTypeCell *ce = [collectionView dequeueReusableCellWithReuseIdentifier:@"KWMineMoreProductTypeCell" forIndexPath:indexPath];
+        HomeFilterModel *ti = self.model.keysArr[indexPath.row];
+        [ce setTitle:ti.title isSelect:ti.selected];
+        return ce;
+    }
+    HomeFlashDealSubCollectCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"HomeFlashDealSubCollectCell" forIndexPath:indexPath];
+    NSArray<ASProductBaseModel*> *arr = self.currentKey.list;
+    ASProductBaseModel *m = arr[indexPath.row];
+    cell.model = m;
+    return cell;
+}
+
+- (NSInteger)collectionView:(nonnull UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
+    if (collectionView == self.typeCollectV) {
+        return self.model.keysArr.count;
+    }
+    NSArray<ASProductBaseModel*> *arr = self.currentKey.list;
+    return arr.count;
+}
+
+- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
+    if (collectionView == self.typeCollectV) {
+        CGFloat wid = self.keyWidthArr[indexPath.row].floatValue - 0.5;
+        return CGSizeMake(wid, 40);
+    }
+    CGFloat marg = 10;
+    CGFloat w = (KScreenWidth-3*marg)/2;
+    CGFloat collH = (KScreenWidth-30)/2 + productHWithOutImg;
+    return CGSizeMake(w, collH);
+}
+
+-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {
+    return 10;
+}
+
+-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
+    return 10;
+}
+
+- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
+    if (collectionView == self.typeCollectV) {
+        return UIEdgeInsetsMake(10, 10, 10, 10);
+    }
+    return UIEdgeInsetsMake(20, 0, 10, 0);
+}
+
+
+@end

+ 1 - 1
Asteria/PreFixHeader.h

@@ -9,7 +9,7 @@
 #define PreFixHeader_h
 
 
-
+#import "UITableView+ASBase.h"
 #import "UIView+PublicInit.h"
 #import "UIColor+AS.h"
 #import "ColorDefine.h"

+ 1 - 1
Asteria/Product/Tool/Fuction_Tool.m

@@ -18,7 +18,7 @@
     XXX_BaseWebC *vc = [[XXX_BaseWebC alloc] init];
     [vc xxx_dsWebLoadUrl:url];
     vc.webTitle = title;
-    [vc tool_dsWebViewAddJS];
+//    [vc tool_dsWebViewAddJS];
     [[Current_normalTool topViewController].navigationController pushViewController:vc animated:true];
 }
 

+ 2 - 0
Asteria/Tabber/AS_TabBarViewController.m

@@ -20,6 +20,8 @@
 - (void)didInitialize {
     [super didInitialize];
     
+    self.tabBar.backgroundColor = UIColor.whiteColor;
+    
     AViewController *vc1 = [AViewController new];
     AViewController *vc2 = [[AViewController alloc]init];
     UIViewController *vc3 = [[CTMediator sharedInstance] getUserCenterVc:@{}];

+ 16 - 34
Pods/Pods.xcodeproj/project.pbxproj

@@ -16085,7 +16085,6 @@
 		619946A4BE3D8C4C21E744BA36FC47EA /* string_apple.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = string_apple.cc; path = Firestore/core/src/util/string_apple.cc; sourceTree = "<group>"; };
 		61A1D22F22F9242D633DFDC01353F92F /* status.upbdefs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = status.upbdefs.h; path = "src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h"; sourceTree = "<group>"; };
 		61B2F4F6FC8428A68DCDC3CDC8D7424E /* internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = internal.h; path = src/crypto/bytestring/internal.h; sourceTree = "<group>"; };
-		61BE8E5331E32BD08CFDA3D266F441BF /* FILE_LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = FILE_LICENSE; sourceTree = "<group>"; };
 		61CAD69D1741D80EC16A43C527873A7E /* GoogleSignIn.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GoogleSignIn.h; path = GoogleSignIn/Sources/Public/GoogleSignIn/GoogleSignIn.h; sourceTree = "<group>"; };
 		61E5228789B3ED53CDBB9339973AEEBA /* local_subchannel_pool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = local_subchannel_pool.h; path = src/core/ext/filters/client_channel/local_subchannel_pool.h; sourceTree = "<group>"; };
 		61EB8DA9EA0BB1162E5422FF55277C48 /* plugin_credentials.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = plugin_credentials.cc; path = src/core/lib/security/credentials/plugin/plugin_credentials.cc; sourceTree = "<group>"; };
@@ -16848,6 +16847,7 @@
 		892B4E4CCC9F585B15720D568BAF05EA /* parse_address.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = parse_address.h; path = src/core/lib/address_utils/parse_address.h; sourceTree = "<group>"; };
 		894FF348F9D101DFF4EA307DCDDAE465 /* seed_sequences.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = seed_sequences.cc; path = absl/random/seed_sequences.cc; sourceTree = "<group>"; };
 		896377D6D03FBB6B24DD1FBA098C347F /* migrate.upbdefs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = migrate.upbdefs.h; path = "src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h"; sourceTree = "<group>"; };
+		89654E7766810EB094FBA701096BD2F6 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
 		896F65F5303E1BE863C88A65E9FA8DA7 /* basic_seq.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = basic_seq.h; path = src/core/lib/promise/detail/basic_seq.h; sourceTree = "<group>"; };
 		897B0CBD83530000B019BA3C9007CCC1 /* uv-common.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "uv-common.c"; path = "src/uv-common.c"; sourceTree = "<group>"; };
 		897C65CB10E32E41193C20029928DF0D /* ResourceBundle-gRPCCertificates-Cpp-gRPC-C++-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-gRPCCertificates-Cpp-gRPC-C++-Info.plist"; sourceTree = "<group>"; };
@@ -17285,6 +17285,7 @@
 		9E9415A079D52A54E571E2F1DE935549 /* binder_server.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = binder_server.cc; path = src/core/ext/transport/binder/server/binder_server.cc; sourceTree = "<group>"; };
 		9E95F4B2CCCD11CF0371A986879DDE94 /* grpc_tls_certificate_distributor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = grpc_tls_certificate_distributor.h; path = src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h; sourceTree = "<group>"; };
 		9EA276C34A0B31ABF3DDB16FD6523CB6 /* collection_entry.upbdefs.c */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_entry.upbdefs.c; path = "src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c"; sourceTree = "<group>"; };
+		9EA7935AAC3297BC3AA22405F442C49E /* FILE_LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = FILE_LICENSE; sourceTree = "<group>"; };
 		9EADEFCC65705654BE92EB83DA559D4C /* ref_counted_ptr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ref_counted_ptr.h; path = src/core/lib/gprpp/ref_counted_ptr.h; sourceTree = "<group>"; };
 		9EB18F55E3FAF0BFB1CB8BA974D8A981 /* status.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = status.h; path = include/grpcpp/support/status.h; sourceTree = "<group>"; };
 		9ED06EFD49D567A5CC67E5FBD8354711 /* time_zone_if.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = time_zone_if.h; path = absl/time/internal/cctz/src/time_zone_if.h; sourceTree = "<group>"; };
@@ -17776,6 +17777,7 @@
 		B807CEA4A24AB6BFEFC348B6F597F6BE /* json_util.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = json_util.cc; path = src/core/lib/json/json_util.cc; sourceTree = "<group>"; };
 		B828DF1F16AB87E7CF5D9A5E8DF2B3EC /* json.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = json.h; path = src/core/lib/json/json.h; sourceTree = "<group>"; };
 		B835F19B2061341D6A808B442C72C2C9 /* NSArray+QMUI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+QMUI.h"; path = "QMUIKit/UIKitExtensions/NSArray+QMUI.h"; sourceTree = "<group>"; };
+		B851A93C5D7CD371B293E418F9A5A543 /* WMBase.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = WMBase.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
 		B85A3C403EC7D10267DCE1AC07E54072 /* e_null.c */ = {isa = PBXFileReference; includeInIndex = 1; name = e_null.c; path = src/crypto/cipher_extra/e_null.c; sourceTree = "<group>"; };
 		B86054814D98BAA8B04166E0B00A3FB6 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = "<group>"; };
 		B87072A71135765D22C6E08235E5AA55 /* ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdh.h; path = src/include/openssl/ecdh.h; sourceTree = "<group>"; };
@@ -18005,7 +18007,6 @@
 		C3CCA1B332BFE6BA45D23FE4233E8ABD /* syntax.upbdefs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = syntax.upbdefs.h; path = "src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h"; sourceTree = "<group>"; };
 		C3CE880C2291C4110257B1A2FFD48510 /* annotations.upbdefs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = annotations.upbdefs.h; path = "src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h"; sourceTree = "<group>"; };
 		C3D56D2B317BEDA15F790EBD3A927CE3 /* combiner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = combiner.h; path = src/core/lib/iomgr/combiner.h; sourceTree = "<group>"; };
-		C3D5E721665FC571BE1FA9452C70F68E /* WMBase.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = WMBase.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
 		C3E4086E084F36489A04F6E5A04611A3 /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = "<group>"; };
 		C3F4E2883533D88F188FA5A828A34408 /* arm_arch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = arm_arch.h; path = src/include/openssl/arm_arch.h; sourceTree = "<group>"; };
 		C4017BF97E7895700AAF15A50324A4A0 /* server_callback.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = server_callback.cc; path = src/cpp/server/server_callback.cc; sourceTree = "<group>"; };
@@ -18043,7 +18044,6 @@
 		C5C6EB91046C5A47B7114361C1427724 /* QMUIWeakObjectContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QMUIWeakObjectContainer.m; path = QMUIKit/QMUIComponents/QMUIWeakObjectContainer.m; sourceTree = "<group>"; };
 		C5E99E39C625BD5F9DCC1A94E5FB66EC /* quic_config.upbdefs.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quic_config.upbdefs.c; path = "src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c"; sourceTree = "<group>"; };
 		C5EDEF2EFA6CA55BD78D3B28AB1D802D /* builtins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = builtins.h; path = src/core/lib/surface/builtins.h; sourceTree = "<group>"; };
-		C612C4BC0DBEFB02A535E089F27A3205 /* readme.md */ = {isa = PBXFileReference; includeInIndex = 1; path = readme.md; sourceTree = "<group>"; };
 		C61678E9BD4AA090D962B363864E80F6 /* tcp_client_posix.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = tcp_client_posix.h; path = src/core/lib/iomgr/tcp_client_posix.h; sourceTree = "<group>"; };
 		C61E97FFC8A48B11208C0F067269BB9F /* listener.upbdefs.c */ = {isa = PBXFileReference; includeInIndex = 1; name = listener.upbdefs.c; path = "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c"; sourceTree = "<group>"; };
 		C622509D8EEB46DC4A38F1FE96721B4E /* global_config_env.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = global_config_env.h; path = src/core/lib/gprpp/global_config_env.h; sourceTree = "<group>"; };
@@ -20373,16 +20373,6 @@
 			name = cctz;
 			sourceTree = "<group>";
 		};
-		23FA894548260966D8166BE13C22F7DE /* Pod */ = {
-			isa = PBXGroup;
-			children = (
-				61BE8E5331E32BD08CFDA3D266F441BF /* FILE_LICENSE */,
-				C612C4BC0DBEFB02A535E089F27A3205 /* readme.md */,
-				C3D5E721665FC571BE1FA9452C70F68E /* WMBase.podspec */,
-			);
-			name = Pod;
-			sourceTree = "<group>";
-		};
 		24045A8D035BB36168DC3868736AE3D1 /* raw_hash_set */ = {
 			isa = PBXGroup;
 			children = (
@@ -20908,7 +20898,7 @@
 				F8FD74739CA87557927BBF83B42EC2FF /* WMBase.xcassets */,
 				614B1A4D27BA09B0F30553B567E30EAE /* WMBase_Tool.h */,
 				A6B06A317950F4B7C708F8D95DBCE5A5 /* WMBase_Tool.m */,
-				23FA894548260966D8166BE13C22F7DE /* Pod */,
+				CEAE41F4550FE9A263172CDA5903B45E /* Pod */,
 				20283B9C4AE6065A053FB9F3082009E0 /* Support Files */,
 				956F2B5F4CA0F488D3434F8A44F58A3D /* UC_Commonmodule */,
 				4A20E00BC2F7C9C142C026391342E7A2 /* Ucm_NetWork */,
@@ -24756,6 +24746,16 @@
 			name = NSURLSession;
 			sourceTree = "<group>";
 		};
+		CEAE41F4550FE9A263172CDA5903B45E /* Pod */ = {
+			isa = PBXGroup;
+			children = (
+				9EA7935AAC3297BC3AA22405F442C49E /* FILE_LICENSE */,
+				89654E7766810EB094FBA701096BD2F6 /* README.md */,
+				B851A93C5D7CD371B293E418F9A5A543 /* WMBase.podspec */,
+			);
+			name = Pod;
+			sourceTree = "<group>";
+		};
 		CF1408CF629C7361332E53B88F7BD30C = {
 			isa = PBXGroup;
 			children = (
@@ -31854,8 +31854,8 @@
 		BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastSwiftUpdateCheck = 1240;
-				LastUpgradeCheck = 1240;
+				LastSwiftUpdateCheck = 1300;
+				LastUpgradeCheck = 1300;
 			};
 			buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
 			compatibilityVersion = "Xcode 13.0";
@@ -35889,10 +35889,7 @@
 			buildSettings = {
 				APPLICATION_EXTENSION_API_ONLY = No;
 				CODE_SIGNING_ALLOWED = NO;
-				CODE_SIGN_IDENTITY = "Apple Distribution";
-				CODE_SIGN_STYLE = Automatic;
 				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GoogleSignIn";
-				DEVELOPMENT_TEAM = BUGL3DWWB7;
 				IBSC_MODULE = GoogleSignIn;
 				INFOPLIST_FILE = "Target Support Files/GoogleSignIn/ResourceBundle-GoogleSignIn-GoogleSignIn-Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@@ -35910,10 +35907,7 @@
 			buildSettings = {
 				APPLICATION_EXTENSION_API_ONLY = No;
 				CODE_SIGNING_ALLOWED = NO;
-				CODE_SIGN_IDENTITY = "Apple Development";
-				CODE_SIGN_STYLE = Automatic;
 				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GoogleSignIn";
-				DEVELOPMENT_TEAM = BUGL3DWWB7;
 				IBSC_MODULE = GoogleSignIn;
 				INFOPLIST_FILE = "Target Support Files/GoogleSignIn/ResourceBundle-GoogleSignIn-GoogleSignIn-Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@@ -36450,10 +36444,7 @@
 			baseConfigurationReference = 849E61704829CCB50F3EAAB72FD2B5B6 /* QMUIKit.release.xcconfig */;
 			buildSettings = {
 				APPLICATION_EXTENSION_API_ONLY = No;
-				CODE_SIGN_IDENTITY = "Apple Distribution";
-				CODE_SIGN_STYLE = Automatic;
 				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/QMUIKit";
-				DEVELOPMENT_TEAM = BUGL3DWWB7;
 				IBSC_MODULE = QMUIKit;
 				INFOPLIST_FILE = "Target Support Files/QMUIKit/ResourceBundle-QMUIResources-QMUIKit-Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
@@ -37737,10 +37728,7 @@
 			buildSettings = {
 				APPLICATION_EXTENSION_API_ONLY = No;
 				CODE_SIGNING_ALLOWED = NO;
-				CODE_SIGN_IDENTITY = "Apple Development";
-				CODE_SIGN_STYLE = Automatic;
 				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/gRPC-C++";
-				DEVELOPMENT_TEAM = BUGL3DWWB7;
 				IBSC_MODULE = grpcpp;
 				INFOPLIST_FILE = "Target Support Files/gRPC-C++/ResourceBundle-gRPCCertificates-Cpp-gRPC-C++-Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
@@ -38023,10 +38011,7 @@
 			buildSettings = {
 				APPLICATION_EXTENSION_API_ONLY = No;
 				CODE_SIGNING_ALLOWED = NO;
-				CODE_SIGN_IDENTITY = "Apple Distribution";
-				CODE_SIGN_STYLE = Automatic;
 				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/gRPC-C++";
-				DEVELOPMENT_TEAM = BUGL3DWWB7;
 				IBSC_MODULE = grpcpp;
 				INFOPLIST_FILE = "Target Support Files/gRPC-C++/ResourceBundle-gRPCCertificates-Cpp-gRPC-C++-Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
@@ -38449,10 +38434,7 @@
 			baseConfigurationReference = C11E7BB1EDFDC710E832D2D3835F8C19 /* QMUIKit.debug.xcconfig */;
 			buildSettings = {
 				APPLICATION_EXTENSION_API_ONLY = No;
-				CODE_SIGN_IDENTITY = "Apple Development";
-				CODE_SIGN_STYLE = Automatic;
 				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/QMUIKit";
-				DEVELOPMENT_TEAM = BUGL3DWWB7;
 				IBSC_MODULE = QMUIKit;
 				INFOPLIST_FILE = "Target Support Files/QMUIKit/ResourceBundle-QMUIResources-QMUIKit-Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;