Переглянути джерело

个人中心顶部UI布局完成;

iOS-Abel 2 роки тому
батько
коміт
fea5f2e497
100 змінених файлів з 2296 додано та 75 видалено
  1. 213 10
      Asteria.xcodeproj/project.pbxproj
  2. 0 16
      Asteria/ASTabBarController.h
  3. 0 49
      Asteria/ASTabBarController.m
  4. 20 0
      Asteria/ASUI/ASUserAvater/ASUserAvaterView.h
  5. 108 0
      Asteria/ASUI/ASUserAvater/ASUserAvaterView.m
  6. 21 0
      Asteria/ASUI/CustomView/ASSignDayView.h
  7. 80 0
      Asteria/ASUI/CustomView/ASSignDayView.m
  8. 25 0
      Asteria/ASUI/CustomView/EnterItemV/ASEnterItemV.h
  9. 82 0
      Asteria/ASUI/CustomView/EnterItemV/ASEnterItemV.m
  10. 21 0
      Asteria/ASUI/CustomView/UserInfoV/ASUserBaseInfoView.h
  11. 171 0
      Asteria/ASUI/CustomView/UserInfoV/ASUserBaseInfoView.m
  12. 202 0
      Asteria/ASUI/Font/Roboto/LICENSE.txt
  13. BIN
      Asteria/ASUI/Font/Roboto/Roboto-Black.ttf
  14. BIN
      Asteria/ASUI/Font/Roboto/Roboto-BlackItalic.ttf
  15. BIN
      Asteria/ASUI/Font/Roboto/Roboto-Bold.ttf
  16. BIN
      Asteria/ASUI/Font/Roboto/Roboto-BoldItalic.ttf
  17. BIN
      Asteria/ASUI/Font/Roboto/Roboto-Italic.ttf
  18. BIN
      Asteria/ASUI/Font/Roboto/Roboto-Light.ttf
  19. BIN
      Asteria/ASUI/Font/Roboto/Roboto-LightItalic.ttf
  20. BIN
      Asteria/ASUI/Font/Roboto/Roboto-Medium.ttf
  21. BIN
      Asteria/ASUI/Font/Roboto/Roboto-MediumItalic.ttf
  22. BIN
      Asteria/ASUI/Font/Roboto/Roboto-Regular.ttf
  23. BIN
      Asteria/ASUI/Font/Roboto/Roboto-Thin.ttf
  24. BIN
      Asteria/ASUI/Font/Roboto/Roboto-ThinItalic.ttf
  25. 6 0
      Asteria/ASUI/Icons/ASUI.xcassets/Contents.json
  26. 22 0
      Asteria/ASUI/Icons/ASUI.xcassets/nav_logo.imageset/Contents.json
  27. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/nav_logo.imageset/组 2@2x.png
  28. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/nav_logo.imageset/组 2@3x.png
  29. 22 0
      Asteria/ASUI/Icons/ASUI.xcassets/nav_search.imageset/Contents.json
  30. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/nav_search.imageset/搜索@2x.png
  31. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/nav_search.imageset/搜索@3x.png
  32. 6 0
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/Contents.json
  33. 22 0
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_signed.imageset/Contents.json
  34. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_signed.imageset/路径 14978@2x.png
  35. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_signed.imageset/路径 14978@3x.png
  36. 22 0
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_tomorrowSign.imageset/Contents.json
  37. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_tomorrowSign.imageset/椭圆 866@2x.png
  38. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_tomorrowSign.imageset/椭圆 866@3x.png
  39. 22 0
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_waitSign.imageset/Contents.json
  40. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_waitSign.imageset/椭圆 865@2x.png
  41. BIN
      Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_waitSign.imageset/椭圆 865@3x.png
  42. 0 0
      Asteria/ASUI/SimpleBase/ASBaseNavController.h
  43. 0 0
      Asteria/ASUI/SimpleBase/ASBaseNavController.m
  44. 0 0
      Asteria/ASUI/SimpleBase/ASBaseViewController.h
  45. 2 0
      Asteria/ASBaseViewController.m
  46. 6 0
      Asteria/Config/ColorDefine.h
  47. 8 0
      Asteria/Extensions/UIView+PublicInit.h
  48. 42 0
      Asteria/Extensions/UIView+PublicInit.m
  49. 18 0
      Asteria/Fuction/UserCenter/ASSginView.h
  50. 216 0
      Asteria/Fuction/UserCenter/ASSginView.m
  51. 19 0
      Asteria/Fuction/UserCenter/ASUserCenterEnterItemV.h
  52. 130 0
      Asteria/Fuction/UserCenter/ASUserCenterEnterItemV.m
  53. 22 0
      Asteria/Fuction/UserCenter/ASUserCenterTableHeadView.h
  54. 74 0
      Asteria/Fuction/UserCenter/ASUserCenterTableHeadView.m
  55. 18 0
      Asteria/Fuction/UserCenter/ASUserCenterTopView.h
  56. 283 0
      Asteria/Fuction/UserCenter/ASUserCenterTopView.m
  57. 16 0
      Asteria/Fuction/UserCenter/ASUserCenterViewController.h
  58. 55 0
      Asteria/Fuction/UserCenter/ASUserCenterViewController.m
  59. 16 0
      Asteria/Fuction/UserCenter/Target_userCenter.h
  60. 18 0
      Asteria/Fuction/UserCenter/Target_userCenter.m
  61. 6 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/Contents.json
  62. 6 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/Contents.json
  63. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_VIPCenter.imageset/Contents.json
  64. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_VIPCenter.imageset/VIP@2x.png
  65. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_VIPCenter.imageset/VIP@3x.png
  66. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_coupons.imageset/Contents.json
  67. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_coupons.imageset/优惠券@2x.png
  68. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_coupons.imageset/优惠券@3x.png
  69. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_giftcard.imageset/Contents.json
  70. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_giftcard.imageset/礼品卡@2x.png
  71. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_giftcard.imageset/礼品卡@3x.png
  72. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_message.imageset/Contents.json
  73. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_message.imageset/消息@2x.png
  74. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_message.imageset/消息@3x.png
  75. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_points.imageset/Contents.json
  76. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_points.imageset/组 10840@2x.png
  77. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_points.imageset/组 10840@3x.png
  78. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_service.imageset/Contents.json
  79. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_service.imageset/组 10835@2x.png
  80. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_service.imageset/组 10835@3x.png
  81. 6 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/Contents.json
  82. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/mine_current_position.imageset/Contents.json
  83. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/mine_current_position.imageset/多边形 1@2x.png
  84. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/mine_current_position.imageset/多边形 1@3x.png
  85. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_more.imageset/Contents.json
  86. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_more.imageset/组 8430@2x.png
  87. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_more.imageset/组 8430@3x.png
  88. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_setting.imageset/Contents.json
  89. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_setting.imageset/组 10842@2x.png
  90. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_setting.imageset/组 10842@3x.png
  91. 6 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/Contents.json
  92. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_1.imageset/Contents.json
  93. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_1.imageset/组 10924@2x.png
  94. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_1.imageset/组 10924@3x.png
  95. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_2.imageset/Contents.json
  96. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_2.imageset/组 10925@2x.png
  97. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_2.imageset/组 10925@3x.png
  98. 22 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_3.imageset/Contents.json
  99. BIN
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_3.imageset/组 10926@2x.png
  100. 0 0
      Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_3.imageset/组 10926@3x.png

+ 213 - 10
Asteria.xcodeproj/project.pbxproj

@@ -8,6 +8,26 @@
 
 /* Begin PBXBuildFile section */
 		2B3E96D298A3E04003DA2AD3 /* Pods_Asteria_NotificationServiceExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51AF3B78609F55449DF09609 /* Pods_Asteria_NotificationServiceExtension.framework */; };
+		8134C1AD2A13094F006EB0EC /* Target_userCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134C1AC2A13094F006EB0EC /* Target_userCenter.m */; };
+		8134C1B42A1358F3006EB0EC /* ASSginView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134C1B32A1358F3006EB0EC /* ASSginView.m */; };
+		8134C1B72A1359E6006EB0EC /* ASSignDayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134C1B62A1359E6006EB0EC /* ASSignDayView.m */; };
+		8134C1BA2A1372A7006EB0EC /* ASUserCenterEnterItemV.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134C1B92A1372A7006EB0EC /* ASUserCenterEnterItemV.m */; };
+		8134C1BD2A1372D5006EB0EC /* ASUserCenterTableHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134C1BC2A1372D5006EB0EC /* ASUserCenterTableHeadView.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 */; };
+		814F5D062A11B76F003847A9 /* Roboto-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5CF92A11B76F003847A9 /* Roboto-Light.ttf */; };
+		814F5D072A11B76F003847A9 /* Roboto-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5CFA2A11B76F003847A9 /* Roboto-Regular.ttf */; };
+		814F5D082A11B76F003847A9 /* Roboto-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5CFB2A11B76F003847A9 /* Roboto-MediumItalic.ttf */; };
+		814F5D092A11B76F003847A9 /* Roboto-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5CFC2A11B76F003847A9 /* Roboto-ThinItalic.ttf */; };
+		814F5D0A2A11B76F003847A9 /* Roboto-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5CFD2A11B76F003847A9 /* Roboto-BoldItalic.ttf */; };
+		814F5D0B2A11B76F003847A9 /* Roboto-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5CFE2A11B76F003847A9 /* Roboto-LightItalic.ttf */; };
+		814F5D0C2A11B76F003847A9 /* Roboto-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5CFF2A11B76F003847A9 /* Roboto-Italic.ttf */; };
+		814F5D0D2A11B76F003847A9 /* LICENSE.txt in Resources */ = {isa = PBXBuildFile; fileRef = 814F5D002A11B76F003847A9 /* LICENSE.txt */; };
+		814F5D0E2A11B76F003847A9 /* Roboto-BlackItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5D012A11B76F003847A9 /* Roboto-BlackItalic.ttf */; };
+		814F5D0F2A11B76F003847A9 /* Roboto-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5D022A11B76F003847A9 /* Roboto-Bold.ttf */; };
+		814F5D102A11B76F003847A9 /* Roboto-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5D032A11B76F003847A9 /* Roboto-Thin.ttf */; };
+		814F5D112A11B76F003847A9 /* Roboto-Black.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 814F5D042A11B76F003847A9 /* Roboto-Black.ttf */; };
 		8172449F29F3B2ED005FA9C9 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8172449E29F3B2ED005FA9C9 /* AppDelegate.m */; };
 		817244AA29F3B2EE005FA9C9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 817244A929F3B2EE005FA9C9 /* Assets.xcassets */; };
 		817244AD29F3B2EE005FA9C9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 817244AB29F3B2EE005FA9C9 /* LaunchScreen.storyboard */; };
@@ -17,9 +37,13 @@
 		81932E2B29F7539B007C37AF /* UIColor+AS.m in Sources */ = {isa = PBXBuildFile; fileRef = 81932E2A29F7539B007C37AF /* UIColor+AS.m */; };
 		819900222A020A6F006FE68C /* LYTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 819900212A020A6F006FE68C /* LYTools.m */; };
 		81C3B44429F6612800D79294 /* ASBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C3B44329F6612800D79294 /* ASBaseViewController.m */; };
-		81C3B44729F664A500D79294 /* ASTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C3B44629F664A500D79294 /* ASTabBarController.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 */; };
+		81E257EE2A120756004EEF71 /* ASUserCenterTopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81E257ED2A120756004EEF71 /* ASUserCenterTopView.m */; };
+		81E257F32A120975004EEF71 /* ASUserBaseInfoView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81E257F22A120975004EEF71 /* ASUserBaseInfoView.m */; };
+		81E257F62A12259B004EEF71 /* UserCenter.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 81E257F52A12259B004EEF71 /* UserCenter.xcassets */; };
+		81E257F92A122AC6004EEF71 /* ASUI.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 81E257F82A122AC6004EEF71 /* ASUI.xcassets */; };
+		81E257FD2A12340E004EEF71 /* ASEnterItemV.m in Sources */ = {isa = PBXBuildFile; fileRef = 81E257FC2A12340E004EEF71 /* ASEnterItemV.m */; };
 		8C24ECE114420CDEE7B9B22B /* Pods_Asteria.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54DCE8001991D89B696E7D44 /* Pods_Asteria.framework */; };
 		9A337E3A2A04EE1A00D058A5 /* Target_B.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A337E362A04EE1A00D058A5 /* Target_B.m */; };
 		9A337E3B2A04EE1A00D058A5 /* BViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A337E392A04EE1A00D058A5 /* BViewController.m */; };
@@ -103,6 +127,33 @@
 		3C97D3C0DD5DB3DCA3FF46B8 /* Pods-Asteria.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Asteria.debug.xcconfig"; path = "Target Support Files/Pods-Asteria/Pods-Asteria.debug.xcconfig"; sourceTree = "<group>"; };
 		51AF3B78609F55449DF09609 /* Pods_Asteria_NotificationServiceExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Asteria_NotificationServiceExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		54DCE8001991D89B696E7D44 /* Pods_Asteria.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Asteria.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		8134C1AB2A13094F006EB0EC /* Target_userCenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Target_userCenter.h; sourceTree = "<group>"; };
+		8134C1AC2A13094F006EB0EC /* Target_userCenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Target_userCenter.m; sourceTree = "<group>"; };
+		8134C1B22A1358F3006EB0EC /* ASSginView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASSginView.h; sourceTree = "<group>"; };
+		8134C1B32A1358F3006EB0EC /* ASSginView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASSginView.m; sourceTree = "<group>"; };
+		8134C1B52A1359E6006EB0EC /* ASSignDayView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASSignDayView.h; sourceTree = "<group>"; };
+		8134C1B62A1359E6006EB0EC /* ASSignDayView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASSignDayView.m; sourceTree = "<group>"; };
+		8134C1B82A1372A7006EB0EC /* ASUserCenterEnterItemV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASUserCenterEnterItemV.h; sourceTree = "<group>"; };
+		8134C1B92A1372A7006EB0EC /* ASUserCenterEnterItemV.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASUserCenterEnterItemV.m; sourceTree = "<group>"; };
+		8134C1BB2A1372D5006EB0EC /* ASUserCenterTableHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASUserCenterTableHeadView.h; sourceTree = "<group>"; };
+		8134C1BC2A1372D5006EB0EC /* ASUserCenterTableHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASUserCenterTableHeadView.m; 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>"; };
+		814F5CF42A11B37E003847A9 /* ASUserAvaterView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASUserAvaterView.m; sourceTree = "<group>"; };
+		814F5CF82A11B76F003847A9 /* Roboto-Medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-Medium.ttf"; sourceTree = "<group>"; };
+		814F5CF92A11B76F003847A9 /* Roboto-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-Light.ttf"; sourceTree = "<group>"; };
+		814F5CFA2A11B76F003847A9 /* Roboto-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-Regular.ttf"; sourceTree = "<group>"; };
+		814F5CFB2A11B76F003847A9 /* Roboto-MediumItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-MediumItalic.ttf"; sourceTree = "<group>"; };
+		814F5CFC2A11B76F003847A9 /* Roboto-ThinItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-ThinItalic.ttf"; sourceTree = "<group>"; };
+		814F5CFD2A11B76F003847A9 /* Roboto-BoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-BoldItalic.ttf"; sourceTree = "<group>"; };
+		814F5CFE2A11B76F003847A9 /* Roboto-LightItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-LightItalic.ttf"; sourceTree = "<group>"; };
+		814F5CFF2A11B76F003847A9 /* Roboto-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-Italic.ttf"; sourceTree = "<group>"; };
+		814F5D002A11B76F003847A9 /* LICENSE.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE.txt; sourceTree = "<group>"; };
+		814F5D012A11B76F003847A9 /* Roboto-BlackItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-BlackItalic.ttf"; sourceTree = "<group>"; };
+		814F5D022A11B76F003847A9 /* Roboto-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-Bold.ttf"; sourceTree = "<group>"; };
+		814F5D032A11B76F003847A9 /* Roboto-Thin.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-Thin.ttf"; sourceTree = "<group>"; };
+		814F5D042A11B76F003847A9 /* Roboto-Black.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Roboto-Black.ttf"; sourceTree = "<group>"; };
 		8172449A29F3B2ED005FA9C9 /* Asteria.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Asteria.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		8172449D29F3B2ED005FA9C9 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
 		8172449E29F3B2ED005FA9C9 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -121,14 +172,20 @@
 		819900212A020A6F006FE68C /* LYTools.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LYTools.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>"; };
-		81C3B44529F664A500D79294 /* ASTabBarController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASTabBarController.h; sourceTree = "<group>"; };
-		81C3B44629F664A500D79294 /* ASTabBarController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASTabBarController.m; sourceTree = "<group>"; };
 		81C3B44829F6661500D79294 /* ASBaseNavController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASBaseNavController.h; sourceTree = "<group>"; };
 		81C3B44929F6661500D79294 /* ASBaseNavController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASBaseNavController.m; sourceTree = "<group>"; };
 		81C3B44F29F6699900D79294 /* PreFixHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PreFixHeader.h; sourceTree = "<group>"; };
 		81C3B45029F669C900D79294 /* ColorDefine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColorDefine.h; sourceTree = "<group>"; };
 		81C3B45329F66C1700D79294 /* UIView+PublicInit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIView+PublicInit.h"; sourceTree = "<group>"; };
 		81C3B45429F66C1700D79294 /* UIView+PublicInit.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIView+PublicInit.m"; sourceTree = "<group>"; };
+		81E257EC2A120756004EEF71 /* ASUserCenterTopView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASUserCenterTopView.h; sourceTree = "<group>"; };
+		81E257ED2A120756004EEF71 /* ASUserCenterTopView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASUserCenterTopView.m; sourceTree = "<group>"; };
+		81E257F12A120975004EEF71 /* ASUserBaseInfoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASUserBaseInfoView.h; sourceTree = "<group>"; };
+		81E257F22A120975004EEF71 /* ASUserBaseInfoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASUserBaseInfoView.m; sourceTree = "<group>"; };
+		81E257F52A12259B004EEF71 /* UserCenter.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = UserCenter.xcassets; sourceTree = "<group>"; };
+		81E257F82A122AC6004EEF71 /* ASUI.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = ASUI.xcassets; sourceTree = "<group>"; };
+		81E257FB2A12340E004EEF71 /* ASEnterItemV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASEnterItemV.h; sourceTree = "<group>"; };
+		81E257FC2A12340E004EEF71 /* ASEnterItemV.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASEnterItemV.m; sourceTree = "<group>"; };
 		9A337E362A04EE1A00D058A5 /* Target_B.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Target_B.m; sourceTree = "<group>"; };
 		9A337E372A04EE1A00D058A5 /* Target_B.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Target_B.h; sourceTree = "<group>"; };
 		9A337E382A04EE1A00D058A5 /* BViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BViewController.h; sourceTree = "<group>"; };
@@ -263,6 +320,66 @@
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
+		814F5CF02A11B317003847A9 /* SimpleBase */ = {
+			isa = PBXGroup;
+			children = (
+				81C3B44229F6612800D79294 /* ASBaseViewController.h */,
+				81C3B44329F6612800D79294 /* ASBaseViewController.m */,
+				81C3B44829F6661500D79294 /* ASBaseNavController.h */,
+				81C3B44929F6661500D79294 /* ASBaseNavController.m */,
+			);
+			path = SimpleBase;
+			sourceTree = "<group>";
+		};
+		814F5CF12A11B337003847A9 /* ASUI */ = {
+			isa = PBXGroup;
+			children = (
+				81E257F72A122AAB004EEF71 /* Icons */,
+				81E257EF2A12093A004EEF71 /* CustomView */,
+				814F5CF62A11B76F003847A9 /* Font */,
+				814F5CF22A11B35B003847A9 /* ASUserAvater */,
+				814F5CF02A11B317003847A9 /* SimpleBase */,
+			);
+			path = ASUI;
+			sourceTree = "<group>";
+		};
+		814F5CF22A11B35B003847A9 /* ASUserAvater */ = {
+			isa = PBXGroup;
+			children = (
+				814F5CF32A11B37E003847A9 /* ASUserAvaterView.h */,
+				814F5CF42A11B37E003847A9 /* ASUserAvaterView.m */,
+			);
+			path = ASUserAvater;
+			sourceTree = "<group>";
+		};
+		814F5CF62A11B76F003847A9 /* Font */ = {
+			isa = PBXGroup;
+			children = (
+				814F5CF72A11B76F003847A9 /* Roboto */,
+			);
+			path = Font;
+			sourceTree = "<group>";
+		};
+		814F5CF72A11B76F003847A9 /* Roboto */ = {
+			isa = PBXGroup;
+			children = (
+				814F5CF82A11B76F003847A9 /* Roboto-Medium.ttf */,
+				814F5CF92A11B76F003847A9 /* Roboto-Light.ttf */,
+				814F5CFA2A11B76F003847A9 /* Roboto-Regular.ttf */,
+				814F5CFB2A11B76F003847A9 /* Roboto-MediumItalic.ttf */,
+				814F5CFC2A11B76F003847A9 /* Roboto-ThinItalic.ttf */,
+				814F5CFD2A11B76F003847A9 /* Roboto-BoldItalic.ttf */,
+				814F5CFE2A11B76F003847A9 /* Roboto-LightItalic.ttf */,
+				814F5CFF2A11B76F003847A9 /* Roboto-Italic.ttf */,
+				814F5D002A11B76F003847A9 /* LICENSE.txt */,
+				814F5D012A11B76F003847A9 /* Roboto-BlackItalic.ttf */,
+				814F5D022A11B76F003847A9 /* Roboto-Bold.ttf */,
+				814F5D032A11B76F003847A9 /* Roboto-Thin.ttf */,
+				814F5D042A11B76F003847A9 /* Roboto-Black.ttf */,
+			);
+			path = Roboto;
+			sourceTree = "<group>";
+		};
 		8172449129F3B2EC005FA9C9 = {
 			isa = PBXGroup;
 			children = (
@@ -295,12 +412,7 @@
 				81C3B44B29F6691300D79294 /* Extensions */,
 				8172449D29F3B2ED005FA9C9 /* AppDelegate.h */,
 				8172449E29F3B2ED005FA9C9 /* AppDelegate.m */,
-				81C3B44229F6612800D79294 /* ASBaseViewController.h */,
-				81C3B44329F6612800D79294 /* ASBaseViewController.m */,
-				81C3B44829F6661500D79294 /* ASBaseNavController.h */,
-				81C3B44929F6661500D79294 /* ASBaseNavController.m */,
-				81C3B44529F664A500D79294 /* ASTabBarController.h */,
-				81C3B44629F664A500D79294 /* ASTabBarController.m */,
+				814F5CF12A11B337003847A9 /* ASUI */,
 				817244A929F3B2EE005FA9C9 /* Assets.xcassets */,
 				817244AB29F3B2EE005FA9C9 /* LaunchScreen.storyboard */,
 				817244AE29F3B2EE005FA9C9 /* Info.plist */,
@@ -339,6 +451,71 @@
 			path = Extensions;
 			sourceTree = "<group>";
 		};
+		81D484DD2A0F40510075DC43 /* UserCenter */ = {
+			isa = PBXGroup;
+			children = (
+				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 */,
+				8134C1AB2A13094F006EB0EC /* Target_userCenter.h */,
+				8134C1AC2A13094F006EB0EC /* Target_userCenter.m */,
+			);
+			path = UserCenter;
+			sourceTree = "<group>";
+		};
+		81E257EF2A12093A004EEF71 /* CustomView */ = {
+			isa = PBXGroup;
+			children = (
+				81E257FE2A1235D1004EEF71 /* CutomBottomBar */,
+				81E257FA2A1233F1004EEF71 /* EnterItemV */,
+				81E257F02A120952004EEF71 /* UserInfoV */,
+				8134C1B52A1359E6006EB0EC /* ASSignDayView.h */,
+				8134C1B62A1359E6006EB0EC /* ASSignDayView.m */,
+			);
+			path = CustomView;
+			sourceTree = "<group>";
+		};
+		81E257F02A120952004EEF71 /* UserInfoV */ = {
+			isa = PBXGroup;
+			children = (
+				81E257F12A120975004EEF71 /* ASUserBaseInfoView.h */,
+				81E257F22A120975004EEF71 /* ASUserBaseInfoView.m */,
+			);
+			path = UserInfoV;
+			sourceTree = "<group>";
+		};
+		81E257F72A122AAB004EEF71 /* Icons */ = {
+			isa = PBXGroup;
+			children = (
+				81E257F82A122AC6004EEF71 /* ASUI.xcassets */,
+			);
+			path = Icons;
+			sourceTree = "<group>";
+		};
+		81E257FA2A1233F1004EEF71 /* EnterItemV */ = {
+			isa = PBXGroup;
+			children = (
+				81E257FB2A12340E004EEF71 /* ASEnterItemV.h */,
+				81E257FC2A12340E004EEF71 /* ASEnterItemV.m */,
+			);
+			path = EnterItemV;
+			sourceTree = "<group>";
+		};
+		81E257FE2A1235D1004EEF71 /* CutomBottomBar */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = CutomBottomBar;
+			sourceTree = "<group>";
+		};
 		9A337E342A04EE1A00D058A5 /* BViewController */ = {
 			isa = PBXGroup;
 			children = (
@@ -589,6 +766,7 @@
 		9AD364CC2A05EBE800452C7A /* Fuction */ = {
 			isa = PBXGroup;
 			children = (
+				81D484DD2A0F40510075DC43 /* UserCenter */,
 				9A337E4F2A04FA0A00D058A5 /* Goods */,
 				9A337E4B2A04F42500D058A5 /* AMoule */,
 				9A337E342A04EE1A00D058A5 /* BViewController */,
@@ -677,6 +855,7 @@
 			isa = PBXProject;
 			attributes = {
 				BuildIndependentTargetsInParallel = 1;
+				CLASSPREFIX = AS;
 				LastUpgradeCheck = 1420;
 				TargetAttributes = {
 					8172449929F3B2ED005FA9C9 = {
@@ -711,10 +890,25 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				814F5D102A11B76F003847A9 /* Roboto-Thin.ttf in Resources */,
+				814F5D052A11B76F003847A9 /* Roboto-Medium.ttf in Resources */,
+				814F5D0C2A11B76F003847A9 /* Roboto-Italic.ttf in Resources */,
+				814F5D0F2A11B76F003847A9 /* Roboto-Bold.ttf in Resources */,
+				814F5D0B2A11B76F003847A9 /* Roboto-LightItalic.ttf in Resources */,
+				814F5D112A11B76F003847A9 /* Roboto-Black.ttf in Resources */,
+				814F5D0E2A11B76F003847A9 /* Roboto-BlackItalic.ttf in Resources */,
+				814F5D072A11B76F003847A9 /* Roboto-Regular.ttf in Resources */,
 				817244AD29F3B2EE005FA9C9 /* LaunchScreen.storyboard in Resources */,
+				814F5D0D2A11B76F003847A9 /* LICENSE.txt in Resources */,
+				814F5D062A11B76F003847A9 /* Roboto-Light.ttf in Resources */,
+				814F5D082A11B76F003847A9 /* Roboto-MediumItalic.ttf in Resources */,
+				81E257F92A122AC6004EEF71 /* ASUI.xcassets in Resources */,
 				9A7DA6A12A0CE33500136974 /* Asteria.xcassets in Resources */,
+				814F5D092A11B76F003847A9 /* Roboto-ThinItalic.ttf in Resources */,
 				9AD3460F2A08D60F005CA070 /* ZFPlayer.bundle in Resources */,
+				814F5D0A2A11B76F003847A9 /* Roboto-BoldItalic.ttf in Resources */,
 				817244AA29F3B2EE005FA9C9 /* Assets.xcassets in Resources */,
+				81E257F62A12259B004EEF71 /* UserCenter.xcassets in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -832,21 +1026,27 @@
 			files = (
 				9AD345F82A08D60F005CA070 /* ZFPlayerGestureControl.m in Sources */,
 				9AD345FA2A08D60F005CA070 /* ZFLandscapeWindow.m in Sources */,
+				81E257EE2A120756004EEF71 /* ASUserCenterTopView.m in Sources */,
 				9AD346042A08D60F005CA070 /* ZFKVOController.m in Sources */,
 				9A8DD8C82A0B93F700573324 /* GoodsDetailsVM.m in Sources */,
 				9AD346132A08D60F005CA070 /* ZFLoadingView.m in Sources */,
+				8134C1AD2A13094F006EB0EC /* Target_userCenter.m in Sources */,
+				81E257F32A120975004EEF71 /* ASUserBaseInfoView.m in Sources */,
 				8172449F29F3B2ED005FA9C9 /* AppDelegate.m in Sources */,
 				817244B029F3B2EE005FA9C9 /* main.m in Sources */,
 				9AD346102A08D60F005CA070 /* ZFSliderView.m in Sources */,
 				9A337E4E2A04F46600D058A5 /* AViewController.m in Sources */,
+				8134C1B72A1359E6006EB0EC /* ASSignDayView.m in Sources */,
 				9AD346112A08D60F005CA070 /* ZFPlayerControlView.m in Sources */,
 				9AD345B12A08D5ED005CA070 /* GoodsBannerCollectionViewCell.m in Sources */,
 				9AD345B22A08D5ED005CA070 /* GoodsVideoCollectionViewCell.m in Sources */,
+				814F5CEF2A11B1F2003847A9 /* ASUserCenterViewController.m in Sources */,
 				819900222A020A6F006FE68C /* LYTools.m in Sources */,
 				9AD346012A08D60F005CA070 /* ZFFloatView.m in Sources */,
 				9AD345F92A08D60F005CA070 /* ZFPlayerController.m in Sources */,
 				9AD345AC2A08D59A005CA070 /* WKM_goodsBanner.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 */,
@@ -858,7 +1058,6 @@
 				9AD346022A08D60F005CA070 /* ZFPlayerView.m in Sources */,
 				81C3B44429F6612800D79294 /* ASBaseViewController.m in Sources */,
 				81C3B44A29F6661500D79294 /* ASBaseNavController.m in Sources */,
-				81C3B44729F664A500D79294 /* ASTabBarController.m in Sources */,
 				9AD3460C2A08D60F005CA070 /* ZFVolumeBrightnessView.m in Sources */,
 				9AD346072A08D60F005CA070 /* UIViewController+ZFPlayerRotation.m in Sources */,
 				9AD346142A08D60F005CA070 /* ZFSpeedLoadingView.m in Sources */,
@@ -868,17 +1067,21 @@
 				9AD3461D2A08D6F0005CA070 /* GoodsInformationM.m in Sources */,
 				9AD345A82A08D571005CA070 /* TYCyclePagerView.m in Sources */,
 				9AD346202A08E30E005CA070 /* SelectVCollectionViewCell.m in Sources */,
+				8134C1BA2A1372A7006EB0EC /* ASUserCenterEnterItemV.m in Sources */,
 				9AD3460A2A08D60F005CA070 /* ZFUtilities.m in Sources */,
 				9A337E3A2A04EE1A00D058A5 /* Target_B.m in Sources */,
 				9AD345FF2A08D60F005CA070 /* ZFPlayerNotification.m in Sources */,
 				9AD346092A08D60F005CA070 /* ZFAVPlayerManager.m in Sources */,
+				8134C1B42A1358F3006EB0EC /* ASSginView.m in Sources */,
 				9AD346122A08D60F005CA070 /* ZFSmallFloatControlView.m in Sources */,
 				9AD3460E2A08D60F005CA070 /* ZFNetworkSpeedMonitor.m in Sources */,
 				9AD346052A08D60F005CA070 /* ZFLandscapeViewController.m in Sources */,
+				814F5CF52A11B37E003847A9 /* ASUserAvaterView.m in Sources */,
 				9AD346032A08D60F005CA070 /* ZFPortraitViewController.m in Sources */,
 				9AD3460D2A08D60F005CA070 /* ZFLandScapeControlView.m in Sources */,
 				9AD364C62A05E73E00452C7A /* AS_GoodsDetailsC.m in Sources */,
 				9AD3460B2A08D60F005CA070 /* UIView+ZFFrame.m in Sources */,
+				81E257FD2A12340E004EEF71 /* ASEnterItemV.m in Sources */,
 				81C3B45529F66C1700D79294 /* UIView+PublicInit.m in Sources */,
 				9AD345FD2A08D60F005CA070 /* ZFPersentInteractiveTransition.m in Sources */,
 				9AD345FC2A08D60F005CA070 /* ZFPlayerLogManager.m in Sources */,

+ 0 - 16
Asteria/ASTabBarController.h

@@ -1,16 +0,0 @@
-//
-//  ASTabBarController.h
-//  Asteria
-//
-//  Created by iOS on 2023/4/24.
-//
-
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface ASTabBarController : UITabBarController
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 49
Asteria/ASTabBarController.m

@@ -1,49 +0,0 @@
-//
-//  ASTabBarController.m
-//  Asteria
-//
-//  Created by iOS on 2023/4/24.
-//
-
-#import "ASTabBarController.h"
-#import "ASBaseViewController.h"
-#import "ASBaseNavController.h"
-#import "AViewController.h"
-
-
-@interface ASTabBarController () <UITabBarDelegate>
-
-@end
-
-@implementation ASTabBarController
-
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    
-    AViewController *vc1 = [AViewController new];
-    ASBaseViewController *vc2 = [ASBaseViewController new];
-    ASBaseViewController *vc3 = [ASBaseViewController new];
-    
-    ASBaseNavController *nav1 = [[ASBaseNavController alloc] initWithRootViewController:vc1];
-    ASBaseNavController *nav2 = [[ASBaseNavController alloc] initWithRootViewController:vc2];
-    ASBaseNavController *nav3 = [[ASBaseNavController alloc] initWithRootViewController:vc3];
-    NSMutableArray <UINavigationController *>*vcs = [NSMutableArray arrayWithArray:@[nav1,nav2,nav3]];
-    NSArray *titleArr = @[@"Search",@"Home",@"Me"];
-    NSArray *imgArr = @[@"", @"", @""];
-    NSArray *selimgArr = @[@"", @"", @""];
-    NSMutableArray *items = [NSMutableArray array];
-    for (int i = 0; i < titleArr.count; i++) {
-        vcs[i].tabBarItem.title = titleArr[i];
-        vcs[i].tabBarItem.image = [UIImage imageNamed: imgArr[i]];
-        vcs[i].tabBarItem.selectedImage = [UIImage imageNamed: selimgArr[i]];
-        
-    }
-    
-    
-    
-    self.viewControllers = vcs;
-    
-}
-
-
-@end

+ 20 - 0
Asteria/ASUI/ASUserAvater/ASUserAvaterView.h

@@ -0,0 +1,20 @@
+//
+//  ASUserAvaterView.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/15.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASUserAvaterView : UIView
+
+- (void)setUserHeadV:(NSString *)avater uName:(NSString *)uName;
+- (void)setBorderColor:(UIColor *)color width:(CGFloat)w;
+- (void)setCorner:(CGFloat)cor;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 108 - 0
Asteria/ASUI/ASUserAvater/ASUserAvaterView.m

@@ -0,0 +1,108 @@
+//
+//  ASUserAvaterView.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/15.
+//
+
+#import "ASUserAvaterView.h"
+
+@interface ASUserAvaterView ()
+
+@property (nonatomic, strong) UIView *bgColorV;
+@property (nonatomic, strong) UIImageView *imgV;
+@property (nonatomic, strong) UILabel *nameLb;
+
+@end
+
+@implementation ASUserAvaterView
+
+- (void)setUserHeadV:(NSString *)avater uName:(NSString *)uName {
+    if (avater && ![avater isEqualToString:@""]) {
+        [self.imgV sd_setImageWithURL:[NSURL URLWithString:avater]];
+        [self setBorderColor:_113632 width:0];
+    } else {
+        self.nameLb.text = [[uName substringToIndex:1] uppercaseString];
+        [self setBorderColor:_113632 width:2];
+        
+    }
+}
+
+- (void)setBorderColor:(UIColor *)color width:(CGFloat)w {
+    self.layer.borderColor = color.CGColor;
+    self.layer.borderWidth = w;
+}
+- (void)setCorner:(CGFloat)cor {
+    self.layer.cornerRadius = cor;
+    self.layer.masksToBounds = true;
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        CGFloat min = MIN(frame.size.width, frame.size.height);
+        self.nameLb.font = [UIFont fontWithName:Rob_Bold size:min/100*52];
+        [self loadSubV];
+    }
+    return self;
+}
+
+- (void)loadSubV {
+    [self addSubview:self.bgColorV];
+    [self addSubview:self.nameLb];
+    [self addSubview:self.imgV];
+    
+    [self.bgColorV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self);
+    }];
+    [self.nameLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.leading.equalTo(self).offset(6);
+        make.bottom.trailing.equalTo(self).offset(-6);
+    }];
+    [self.imgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self);
+    }];
+    
+    dispatch_async(dispatch_get_main_queue(), ^{
+        [UIView viewAddHorColorBg:self.bgColorV colorArr:@[
+            (id)_C8FFED.CGColor,
+            (id)Col_FFF.CGColor
+        ]];
+    });
+    
+    
+    
+}
+
+
+- (UIView *)bgColorV {
+    if (!_bgColorV) {
+        UIView *v = [UIView baseV];
+        v.backgroundColor = UIColor.whiteColor;
+        _bgColorV = v;
+    }
+    return _bgColorV;
+}
+
+- (UIImageView *)imgV {
+    if (!_imgV) {
+        UIImageView *v = [UIImageView baseImgV];
+        v.contentMode = UIViewContentModeScaleAspectFill;
+        _imgV = v;
+    }
+    return _imgV;
+}
+
+- (UILabel *)nameLb {
+    if (!_nameLb) {
+        UILabel *lb = [UILabel baseLb];
+        lb.font = [UIFont fontWithName:Rob_Bold size:48];
+        lb.textColor = _113632;
+        lb.textAlignment = NSTextAlignmentCenter;
+        _nameLb = lb;
+    }
+    return _nameLb;
+}
+
+
+@end

+ 21 - 0
Asteria/ASUI/CustomView/ASSignDayView.h

@@ -0,0 +1,21 @@
+//
+//  ASSignDayView.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASSignDayView : UIView
+
+@property (nonatomic, strong) UILabel *dayLb;
+@property (nonatomic, strong) UIImageView *statusImgV;
+
+- (void)setDay:(NSInteger)day st:(BOOL)isSgin isToday:(BOOL)isToday;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 80 - 0
Asteria/ASUI/CustomView/ASSignDayView.m

@@ -0,0 +1,80 @@
+//
+//  ASSignDayView.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import "ASSignDayView.h"
+
+@implementation ASSignDayView
+
+- (void)setDay:(NSInteger)day st:(BOOL)isSgin isToday:(BOOL)isToday {
+    self.dayLb.text = [NSString stringWithFormat:@"D%ld", day];
+    if (isSgin) {
+        self.dayLb.textColor = Col_000;
+        self.statusImgV.image = [UIImage imageNamed:@"sd_signed"];
+    } else {
+        if (isToday) {
+            self.dayLb.textColor = Col_666;
+            self.statusImgV.image = [UIImage imageNamed:@"sd_waitSign"];
+        } else {
+            self.dayLb.textColor = Col_999;
+            self.statusImgV.image = [UIImage imageNamed:@"sd_tomorrowSign"];
+        }
+    }
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self configSubV];
+    }
+    return self;
+}
+
+- (void)configSubV {
+    self.backgroundColor = UIColor.clearColor;
+    
+    [self addSubview:self.dayLb];
+    [self addSubview:self.statusImgV];
+    
+    [self.dayLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.leading.trailing.equalTo(self);
+        make.width.equalTo(@30);
+        make.height.equalTo(@14);
+    }];
+    
+    [self.statusImgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@11);
+        make.bottom.equalTo(self);
+        make.centerX.equalTo(self);
+        make.top.equalTo(self.dayLb.mas_bottom).offset(8);
+    }];
+    
+    
+}
+
+
+- (UILabel *)dayLb {
+    if (!_dayLb) {
+        UILabel *lb = [UILabel baseLb];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = Col_000;
+        lb.textAlignment = NSTextAlignmentCenter;
+        _dayLb = lb;
+    }
+    return _dayLb;
+}
+
+
+- (UIImageView *)statusImgV {
+    if (!_statusImgV) {
+        UIImageView *img = [UIImageView baseImgV];
+        _statusImgV = img;
+    }
+    return _statusImgV;
+}
+
+
+@end

+ 25 - 0
Asteria/ASUI/CustomView/EnterItemV/ASEnterItemV.h

@@ -0,0 +1,25 @@
+//
+//  ASEnterItemV.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/15.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASEnterItemV : UIView
+
+@property (nonatomic,strong) UILabel *titleLb;
+@property (nonatomic,strong) UIImageView *imageV;
+@property (nonatomic, strong) UIButton *btn;
+
+@property (nonatomic,copy) btnClickBlock clickCallBack;
+
+- (void)setData:(NSString *)title icon:(UIImage *)img;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 82 - 0
Asteria/ASUI/CustomView/EnterItemV/ASEnterItemV.m

@@ -0,0 +1,82 @@
+//
+//  ASEnterItemV.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/15.
+//
+
+#import "ASEnterItemV.h"
+
+@implementation ASEnterItemV
+
+- (void)setData:(NSString *)title icon:(UIImage *)img {
+    self.imageV.image = img;
+    self.titleLb.text = title;
+}
+ 
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self configSubV];
+    }
+    return self;
+}
+
+- (void)configSubV {
+    [self addSubview:self.imageV];
+    [self addSubview:self.titleLb];
+    [self addSubview:self.btn];
+    
+    
+    [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self).offset(5);
+        make.right.equalTo(self).offset(-5);
+        make.bottom.equalTo(self).offset(-5);
+        make.height.equalTo(@14);
+    }];
+    [self.imageV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.centerX.equalTo(self.titleLb);
+        make.top.equalTo(self).offset(5);
+        make.bottom.equalTo(self.titleLb.mas_top).offset(-10);
+    }];
+    [self.btn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self);
+    }];
+    
+}
+
+-(void)btnAction {
+    if (self.clickCallBack) {
+        self.clickCallBack();
+    }
+}
+
+-(UIButton *)btn {
+    if (!_btn) {
+        _btn = [UIButton buttonWithType:UIButtonTypeCustom];
+        [_btn addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside];
+    }
+    return _btn;
+}
+
+- (UIImageView *)imageV {
+    if (!_imageV) {
+        UIImageView *imgV = [[UIImageView alloc] init];
+        imgV.contentMode = UIViewContentModeScaleAspectFit;
+        _imageV = imgV;
+    }
+    return _imageV;
+}
+
+- (UILabel *)titleLb {
+    if (!_titleLb) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = UIColor.blackColor;
+        lb.textAlignment = NSTextAlignmentCenter;
+        _titleLb = lb;
+    }
+    return  _titleLb;
+}
+
+@end

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

@@ -0,0 +1,21 @@
+//
+//  ASUserBaseInfoView.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/15.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASUserBaseInfoView : UIView
+
+@property (nonatomic, strong) UILabel *usefualLb;
+
+// vip页面展示用户信息调整
+- (void)reSetSubVMas;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 171 - 0
Asteria/ASUI/CustomView/UserInfoV/ASUserBaseInfoView.m

@@ -0,0 +1,171 @@
+//
+//  ASUserBaseInfoView.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/15.
+//
+
+#import "ASUserBaseInfoView.h"
+#import "ASUserAvaterView.h"
+
+@interface ASUserBaseInfoView ()
+
+@property (nonatomic, strong) ASUserAvaterView *avaterV;
+@property (nonatomic, strong) UILabel *uNameLb;
+@property (nonatomic, strong) UILabel *emailLb;
+@property (nonatomic, strong) UIImageView *vipLevelV;
+
+@property (nonatomic, strong) UIStackView *stv;
+
+@end
+
+@implementation ASUserBaseInfoView
+
+
+- (void)setDemoData {
+    [self.avaterV setUserHeadV:@"" uName:@"new"];//@"https://www.shijuepi.com/uploads/allimg/201103/1-201103104255.jpg"
+    self.uNameLb.text = @"new";
+    self.vipLevelV.image = [UIImage imageNamed:@"uc_vip_level_1"];
+    self.uNameLb.text = @"new";
+    self.emailLb.text = @"653462314@qq.com";
+    self.usefualLb.text = @"300 points";
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        self.backgroundColor = UIColor.clearColor;
+        [self loadSubV];
+        [self setDemoData];
+    }
+    return self;
+}
+
+- (void)loadSubV {
+    [self addSubview:self.avaterV];
+    
+    self.stv = [UIStackView baseStackV:true];
+    self.stv.spacing = 4;
+    self.stv.distribution = UIStackViewDistributionFill;
+    [self addSubview:self.stv];
+    
+    [self.stv addArrangedSubview:self.uNameLb];
+    [self.stv addArrangedSubview:self.emailLb];
+    
+    UIView *levelBgV = [UIView baseV];
+    levelBgV.backgroundColor = UIColor.clearColor;
+    [self.stv addArrangedSubview:levelBgV];
+    [self.stv addArrangedSubview:self.usefualLb];
+    [levelBgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@16);
+    }];
+    
+    [levelBgV addSubview:self.vipLevelV];
+    [self.vipLevelV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.leading.bottom.equalTo(levelBgV);
+    }];
+    
+    [self setSubVMas];
+    
+}
+
+- (void)setSubVMas {
+    [self.uNameLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@17);
+    }];
+    [self.emailLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.greaterThanOrEqualTo(@14);
+    }];
+    [self.usefualLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@17);
+    }];
+    
+    [self.avaterV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@100);
+        make.top.leading.bottom.equalTo(self);
+    }];
+    [self.stv mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.avaterV.mas_top).offset(10);
+        make.leading.equalTo(self.avaterV.mas_trailing).offset(10);
+        make.trailing.equalTo(self);
+        make.bottom.equalTo(self.avaterV.mas_bottom).offset(-10);
+    }];
+}
+
+- (void)reSetSubVMas {
+    
+    [self.uNameLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@22);
+    }];
+    [self.emailLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@17);
+    }];
+    [self.usefualLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.equalTo(@17);
+    }];
+    [self.avaterV setCorner:8];
+    [self.avaterV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@88);
+        make.top.leading.bottom.equalTo(self);
+    }];
+    [self.stv mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.avaterV.mas_top).offset(0);
+        make.leading.equalTo(self.avaterV.mas_trailing).offset(10);
+        make.trailing.equalTo(self);
+        make.bottom.equalTo(self.avaterV.mas_bottom).offset(0);
+    }];
+}
+
+
+- (UIImageView *)vipLevelV {
+    if (!_vipLevelV) {
+        UIImageView *v = [[UIImageView alloc] init];
+        v.contentMode = UIViewContentModeScaleAspectFit;
+        _vipLevelV = v;
+    }
+    return _vipLevelV;
+}
+
+- (ASUserAvaterView *)avaterV {
+    if (!_avaterV) {
+        ASUserAvaterView *v = [[ASUserAvaterView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
+        _avaterV = v;
+    }
+    return _avaterV;
+}
+
+- (UILabel *)uNameLb {
+    if (!_uNameLb) {
+        UILabel *lb = [UILabel baseLb];
+        lb.font = [UIFont fontWithName:Rob_Bold size:14];
+        lb.textColor = Col_000;
+        _uNameLb = lb;
+    }
+    return _uNameLb;
+}
+
+- (UILabel *)emailLb {
+    if (!_emailLb) {
+        UILabel *lb = [UILabel baseLb];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = Col_000;
+        _emailLb = lb;
+    }
+    return _emailLb;
+}
+
+- (UILabel *)usefualLb {
+    if (!_usefualLb) {
+        UILabel *lb = [UILabel baseLb];
+        lb.font = [UIFont fontWithName:Rob_Bold size:14];
+        lb.textColor = Col_000;
+        _usefualLb = lb;
+    }
+    return _usefualLb;
+}
+
+
+
+
+
+@end

+ 202 - 0
Asteria/ASUI/Font/Roboto/LICENSE.txt

@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

BIN
Asteria/ASUI/Font/Roboto/Roboto-Black.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-BlackItalic.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-Bold.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-BoldItalic.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-Italic.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-Light.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-LightItalic.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-Medium.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-MediumItalic.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-Regular.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-Thin.ttf


BIN
Asteria/ASUI/Font/Roboto/Roboto-ThinItalic.ttf


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

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

+ 22 - 0
Asteria/ASUI/Icons/ASUI.xcassets/nav_logo.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/Icons/ASUI.xcassets/nav_logo.imageset/组 2@2x.png


BIN
Asteria/ASUI/Icons/ASUI.xcassets/nav_logo.imageset/组 2@3x.png


+ 22 - 0
Asteria/ASUI/Icons/ASUI.xcassets/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/Icons/ASUI.xcassets/nav_search.imageset/搜索@2x.png


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


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

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

+ 22 - 0
Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_signed.imageset/Contents.json

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

BIN
Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_signed.imageset/路径 14978@2x.png


BIN
Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_signed.imageset/路径 14978@3x.png


+ 22 - 0
Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_tomorrowSign.imageset/Contents.json

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

BIN
Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_tomorrowSign.imageset/椭圆 866@2x.png


BIN
Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_tomorrowSign.imageset/椭圆 866@3x.png


+ 22 - 0
Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_waitSign.imageset/Contents.json

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

BIN
Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_waitSign.imageset/椭圆 865@2x.png


BIN
Asteria/ASUI/Icons/ASUI.xcassets/signDay/sd_waitSign.imageset/椭圆 865@3x.png


Asteria/ASBaseNavController.h → Asteria/ASUI/SimpleBase/ASBaseNavController.h


Asteria/ASBaseNavController.m → Asteria/ASUI/SimpleBase/ASBaseNavController.m


Asteria/ASBaseViewController.h → Asteria/ASUI/SimpleBase/ASBaseViewController.h


+ 2 - 0
Asteria/ASBaseViewController.m

@@ -17,6 +17,8 @@
     [super viewDidLoad];
     [self addBaseNav];
     
+    self.navigationController.navigationBar.hidden = true;
+    
     self.view.backgroundColor = _F8F8F8;
     
 }

+ 6 - 0
Asteria/Config/ColorDefine.h

@@ -30,6 +30,12 @@
 
 #define _404040 ([UIColor colorWithHexString:@"#404040"])
 
+#define _113632 ([UIColor colorWithHexString:@"#113632"])
+
+#define _C8FFED ([UIColor colorWithHexString:@"#C8FFED"])
+
+#define _E5E5E5 ([UIColor colorWithHexString:@"#E5E5E5"])
+
 // as主题色 绿色
 #define _32CFB0 ([UIColor colorWithHexString:@"#32CFB0"])
 

+ 8 - 0
Asteria/Extensions/UIView+PublicInit.h

@@ -20,6 +20,14 @@ NS_ASSUME_NONNULL_BEGIN
 
 + (UIStackView *)baseStackV:(BOOL)isVertical;
 
++ (void)viewAddLineColorBg:(UIView *)bgV colorArr:(NSArray *)colors;
+
++ (void)viewAddHorColorBg:(UIView *)bgV colorArr:(NSArray *)colors;
+
++ (UIImage *)snapshotWithView:(UIView *)view;
+
++ (UIVisualEffectView*)getBlurV:(CGRect)frame;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 42 - 0
Asteria/Extensions/UIView+PublicInit.m

@@ -39,4 +39,46 @@
     return stackV;
 }
 
+
++ (void)viewAddLineColorBg:(UIView *)bgV colorArr:(NSArray *)colors {
+    CAGradientLayer *layer = [[CAGradientLayer alloc] init];
+    layer.frame = bgV.bounds;
+    layer.colors = colors;
+    layer.startPoint = CGPointMake(0.22, 0.14);
+    layer.endPoint = CGPointMake(0.8, 0.82);
+    layer.locations = @[@0,@1.0f];
+    layer.name = @"colorLayer";
+    layer.cornerRadius = 4;
+    [bgV.layer addSublayer:layer];
+}
+
++ (void)viewAddHorColorBg:(UIView *)bgV colorArr:(NSArray *)colors {
+    CAGradientLayer *layer = [[CAGradientLayer alloc] init];
+    layer.frame = bgV.bounds;
+    layer.colors = colors;
+    layer.startPoint = CGPointMake(0, 0.47);
+    layer.endPoint = CGPointMake(1, 0.45);
+    layer.locations = @[@0,@1.0f];
+    layer.name = @"colorLayer";
+    layer.cornerRadius = 4;
+    [bgV.layer addSublayer:layer];
+}
+
++ (UIImage *)snapshotWithView:(UIView *)view {
+    UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
+    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
+    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
+    UIGraphicsEndImageContext();
+    return image;
+}
+
++ (UIVisualEffectView *)getBlurV:(CGRect)frame {
+    UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
+
+    UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect];
+    
+    effectView.frame = frame;
+    return effectView;
+}
+
 @end

+ 18 - 0
Asteria/Fuction/UserCenter/ASSginView.h

@@ -0,0 +1,18 @@
+//
+//  ASSginView.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASSginView : UIView
+
+- (void)configDayArr:(NSInteger)from currentDay:(NSInteger)current status:(BOOL)isSign;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 216 - 0
Asteria/Fuction/UserCenter/ASSginView.m

@@ -0,0 +1,216 @@
+//
+//  ASSginView.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import "ASSginView.h"
+#import "ASSignDayView.h"
+
+@interface ASSginView ()
+
+@property (nonatomic, strong) UIView *bgV;
+@property (nonatomic, strong) UIView *colorBgV;
+@property (nonatomic, strong) UIView *baseLineV;
+@property (nonatomic, strong) UIView *waitSignLineV;
+@property (nonatomic, strong) UIView *unSignLineV;
+@property (nonatomic, strong) NSArray <ASSignDayView *>*dayArr;
+@property (nonatomic, strong) UILabel *titleLb;
+@property (nonatomic, strong) UIButton *signBt;
+
+@end
+
+@implementation ASSginView
+
+- (void)configDayArr:(NSInteger)from currentDay:(NSInteger)current status:(BOOL)isSign {
+    self.unSignLineV.hidden = true;
+    self.waitSignLineV.hidden = true;
+    self.signBt.backgroundColor = isSign ? Col_999 : Col_000;
+    
+    for (ASSignDayView *v in self.dayArr) {
+        if (v.superview) {
+            [v removeFromSuperview];
+        }
+    }
+    self.dayArr = @[];
+    NSMutableArray *arr = [NSMutableArray array];
+    for (NSInteger i = from; i < from + 7; i++) {
+        ASSignDayView *v = [[ASSignDayView alloc] initWithFrame:CGRectZero];
+        v.tag = 10000+i;
+        [arr addObject:v];
+        [self.bgV addSubview:v];
+        CGFloat space = (KScreenWidth-60-11*7)/6;
+        if (current > i) {
+            [v setDay:i st:true  isToday:false];
+        } else if (current == i) {
+            [v setDay:i st:isSign  isToday:true];
+            if (!isSign) {
+                self.waitSignLineV.hidden = false;
+                [self.waitSignLineV mas_remakeConstraints:^(MASConstraintMaker *make) {
+                    make.trailing.equalTo(v.statusImgV.mas_centerX);
+                    make.width.equalTo([NSNumber numberWithFloat:space+11]);
+                    make.height.equalTo(@1);
+                    make.centerY.equalTo(self.baseLineV);
+                }];
+            }
+            self.unSignLineV.hidden = false;
+            [self.unSignLineV mas_remakeConstraints:^(MASConstraintMaker *make) {
+                make.trailing.equalTo(self.baseLineV.mas_trailing);
+                make.leading.equalTo(v.statusImgV.mas_centerX);
+                make.height.equalTo(@1);
+                make.centerY.equalTo(self.baseLineV);
+            }];
+            
+        } else {
+            [v setDay:i st:false  isToday:false];
+        }
+        
+        
+        
+        [v mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.centerX.equalTo(self.baseLineV.mas_left).offset((i-from)*(space + 11)+5.5);
+            make.bottom.equalTo(self.baseLineV.mas_centerY).offset(5.5);
+        }];
+        
+    }
+    
+    
+}
+
+
+
+    
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self loadSubV];
+    }
+    return self;
+}
+
+- (void)loadSubV {
+    [self addSubview:self.bgV];
+    [self.bgV addSubview:self.titleLb];
+    [self.bgV addSubview:self.signBt];
+    [self.bgV addSubview:self.baseLineV];
+    [self.bgV addSubview:self.waitSignLineV];
+    [self.bgV addSubview:self.unSignLineV];
+    self.unSignLineV.hidden = true;
+    self.waitSignLineV.hidden = true;
+    [self.bgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.leading.equalTo(self).offset(10);
+        make.bottom.trailing.equalTo(self).offset(-10);
+    }];
+    [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.bgV).offset(10);
+        make.leading.equalTo(self.bgV).offset(20);
+        make.trailing.equalTo(self.bgV).offset(-20);
+        make.height.equalTo(@19);
+    }];
+    [self.baseLineV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.titleLb.mas_bottom).offset(49);
+        make.leading.equalTo(self.bgV).offset(20);
+        make.trailing.equalTo(self.bgV).offset(-20);
+        make.height.equalTo(@1);
+    }];
+    
+    [self.signBt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.baseLineV.mas_bottom).offset(24);
+        make.leading.equalTo(self.bgV).offset(20);
+        make.trailing.equalTo(self.bgV).offset(-20);
+        make.height.equalTo(@45);
+        make.bottom.equalTo(self.bgV).offset(-15);
+    }];
+    
+    [self.unSignLineV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@0);
+    }];
+    [self.waitSignLineV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@0);
+    }];
+    
+    dispatch_async(dispatch_get_main_queue(), ^{
+        [UIView viewAddHorColorBg:self.colorBgV colorArr:@[
+            (id)_C8FFED.CGColor,
+            (id)Col_FFF.CGColor
+        ]];
+    });
+}
+
+
+
+- (UIView *)bgV {
+    if (!_bgV) {
+        UIView *v = [UIView baseV];
+        v.layer.cornerRadius = 8;
+        v.layer.masksToBounds = true;
+        v.backgroundColor = _F8F8F8;
+        _bgV = v;
+    }
+    return _bgV;
+}
+- (UIView *)colorBgV {
+    if (!_colorBgV) {
+        UIView *v = [UIView baseV];
+        v.layer.cornerRadius = 8;
+        v.layer.masksToBounds = true;
+        v.backgroundColor = _F8F8F8;
+        _colorBgV = v;
+    }
+    return _colorBgV;
+}
+
+- (UIView *)baseLineV {
+    if (!_baseLineV) {
+        UIView *v = [UIView baseV];
+        v.backgroundColor = _113632;
+        _baseLineV = v;
+    }
+    return _baseLineV;
+}
+
+- (UIView *)waitSignLineV {
+    if (!_waitSignLineV) {
+        UIView *v = [UIView baseV];
+        v.backgroundColor = Col_666;
+        _waitSignLineV = v;
+    }
+    return _waitSignLineV;
+}
+
+- (UIView *)unSignLineV {
+    if (!_unSignLineV) {
+        UIView *v = [UIView baseV];
+        v.backgroundColor = _E5E5E5;
+        _unSignLineV = v;
+    }
+    return _unSignLineV;
+}
+
+- (UILabel *)titleLb {
+    if (!_titleLb) {
+        UILabel *lb = [UILabel baseLb];
+        lb.font = [UIFont fontWithName:Rob_Bold size:16];
+        lb.text = @"SIGN";
+        lb.textColor = Col_000;
+        _titleLb = lb;
+    }
+    return _titleLb;
+}
+
+- (UIButton *)signBt {
+    if (!_signBt) {
+        UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
+        [bt setTitle:@"Sign In" forState:UIControlStateNormal];
+        bt.layer.cornerRadius = 4;
+        bt.layer.masksToBounds = true;
+        [bt setTitleColor:Col_FFF forState:UIControlStateNormal];
+        bt.titleLabel.font = [UIFont fontWithName:Rob_Bold size:16];
+        bt.backgroundColor = Col_000;
+        _signBt = bt;
+    }
+    return _signBt;
+}
+
+@end

+ 19 - 0
Asteria/Fuction/UserCenter/ASUserCenterEnterItemV.h

@@ -0,0 +1,19 @@
+//
+//  ASUserCenterEnterItemV.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASUserCenterEnterItemV : UIView
+
+/// -2编辑头像 -1设置 0 vip  1优惠券 2积分 3 钱包 4联系 5浏览历史
+@property (nonatomic, copy) void(^itemTapCallBack)(NSInteger tag);
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 130 - 0
Asteria/Fuction/UserCenter/ASUserCenterEnterItemV.m

@@ -0,0 +1,130 @@
+//
+//  ASUserCenterEnterItemV.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import "ASUserCenterEnterItemV.h"
+#import "ASEnterItemV.h"
+
+@interface ASUserCenterEnterItemV ()
+
+@property (nonatomic, strong) UIView *bgV;
+@property (nonatomic, strong) UIStackView *enterStackV;
+@property (nonatomic, strong) UIStackView *enterStackV2;
+@property (nonatomic, strong) NSArray<ASEnterItemV *> *itemsV;
+
+
+@end
+
+@implementation ASUserCenterEnterItemV
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    CGRect rect = frame;
+    rect.size = CGSizeMake(KScreenWidth, 219);
+    self = [super initWithFrame:rect];
+    if (self) {
+        [self createItemsV];
+        [self configSubV];
+    }
+    return self;
+}
+
+- (void)configSubV {
+    [self addSubview:self.bgV];
+    [self.bgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.leading.top.equalTo(self).offset(10);
+        make.bottom.trailing.equalTo(self).offset(-10);
+    }];
+    
+    
+    UIStackView *totalSt = [UIStackView baseStackV:true];
+    totalSt.distribution = UIStackViewDistributionFillEqually;
+    totalSt.spacing = 10;
+    [totalSt addArrangedSubview:self.enterStackV];
+    [totalSt addArrangedSubview:self.enterStackV2];
+    
+    [self.bgV addSubview:totalSt];
+    [totalSt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.leading.equalTo(self).offset(15);
+        make.trailing.equalTo(self).offset(-15);
+        make.top.equalTo(self).offset(30);
+        make.bottom.equalTo(self).offset(-30);
+    }];
+    
+    for (int i=0; i<self.itemsV.count;i++) {
+        int a = i/3;
+        ASEnterItemV *v = self.itemsV[i];
+        if (a == 0) {
+            [self.enterStackV addArrangedSubview:v];
+        } else {
+            [self.enterStackV2 addArrangedSubview:v];
+        }
+    }
+    
+
+}
+
+- (UIView *)bgV {
+    if (!_bgV) {
+        UIView *v = [UIView baseV];
+        v.layer.cornerRadius = 8;
+        v.layer.masksToBounds = true;
+        v.backgroundColor = _F8F8F8;
+        _bgV = v;
+    }
+    return _bgV;
+}
+
+- (UIStackView *)enterStackV {
+    if (!_enterStackV) {
+        UIStackView *v = [[UIStackView alloc] init];
+        v.axis = UILayoutConstraintAxisHorizontal;
+        v.spacing = 10;
+        v.alignment = UIStackViewAlignmentFill;
+        v.distribution = UIStackViewDistributionFillEqually;
+        _enterStackV = v;
+    }
+    return _enterStackV;
+}
+
+- (UIStackView *)enterStackV2 {
+    if (!_enterStackV2) {
+        UIStackView *v = [[UIStackView alloc] init];
+        v.axis = UILayoutConstraintAxisHorizontal;
+        v.spacing = 10;
+        v.alignment = UIStackViewAlignmentFill;
+        v.distribution = UIStackViewDistributionFillEqually;
+        _enterStackV2 = v;
+    }
+    return _enterStackV2;
+}
+
+
+- (void)createItemsV {
+    NSArray *titleArr = @[@"Coupons", @"Gift Card", @"Points" , @"VIP Center",@"Customer Service",@"Message"];
+    NSArray *iconArr = @[@"uc_coupons", @"uc_giftcard",@"uc_points", @"uc_VIPCenter",@"uc_service",@"uc_message"];
+    NSMutableArray *tempArr = [NSMutableArray array];
+    for (int i = 0; i<titleArr.count; i++) {
+        NSString *tit = titleArr[i];
+        UIImage *img = [UIImage imageNamed:iconArr[i]];
+        ASEnterItemV *v = [[ASEnterItemV alloc] initWithFrame:CGRectZero];
+        [v setData:tit icon:img];
+        @weakify(self);
+        [v setClickCallBack:^{
+            [weak_self tapItemAction:i];
+        }];
+        [tempArr addObject:v];
+    }
+    
+    self.itemsV = tempArr;
+}
+
+- (void)tapItemAction:(NSInteger)tag {
+    if (self.itemTapCallBack) {
+        self.itemTapCallBack(tag);
+    }
+}
+
+@end

+ 22 - 0
Asteria/Fuction/UserCenter/ASUserCenterTableHeadView.h

@@ -0,0 +1,22 @@
+//
+//  ASUserCenterTableHeadView.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import <UIKit/UIKit.h>
+#import "ASUserCenterTopView.h"
+#import "ASSginView.h"
+#import "ASUserCenterEnterItemV.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASUserCenterTableHeadView : UIView
+
+@property (nonatomic, strong) ASUserCenterEnterItemV *itemsV;
+@property (nonatomic, strong) ASUserCenterTopView *topV;
+@property (nonatomic, strong) ASSginView *signV;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 74 - 0
Asteria/Fuction/UserCenter/ASUserCenterTableHeadView.m

@@ -0,0 +1,74 @@
+//
+//  ASUserCenterTableHeadView.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import "ASUserCenterTableHeadView.h"
+
+
+@interface ASUserCenterTableHeadView ()
+
+
+
+@end
+
+@implementation ASUserCenterTableHeadView
+
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:CGRectMake(0, 0, KScreenWidth, 183 + +226 + 219)];
+    if (self) {
+        [self configSubV];
+    }
+    return self;
+}
+
+- (void)configSubV {
+    [self addSubview:self.topV];
+    [self addSubview:self.signV];
+    [self addSubview:self.itemsV];
+    [self.topV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.leading.trailing.equalTo(self);
+        make.height.equalTo(@226);
+    }];
+    [self.signV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.topV.mas_bottom);
+        make.leading.trailing.equalTo(self);
+        make.height.equalTo(@183);
+    }];
+    [self.itemsV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.signV.mas_bottom);
+        make.leading.trailing.equalTo(self);
+        make.height.equalTo(@219);
+        make.bottom.equalTo(self);
+    }];
+    
+}
+
+- (ASSginView *)signV {
+    if (!_signV) {
+        ASSginView *v = [[ASSginView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 183)];
+        _signV = v;
+    }
+    return _signV;
+}
+
+- (ASUserCenterTopView *)topV {
+    if (!_topV) {
+        ASUserCenterTopView *v = [[ASUserCenterTopView alloc] initWithFrame:CGRectZero];
+        _topV = v;
+    }
+    return _topV;
+}
+
+- (ASUserCenterEnterItemV *)itemsV {
+    if (!_itemsV) {
+        ASUserCenterEnterItemV *v = [[ASUserCenterEnterItemV alloc] initWithFrame:CGRectZero];
+        _itemsV = v;
+    }
+    return _itemsV;
+}
+
+@end

+ 18 - 0
Asteria/Fuction/UserCenter/ASUserCenterTopView.h

@@ -0,0 +1,18 @@
+//
+//  ASUserCenterTopView.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/15.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASUserCenterTopView : UIView
+
+@property (nonatomic, copy) btnClickBlock settingBlock;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 283 - 0
Asteria/Fuction/UserCenter/ASUserCenterTopView.m

@@ -0,0 +1,283 @@
+//
+//  ASUserCenterTopView.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/15.
+//
+
+#import "ASUserCenterTopView.h"
+#import "ASUserAvaterView.h"
+#import "ASUserBaseInfoView.h"
+
+@interface ASUserCenterTopView ()
+
+@property (nonatomic, strong) UIView *bgV;
+@property (nonatomic, strong) ASUserAvaterView *bgAvaterV;
+@property (nonatomic, strong) ASUserBaseInfoView *userInfoV;
+
+@property (nonatomic, strong) UIButton *settingBt;
+
+@property (nonatomic,strong) UIView *vipContentV;
+
+@property (nonatomic,strong) UIView *vipLineV1;
+@property (nonatomic,strong) UIView *vipLineV2;
+@property (nonatomic,strong) UIView *vipPointV1;
+@property (nonatomic,strong) UIView *vipPointV2;
+
+@property (nonatomic,strong) UIImageView *currentVipTipV;
+@property (nonatomic,strong) UIImageView *vipLevel1;
+@property (nonatomic,strong) UIImageView *vipLevel2;
+@property (nonatomic,strong) UILabel *vipDesLb;
+
+
+
+
+@end
+
+@implementation ASUserCenterTopView
+
+- (void)setDemoData {
+    [self.bgAvaterV setUserHeadV:@"" uName:@"new"];
+    [self.bgAvaterV setBorderColor:[UIColor clearColor] width:0];
+    self.backgroundColor = _F0F0F0;
+}
+
+- (void)settingAction {
+    if (self.settingBlock) {
+        self.settingBlock();
+    }
+}
+
+
+// MARK: - SubUI
+
+- (instancetype)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:CGRectMake(0, 0, KScreenWidth, 226)];
+    if (self) {
+        self.backgroundColor = UIColor.clearColor;
+        [self loadSubV];
+        [self setDemoData];
+    }
+    return self;
+}
+
+- (void)loadSubV {
+    self.backgroundColor = Col_FFF;
+    [self addSubview:self.bgV];
+    self.bgV.backgroundColor = _F8F8F8;
+    self.bgV.frame = CGRectMake(10, 10, KScreenWidth-20, 206);
+    UIVisualEffectView *blurV = [UIView getBlurV:self.bgV.bounds];
+    blurV.alpha = 0.95;
+    [self.bgV addSubview:self.bgAvaterV];
+    [self.bgAvaterV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self.bgV);
+    }];
+    [self.bgV addSubview:blurV];
+    [self.bgV addSubview:self.userInfoV];
+    [self.bgV addSubview:self.settingBt];
+    [self.bgV addSubview:self.vipContentV];
+    
+    [self.bgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.leading.equalTo(self).offset(10);
+        make.bottom.trailing.equalTo(self).offset(-10);
+        make.height.equalTo(@206);
+    }];
+    
+    [self.userInfoV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.leading.equalTo(self.bgV).offset(10);
+        make.trailing.equalTo(self.bgV).offset(-10);
+        make.height.equalTo(@100);
+    }];
+    [self.settingBt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.bgV).offset(10);
+        make.trailing.equalTo(self.bgV).offset(-10);
+        make.width.height.equalTo(@24);
+    }];
+    
+    [self.vipContentV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.userInfoV.mas_bottom).offset(20);
+        make.bottom.equalTo(self.bgV).offset(-20);
+        make.leading.equalTo(self.userInfoV);
+        make.width.equalTo(self.userInfoV);
+    }];
+    // vip
+    [self.vipContentV addSubview:self.vipDesLb];
+    [self.vipContentV addSubview:self.vipLineV1];
+    [self.vipContentV addSubview:self.vipLineV2];
+    [self.vipContentV addSubview:self.vipPointV1];
+    [self.vipContentV addSubview:self.vipPointV2];
+    [self.vipContentV addSubview:self.currentVipTipV];
+    [self.vipContentV addSubview:self.vipLevel1];
+    [self.vipContentV addSubview:self.vipLevel2];
+    
+    [self.vipDesLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.vipContentV).offset(0);
+        make.right.equalTo(self.vipContentV).offset(0);
+        make.top.equalTo(self.vipContentV).offset(0);
+        make.height.equalTo(@14);
+    }];
+    
+    [self.vipLineV1 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.vipContentV).offset(0);
+        make.right.equalTo(self.vipContentV).offset(0);
+        make.top.equalTo(self.vipDesLb.mas_bottom).offset(17);
+        make.height.equalTo(@2);
+    }];
+    [self.vipLineV2 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.trailing.equalTo(self.vipLineV1);
+        make.centerY.equalTo(self.vipLineV1);
+        make.width.equalTo(self.vipLineV1.mas_width).multipliedBy(0.68);
+        make.height.equalTo(self.vipLineV1);
+    }];
+    
+    [self.vipPointV1 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.centerX.equalTo(self.vipLineV2.mas_left);
+        make.centerY.equalTo(self.vipLineV1);
+        make.width.height.equalTo(@10);
+    }];
+    [self.vipPointV2 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.equalTo(self.vipLineV2.mas_right);
+        make.centerY.equalTo(self.vipLineV1);
+        make.width.height.equalTo(@10);
+    }];
+    
+    [self.currentVipTipV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.equalTo(self.vipPointV1.mas_top);
+        make.centerX.equalTo(self.vipPointV1);
+        make.width.equalTo(@10);
+        make.height.equalTo(@8);
+    }];
+    
+    [self.vipLevel1 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.vipPointV1.mas_bottom).offset(5);
+        make.trailing.equalTo(self.vipPointV1);
+        make.width.equalTo(@35);
+        make.height.equalTo(@20);
+    }];
+    [self.vipLevel2 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.trailing.equalTo(self.vipPointV2);
+        make.centerY.equalTo(self.vipLevel1);
+        make.width.equalTo(@35);
+        make.height.equalTo(@20);
+    }];
+    
+    
+    
+}
+
+- (UIView *)bgV {
+    if (!_bgV) {
+        UIView *v = [UIView baseV];
+        v.layer.cornerRadius = 8;
+        v.layer.masksToBounds = true;
+        _bgV = v;
+    }
+    return _bgV;
+}
+
+- (ASUserAvaterView *)bgAvaterV {
+    if (!_bgAvaterV) {
+        ASUserAvaterView *v = [[ASUserAvaterView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth-20, 206)];
+        _bgAvaterV = v;
+    }
+    return _bgAvaterV;
+}
+
+- (ASUserBaseInfoView *)userInfoV {
+    if (!_userInfoV) {
+        ASUserBaseInfoView *v = [[ASUserBaseInfoView alloc] initWithFrame:CGRectZero];
+        _userInfoV = v;
+    }
+    return _userInfoV;
+}
+
+- (UIButton *)settingBt {
+    if (!_settingBt) {
+        UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
+        [bt setImage:[UIImage imageNamed:@"uc_setting"] forState:UIControlStateNormal];
+        [bt addTarget:self action:@selector(settingAction) forControlEvents:UIControlEventTouchUpInside];
+        _settingBt = bt;
+    }
+    return _settingBt;
+}
+
+
+// MARK: vip等级
+- (UIImageView *)vipLevel1 {
+    if (!_vipLevel1) {
+        _vipLevel1 = [UIView baseImgV];
+        _vipLevel1.image = [UIImage imageNamed:@"vip_1"];
+    }
+    return _vipLevel1;
+}
+-(UIImageView *)vipLevel2 {
+    if (!_vipLevel2) {
+        _vipLevel2 = [UIView baseImgV];
+        _vipLevel2.image = [UIImage imageNamed:@"vip_2"];
+    }
+    return _vipLevel2;
+}
+
+- (UILabel *)vipDesLb {
+    if (!_vipDesLb) {
+        UILabel *lb = [UIView baseLb];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.text = @"Growth Value 7220/10000";
+        lb.textAlignment = NSTextAlignmentLeft;
+        _vipDesLb = lb;
+    }
+    return _vipDesLb;
+}
+
+-(UIView *)vipLineV1 {
+    if (!_vipLineV1) {
+        _vipLineV1 = [UIView baseV];
+        _vipLineV1.backgroundColor = [UIColor blackColor];
+    }
+    return _vipLineV1;
+}
+-(UIView *)vipLineV2 {
+    if (!_vipLineV2) {
+        _vipLineV2 = [UIView baseV];
+        _vipLineV2.backgroundColor = Col_FFF;
+    }
+    return _vipLineV2;
+}
+
+-(UIView *)vipPointV1 {
+    if (!_vipPointV1) {
+        _vipPointV1 = [UIView baseV];
+        _vipPointV1.backgroundColor = UIColor.blackColor;
+        _vipPointV1.layer.cornerRadius = 5;
+        _vipPointV1.layer.masksToBounds = true;
+    }
+    return _vipPointV1;
+}
+
+-(UIView *)vipPointV2 {
+    if (!_vipPointV2) {
+        _vipPointV2 = [UIView baseV];
+        _vipPointV2.backgroundColor = UIColor.blackColor;
+        _vipPointV2.layer.cornerRadius = 5;
+        _vipPointV2.layer.masksToBounds = true;
+    }
+    return _vipPointV2;
+}
+
+-(UIView *)vipContentV {
+    if (!_vipContentV) {
+        _vipContentV = [UIView baseV];
+        _vipContentV.backgroundColor = UIColor.clearColor;
+    }
+    return _vipContentV;
+}
+
+-(UIImageView *)currentVipTipV {
+    if (!_currentVipTipV) {
+        _currentVipTipV = [UIView baseImgV];
+        _currentVipTipV.image = [UIImage imageNamed:@"mine_current_position"];
+    }
+    return _currentVipTipV;
+}
+
+@end

+ 16 - 0
Asteria/Fuction/UserCenter/ASUserCenterViewController.h

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

+ 55 - 0
Asteria/Fuction/UserCenter/ASUserCenterViewController.m

@@ -0,0 +1,55 @@
+//
+//  ASUserCenterViewController.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/15.
+//
+
+#import "ASUserCenterViewController.h"
+#import "ASUserCenterTableHeadView.h"
+
+@interface ASUserCenterViewController ()
+
+@property (nonatomic,strong) UITableView *tableV;
+
+@property (nonatomic,strong) ASUserCenterTableHeadView *tableHeadV;
+
+@end
+
+@implementation ASUserCenterViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    [self.view addSubview:self.tableV];
+    [self.tableV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.customNavBar.mas_bottom);
+        make.leading.trailing.equalTo(self.view);
+        make.bottom.equalTo(self.view);
+    }];
+    
+    [self.tableHeadV.signV configDayArr:4 currentDay:7 status:false];
+    
+}
+
+
+
+- (ASUserCenterTableHeadView *)tableHeadV {
+    if (!_tableHeadV) {
+        ASUserCenterTableHeadView *v = [[ASUserCenterTableHeadView alloc] initWithFrame:CGRectZero];
+        
+        _tableHeadV = v;
+    }
+    return _tableHeadV;
+}
+
+- (UITableView *)tableV {
+    if (!_tableV) {
+        UITableView *v = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
+        v.tableHeaderView = self.tableHeadV;
+        _tableV = v;
+    }
+    return _tableV;
+}
+
+@end

+ 16 - 0
Asteria/Fuction/UserCenter/Target_userCenter.h

@@ -0,0 +1,16 @@
+//
+//  Target_userCenter.h
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface Target_userCenter : NSObject
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 18 - 0
Asteria/Fuction/UserCenter/Target_userCenter.m

@@ -0,0 +1,18 @@
+//
+//  Target_userCenter.m
+//  Asteria
+//
+//  Created by iOS on 2023/5/16.
+//
+
+#import "Target_userCenter.h"
+#import "ASUserCenterViewController.h"
+
+@implementation Target_userCenter
+
+- (UIViewController *)Action_getUserCenterVc:(NSDictionary *)params {
+    ASUserCenterViewController *vc = [[ASUserCenterViewController alloc] init];
+    return  vc;
+}
+
+@end

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

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

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

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

+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_VIPCenter.imageset/Contents.json

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

BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_VIPCenter.imageset/VIP@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_VIPCenter.imageset/VIP@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_coupons.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/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_coupons.imageset/优惠券@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_coupons.imageset/优惠券@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_giftcard.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/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_giftcard.imageset/礼品卡@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_giftcard.imageset/礼品卡@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_message.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/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_message.imageset/消息@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_message.imageset/消息@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_points.imageset/Contents.json

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

BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_points.imageset/组 10840@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_points.imageset/组 10840@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_service.imageset/Contents.json

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

BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_service.imageset/组 10835@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/enterItem/uc_service.imageset/组 10835@3x.png


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

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

+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/mine_current_position.imageset/Contents.json

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

BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/mine_current_position.imageset/多边形 1@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/mine_current_position.imageset/多边形 1@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_more.imageset/Contents.json

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

BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_more.imageset/组 8430@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_more.imageset/组 8430@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_setting.imageset/Contents.json

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

BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_setting.imageset/组 10842@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/ucHome/uc_setting.imageset/组 10842@3x.png


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

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

+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_1.imageset/Contents.json

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

BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_1.imageset/组 10924@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_1.imageset/组 10924@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_2.imageset/Contents.json

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

BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_2.imageset/组 10925@2x.png


BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_2.imageset/组 10925@3x.png


+ 22 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_3.imageset/Contents.json

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

BIN
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_3.imageset/组 10926@2x.png


+ 0 - 0
Asteria/Fuction/UserCenter/UserCenter.xcassets/vipIcon/uc_vip_level_3.imageset/组 10926@3x.png


Деякі файли не було показано, через те що забагато файлів було змінено