Forráskód Böngészése

个人中心页面开发

iOS-Abel 2 éve
szülő
commit
a7328589ec

+ 70 - 0
Asteria.xcodeproj/project.pbxproj

@@ -120,6 +120,12 @@
 		81C796272A4FD898003083B8 /* ASBirthdayTreatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C796262A4FD898003083B8 /* ASBirthdayTreatViewController.m */; };
 		81C796272A4FD898003083B8 /* ASBirthdayTreatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C796262A4FD898003083B8 /* ASBirthdayTreatViewController.m */; };
 		81C7962B2A539E80003083B8 /* ASMessageListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C7962A2A539E80003083B8 /* ASMessageListViewController.m */; };
 		81C7962B2A539E80003083B8 /* ASMessageListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C7962A2A539E80003083B8 /* ASMessageListViewController.m */; };
 		81C7962E2A539F4D003083B8 /* ASMessageListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C7962D2A539F4D003083B8 /* ASMessageListCell.m */; };
 		81C7962E2A539F4D003083B8 /* ASMessageListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C7962D2A539F4D003083B8 /* ASMessageListCell.m */; };
+		81C796342A551643003083B8 /* ASSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C796332A551643003083B8 /* ASSettingViewController.m */; };
+		81C796372A5517B0003083B8 /* ASSettingListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C796362A5517B0003083B8 /* ASSettingListCell.m */; };
+		81C7963A2A5517F7003083B8 /* KWSwitchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C796392A5517F7003083B8 /* KWSwitchButton.m */; };
+		81C7963F2A551FB0003083B8 /* ASInfomationSetController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C7963E2A551FB0003083B8 /* ASInfomationSetController.m */; };
+		81C796422A551FE9003083B8 /* KWTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C796402A551FE9003083B8 /* KWTextField.m */; };
+		81C796462A5542B2003083B8 /* ASHelpListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C796452A5542B2003083B8 /* ASHelpListViewController.m */; };
 		81DFA5592A4681E900DA708B /* ASPointEranCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DFA5582A4681E900DA708B /* ASPointEranCell.m */; };
 		81DFA5592A4681E900DA708B /* ASPointEranCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DFA5582A4681E900DA708B /* ASPointEranCell.m */; };
 		81DFA55D2A46C46D00DA708B /* ASWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DFA55C2A46C46D00DA708B /* ASWebViewController.m */; };
 		81DFA55D2A46C46D00DA708B /* ASWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DFA55C2A46C46D00DA708B /* ASWebViewController.m */; };
 		81DFA5602A46CC8E00DA708B /* CTMediator+ASWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DFA55F2A46CC8E00DA708B /* CTMediator+ASWebView.m */; };
 		81DFA5602A46CC8E00DA708B /* CTMediator+ASWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81DFA55F2A46CC8E00DA708B /* CTMediator+ASWebView.m */; };
@@ -453,6 +459,18 @@
 		81C7962A2A539E80003083B8 /* ASMessageListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASMessageListViewController.m; sourceTree = "<group>"; };
 		81C7962A2A539E80003083B8 /* ASMessageListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASMessageListViewController.m; sourceTree = "<group>"; };
 		81C7962C2A539F4D003083B8 /* ASMessageListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASMessageListCell.h; sourceTree = "<group>"; };
 		81C7962C2A539F4D003083B8 /* ASMessageListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASMessageListCell.h; sourceTree = "<group>"; };
 		81C7962D2A539F4D003083B8 /* ASMessageListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASMessageListCell.m; sourceTree = "<group>"; };
 		81C7962D2A539F4D003083B8 /* ASMessageListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASMessageListCell.m; sourceTree = "<group>"; };
+		81C796322A551643003083B8 /* ASSettingViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASSettingViewController.h; sourceTree = "<group>"; };
+		81C796332A551643003083B8 /* ASSettingViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASSettingViewController.m; sourceTree = "<group>"; };
+		81C796352A5517B0003083B8 /* ASSettingListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASSettingListCell.h; sourceTree = "<group>"; };
+		81C796362A5517B0003083B8 /* ASSettingListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASSettingListCell.m; sourceTree = "<group>"; };
+		81C796382A5517F7003083B8 /* KWSwitchButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWSwitchButton.h; sourceTree = "<group>"; };
+		81C796392A5517F7003083B8 /* KWSwitchButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWSwitchButton.m; sourceTree = "<group>"; };
+		81C7963D2A551FB0003083B8 /* ASInfomationSetController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASInfomationSetController.h; sourceTree = "<group>"; };
+		81C7963E2A551FB0003083B8 /* ASInfomationSetController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASInfomationSetController.m; sourceTree = "<group>"; };
+		81C796402A551FE9003083B8 /* KWTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWTextField.m; sourceTree = "<group>"; };
+		81C796412A551FE9003083B8 /* KWTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWTextField.h; sourceTree = "<group>"; };
+		81C796442A5542B2003083B8 /* ASHelpListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASHelpListViewController.h; sourceTree = "<group>"; };
+		81C796452A5542B2003083B8 /* ASHelpListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASHelpListViewController.m; sourceTree = "<group>"; };
 		81DFA5572A4681E900DA708B /* ASPointEranCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASPointEranCell.h; sourceTree = "<group>"; };
 		81DFA5572A4681E900DA708B /* ASPointEranCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASPointEranCell.h; sourceTree = "<group>"; };
 		81DFA5582A4681E900DA708B /* ASPointEranCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASPointEranCell.m; sourceTree = "<group>"; };
 		81DFA5582A4681E900DA708B /* ASPointEranCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASPointEranCell.m; sourceTree = "<group>"; };
 		81DFA55B2A46C46D00DA708B /* ASWebViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASWebViewController.h; sourceTree = "<group>"; };
 		81DFA55B2A46C46D00DA708B /* ASWebViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ASWebViewController.h; sourceTree = "<group>"; };
@@ -1151,9 +1169,51 @@
 			path = Message;
 			path = Message;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		81C796312A55159B003083B8 /* Setting */ = {
+			isa = PBXGroup;
+			children = (
+				81C796322A551643003083B8 /* ASSettingViewController.h */,
+				81C796332A551643003083B8 /* ASSettingViewController.m */,
+				81C7963D2A551FB0003083B8 /* ASInfomationSetController.h */,
+				81C7963E2A551FB0003083B8 /* ASInfomationSetController.m */,
+				81C796442A5542B2003083B8 /* ASHelpListViewController.h */,
+				81C796452A5542B2003083B8 /* ASHelpListViewController.m */,
+				81C7963C2A551F86003083B8 /* view */,
+			);
+			path = Setting;
+			sourceTree = "<group>";
+		};
+		81C7963B2A5517FE003083B8 /* switchBtn */ = {
+			isa = PBXGroup;
+			children = (
+				81C796382A5517F7003083B8 /* KWSwitchButton.h */,
+				81C796392A5517F7003083B8 /* KWSwitchButton.m */,
+			);
+			path = switchBtn;
+			sourceTree = "<group>";
+		};
+		81C7963C2A551F86003083B8 /* view */ = {
+			isa = PBXGroup;
+			children = (
+				81C796352A5517B0003083B8 /* ASSettingListCell.h */,
+				81C796362A5517B0003083B8 /* ASSettingListCell.m */,
+			);
+			path = view;
+			sourceTree = "<group>";
+		};
+		81C796432A551FF0003083B8 /* textField */ = {
+			isa = PBXGroup;
+			children = (
+				81C796412A551FE9003083B8 /* KWTextField.h */,
+				81C796402A551FE9003083B8 /* KWTextField.m */,
+			);
+			path = textField;
+			sourceTree = "<group>";
+		};
 		81D484DD2A0F40510075DC43 /* UserCenter */ = {
 		81D484DD2A0F40510075DC43 /* UserCenter */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				81C796312A55159B003083B8 /* Setting */,
 				81C796282A539E65003083B8 /* Message */,
 				81C796282A539E65003083B8 /* Message */,
 				81E5EE8D2A498FA20075695F /* VipCenter */,
 				81E5EE8D2A498FA20075695F /* VipCenter */,
 				81DFA5722A47D91400DA708B /* ConponsAndGiftCard */,
 				81DFA5722A47D91400DA708B /* ConponsAndGiftCard */,
@@ -1215,6 +1275,8 @@
 		81E257EF2A12093A004EEF71 /* CustomView */ = {
 		81E257EF2A12093A004EEF71 /* CustomView */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				81C796432A551FF0003083B8 /* textField */,
+				81C7963B2A5517FE003083B8 /* switchBtn */,
 				81E257FE2A1235D1004EEF71 /* CutomBottomBar */,
 				81E257FE2A1235D1004EEF71 /* CutomBottomBar */,
 				81E257FA2A1233F1004EEF71 /* EnterItemV */,
 				81E257FA2A1233F1004EEF71 /* EnterItemV */,
 				81E257F02A120952004EEF71 /* UserInfoV */,
 				81E257F02A120952004EEF71 /* UserInfoV */,
@@ -1955,6 +2017,7 @@
 				819900222A020A6F006FE68C /* LYTools.m in Sources */,
 				819900222A020A6F006FE68C /* LYTools.m in Sources */,
 				816020072A2DD4FB00E4A8F1 /* Target_Home.m in Sources */,
 				816020072A2DD4FB00E4A8F1 /* Target_Home.m in Sources */,
 				816020132A2EE5A200E4A8F1 /* ASCategaryCollectCell.m in Sources */,
 				816020132A2EE5A200E4A8F1 /* ASCategaryCollectCell.m in Sources */,
+				81C796422A551FE9003083B8 /* KWTextField.m in Sources */,
 				9AD346012A08D60F005CA070 /* ZFFloatView.m in Sources */,
 				9AD346012A08D60F005CA070 /* ZFFloatView.m in Sources */,
 				9AD345F92A08D60F005CA070 /* ZFPlayerController.m in Sources */,
 				9AD345F92A08D60F005CA070 /* ZFPlayerController.m in Sources */,
 				9AD345AC2A08D59A005CA070 /* WKM_goodsBanner.m in Sources */,
 				9AD345AC2A08D59A005CA070 /* WKM_goodsBanner.m in Sources */,
@@ -1982,6 +2045,7 @@
 				9AD346022A08D60F005CA070 /* ZFPlayerView.m in Sources */,
 				9AD346022A08D60F005CA070 /* ZFPlayerView.m in Sources */,
 				81DFA55D2A46C46D00DA708B /* ASWebViewController.m in Sources */,
 				81DFA55D2A46C46D00DA708B /* ASWebViewController.m in Sources */,
 				81BEA6832A2D7CF3009D36C4 /* UITableView+ASBase.m in Sources */,
 				81BEA6832A2D7CF3009D36C4 /* UITableView+ASBase.m in Sources */,
+				81C7963A2A5517F7003083B8 /* KWSwitchButton.m in Sources */,
 				81717C992A3BF1DD00648139 /* ASHomeAlertWindow.m in Sources */,
 				81717C992A3BF1DD00648139 /* ASHomeAlertWindow.m in Sources */,
 				81C7962B2A539E80003083B8 /* ASMessageListViewController.m in Sources */,
 				81C7962B2A539E80003083B8 /* ASMessageListViewController.m in Sources */,
 				81C3B44429F6612800D79294 /* ASBaseViewController.m in Sources */,
 				81C3B44429F6612800D79294 /* ASBaseViewController.m in Sources */,
@@ -1993,18 +2057,21 @@
 				81717D132A3C4AE000648139 /* KWSearchViewController.m in Sources */,
 				81717D132A3C4AE000648139 /* KWSearchViewController.m in Sources */,
 				9AD6A5442A1218E8001DE3D9 /* PassWordSecureBtnV.m in Sources */,
 				9AD6A5442A1218E8001DE3D9 /* PassWordSecureBtnV.m in Sources */,
 				811F42462A40533C00DA68F1 /* ASPointsHomeViewController.m in Sources */,
 				811F42462A40533C00DA68F1 /* ASPointsHomeViewController.m in Sources */,
+				81C796372A5517B0003083B8 /* ASSettingListCell.m in Sources */,
 				81717D392A3D322700648139 /* KWCustomLayout.m in Sources */,
 				81717D392A3D322700648139 /* KWCustomLayout.m in Sources */,
 				81DFA5602A46CC8E00DA708B /* CTMediator+ASWebView.m in Sources */,
 				81DFA5602A46CC8E00DA708B /* CTMediator+ASWebView.m in Sources */,
 				81C3B44A29F6661500D79294 /* ASBaseNavController.m in Sources */,
 				81C3B44A29F6661500D79294 /* ASBaseNavController.m in Sources */,
 				9AD3460C2A08D60F005CA070 /* ZFVolumeBrightnessView.m in Sources */,
 				9AD3460C2A08D60F005CA070 /* ZFVolumeBrightnessView.m in Sources */,
 				81DFA5752A47D97C00DA708B /* ASCouponsListViewController.m in Sources */,
 				81DFA5752A47D97C00DA708B /* ASCouponsListViewController.m in Sources */,
 				9AD346072A08D60F005CA070 /* UIViewController+ZFPlayerRotation.m in Sources */,
 				9AD346072A08D60F005CA070 /* UIViewController+ZFPlayerRotation.m in Sources */,
+				81C796462A5542B2003083B8 /* ASHelpListViewController.m in Sources */,
 				8160200D2A2DD5C000E4A8F1 /* CTMediator+UserCenter.m in Sources */,
 				8160200D2A2DD5C000E4A8F1 /* CTMediator+UserCenter.m in Sources */,
 				81DFA5712A46D95400DA708B /* ASPointDetailCell.m in Sources */,
 				81DFA5712A46D95400DA708B /* ASPointDetailCell.m in Sources */,
 				9ACBEC2B2A14CCA300A8F97A /* ThirdPartService.m in Sources */,
 				9ACBEC2B2A14CCA300A8F97A /* ThirdPartService.m in Sources */,
 				81C3265F2A36B284002EF442 /* ASProductListViewController.m in Sources */,
 				81C3265F2A36B284002EF442 /* ASProductListViewController.m in Sources */,
 				9AD346142A08D60F005CA070 /* ZFSpeedLoadingView.m in Sources */,
 				9AD346142A08D60F005CA070 /* ZFSpeedLoadingView.m in Sources */,
 				81E5EE902A498FC90075695F /* ASVipCenterViewController.m in Sources */,
 				81E5EE902A498FC90075695F /* ASVipCenterViewController.m in Sources */,
+				81C7963F2A551FB0003083B8 /* ASInfomationSetController.m in Sources */,
 				9AD346062A08D60F005CA070 /* ZFReachabilityManager.m in Sources */,
 				9AD346062A08D60F005CA070 /* ZFReachabilityManager.m in Sources */,
 				81717CA52A3C0A5000648139 /* KWProductFilterItemCell.m in Sources */,
 				81717CA52A3C0A5000648139 /* KWProductFilterItemCell.m in Sources */,
 				9AD345FE2A08D60F005CA070 /* UIScrollView+ZFPlayer.m in Sources */,
 				9AD345FE2A08D60F005CA070 /* UIScrollView+ZFPlayer.m in Sources */,
@@ -2041,6 +2108,7 @@
 				81DFA5672A46D60900DA708B /* ASPointDetailViewController.m in Sources */,
 				81DFA5672A46D60900DA708B /* ASPointDetailViewController.m in Sources */,
 				81601FF62A2DC78300E4A8F1 /* WMZBannerFlowLayout.m in Sources */,
 				81601FF62A2DC78300E4A8F1 /* WMZBannerFlowLayout.m in Sources */,
 				814F5CF52A11B37E003847A9 /* ASUserAvaterView.m in Sources */,
 				814F5CF52A11B37E003847A9 /* ASUserAvaterView.m in Sources */,
+				81C796342A551643003083B8 /* ASSettingViewController.m in Sources */,
 				81354C0B2A289C350082C93A /* KWTimeEndView.m in Sources */,
 				81354C0B2A289C350082C93A /* KWTimeEndView.m in Sources */,
 				9AD346032A08D60F005CA070 /* ZFPortraitViewController.m in Sources */,
 				9AD346032A08D60F005CA070 /* ZFPortraitViewController.m in Sources */,
 				81354BED2A287AB50082C93A /* KWMineHomeOrderHeadView.m in Sources */,
 				81354BED2A287AB50082C93A /* KWMineHomeOrderHeadView.m in Sources */,
@@ -2236,6 +2304,7 @@
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 				INFOPLIST_KEY_UIMainStoryboardFile = "";
 				INFOPLIST_KEY_UIMainStoryboardFile = "";
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
+				INFOPLIST_KEY_UIUserInterfaceStyle = Light;
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
@@ -2267,6 +2336,7 @@
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 				INFOPLIST_KEY_UIMainStoryboardFile = "";
 				INFOPLIST_KEY_UIMainStoryboardFile = "";
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
+				INFOPLIST_KEY_UIUserInterfaceStyle = Light;
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",

+ 24 - 0
Asteria/ASUI/CustomView/switchBtn/KWSwitchButton.h

@@ -0,0 +1,24 @@
+//
+//  KWSwitchButton.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/23.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWSwitchButton : UIView
+
+@property (nonatomic, strong) UIColor *openColor;
+@property (nonatomic, strong) UIColor *closeColor;
+@property (nonatomic, strong) UIColor *circleColor;
+
+@property (nonatomic, copy, nullable) void(^clickBack)(void);
+
+- (void)setIsOpen:(BOOL)isOpen animate:(BOOL)animate;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 144 - 0
Asteria/ASUI/CustomView/switchBtn/KWSwitchButton.m

@@ -0,0 +1,144 @@
+//
+//  KWSwitchButton.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/23.
+//
+
+#import "KWSwitchButton.h"
+
+@interface KWSwitchButton ()
+
+@property (nonatomic, assign) BOOL isOpen;
+
+@property (nonatomic, strong) UIButton *btn;
+@property (nonatomic, strong) UIView *circleV;
+
+@end
+
+@implementation KWSwitchButton
+
+- (void)setIsOpen:(BOOL)isOpen animate:(BOOL)animate {
+    self.isOpen = isOpen;
+    [self setStatus:isOpen animate:animate];
+    
+}
+
+-(void)setCloseColor:(UIColor *)closeColor {
+    _closeColor = closeColor;
+    if (!self.isOpen) {
+        self.backgroundColor = closeColor;
+    }
+}
+- (void)setOpenColor:(UIColor *)openColor {
+    _openColor = openColor;
+    if (self.isOpen) {
+        self.backgroundColor = openColor;
+    }
+}
+
+- (void)setCircleColor:(UIColor *)circleColor {
+    _circleColor = circleColor;
+    self.circleV.backgroundColor = circleColor;
+}
+
+
+- (void)setStatus:(BOOL)flag animate:(BOOL)animated {
+    if (!animated) {
+        self.backgroundColor = flag ? self.openColor : self.closeColor;
+        [self.circleV mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self).offset(2);
+            make.bottom.equalTo(self).offset(-2);
+            if (flag) {
+                make.right.equalTo(self).offset(-2);
+            } else {
+                make.left.equalTo(self).offset(2);
+            }
+            make.width.equalTo(self.circleV.mas_height).multipliedBy(1);
+        }];
+        return;
+    }
+    [UIView animateWithDuration:(NSTimeInterval)(0.25) animations:^{
+        self.backgroundColor = flag ? self.openColor : self.closeColor;
+        CGRect rect = self.circleV.frame;
+        if (flag) {
+            rect.origin.x = self.bounds.size.width - 2 - (self.bounds.size.height-4);
+        } else {
+            rect.origin.x = 2;
+        }
+        self.circleV.frame = rect;
+    } completion:^(BOOL finished) {
+        self.backgroundColor = flag ? self.openColor : self.closeColor;
+        [self.circleV mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.equalTo(self).offset(2);
+            make.bottom.equalTo(self).offset(-2);
+            if (flag) {
+                make.right.equalTo(self).offset(-2);
+            } else {
+                make.left.equalTo(self).offset(2);
+            }
+            make.width.equalTo(self.circleV.mas_height).multipliedBy(1);
+        }];
+    }];
+}
+ 
+
+- (instancetype)init {
+    self = [super init];
+    if (self) {
+        self.frame = CGRectMake(0, 0, 60, 32);
+        self.closeColor = [UIColor colorWithHexString:@"#E5E5E5"];
+        self.openColor = [UIColor colorWithHexString:@"#FFDEE2"];
+        self.circleColor = [UIColor whiteColor];
+        self.backgroundColor = _openColor;
+        self.layer.cornerRadius = 16;
+        self.layer.masksToBounds = true;
+        
+        [self configSubV];
+        
+        self.circleV.layer.cornerRadius = 14;
+        self.isOpen = true;
+    }
+    return self;
+}
+
+- (void)configSubV {
+    [self addSubview:self.circleV];
+    [self addSubview:self.btn];
+    
+    [self.circleV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self).offset(2);
+        make.right.bottom.equalTo(self).offset(-2);
+        make.width.equalTo(self.circleV.mas_height).multipliedBy(1);
+    }];
+    [self.btn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.edges.equalTo(self);
+    }];
+}
+
+- (UIButton *)btn {
+    if (!_btn) {
+        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
+        [btn addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside];
+        _btn = btn;
+    }
+    return  _btn;
+}
+
+- (void)btnAction {
+//    self.isOpen = !self.isOpen;
+    if (self.clickBack) {
+        self.clickBack();
+    }
+}
+
+- (UIView *)circleV {
+    if (!_circleV) {
+        UIView *v = [[UIView alloc] init];
+        v.layer.masksToBounds = true;
+        _circleV = v;
+    }
+    return  _circleV;
+}
+
+@end

+ 31 - 0
Asteria/ASUI/CustomView/textField/KWTextField.h

@@ -0,0 +1,31 @@
+//
+//  KWTextField.h
+//  westkissMob
+//
+//  Created by iOS on 2022/9/19.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KWTextField : UITextField
+
+@end
+
+@interface UIView(baseInit)
+
+// MARK: - base create
++ (UIView *)baseV ;
+
++ (UILabel *)baseLb ;
+
++ (UIImageView *)baseImgV ;
+
++ (UIStackView *)baseStackV:(BOOL)isVertical;
+
++ (UIImage *)snapshotWithView:(UIView *)view;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 75 - 0
Asteria/ASUI/CustomView/textField/KWTextField.m

@@ -0,0 +1,75 @@
+//
+//  KWTextField.m
+//  westkissMob
+//
+//  Created by iOS on 2022/9/19.
+//
+
+#import "KWTextField.h"
+
+@implementation KWTextField
+
+- (instancetype)init {
+    self = [super init];
+    if (self) {
+        [self setStyle];
+    }
+    return self;
+}
+
+- (void)setStyle {
+    self.borderStyle = UITextBorderStyleNone;
+    self.layer.borderColor = [[UIColor colorWithHexString:@"#000000"] CGColor];
+    self.layer.borderWidth = 1;
+    self.layer.cornerRadius = 4;
+    self.layer.masksToBounds = true;
+    self.backgroundColor = UIColor.whiteColor;
+    self.font = [UIFont fontWithName:Rob_Regular size:14];
+    self.textColor = [UIColor colorWithHexString:@"#0b0b0b"];
+    self.textAlignment = NSTextAlignmentCenter;
+}
+
+@end
+
+
+@implementation UIView(baseInit)
+
+// MARK: - base create
++ (UIView *)baseV {
+    UIView *v = [[UIView alloc] init];
+    v.backgroundColor = UIColor.whiteColor;
+    return v;
+}
+
++ (UILabel *)baseLb {
+    UILabel *lb = [[UILabel alloc] init];
+    lb.font = [UIFont fontWithName:Rob_Regular size:14];
+    lb.textColor = [UIColor blackColor];
+    lb.backgroundColor = [UIColor clearColor];
+    return lb;
+}
+
++ (UIImageView *)baseImgV {
+    UIImageView *imgV = [[UIImageView alloc] init];
+    imgV.contentMode = UIViewContentModeScaleAspectFit;
+    return imgV;
+}
+
++ (UIStackView *)baseStackV:(BOOL)isVertical {
+    UIStackView *stackV = [[UIStackView alloc] init];
+    stackV.axis = isVertical ? UILayoutConstraintAxisVertical : UILayoutConstraintAxisHorizontal;
+    stackV.spacing = 8;
+    stackV.alignment = UIStackViewAlignmentFill;
+    stackV.distribution = UIStackViewDistributionFill;
+    return stackV;
+}
+
++ (UIImage *)snapshotWithView:(UIView *)view {
+    UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
+    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
+    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
+    UIGraphicsEndImageContext();
+    return image;
+}
+
+@end

+ 18 - 0
Asteria/Fuction/UserCenter/Setting/ASHelpListViewController.h

@@ -0,0 +1,18 @@
+//
+//  ASHelpListViewController.h
+//  Asteria
+//
+//  Created by iOS on 2023/7/5.
+//
+
+#import "ASBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASHelpListViewController : ASBaseViewController
+
+@property (nonatomic, assign) BOOL isHelp;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 118 - 0
Asteria/Fuction/UserCenter/Setting/ASHelpListViewController.m

@@ -0,0 +1,118 @@
+//
+//  ASHelpListViewController.m
+//  Asteria
+//
+//  Created by iOS on 2023/7/5.
+//
+
+#import "ASHelpListViewController.h"
+#import "ASSettingListCell.h"
+
+@interface ASHelpListViewController ()<UITableViewDelegate,UITableViewDataSource>
+
+@property (nonatomic, strong) UITableView *tableV;
+
+//@property (nonatomic, strong) KWSettingLinkListViewModel *vm;
+
+
+@end
+
+@implementation ASHelpListViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    self.titleStr = self.isHelp ? @"Help & Support" : @"Customer Service";
+    [self setNavRightSearch:^{
+        
+    }];
+    
+    self.statusBgV.backgroundColor = Col_FFF;
+    self.customNavBar.backgroundColor = Col_FFF;
+    
+    [self loadSubVs];
+    
+    
+//    self.vm = [KWSettingLinkListViewModel new];
+    
+    [self configData];
+}
+
+- (void)configData {
+//    [MBProgressHUD showHUDAddedTo:self.view animated:true];
+//    if (self.isHelp) {
+//        @weakify(self);
+//        [self.vm getHelpListData:^{
+//            [MBProgressHUD hideHUDForView:weak_self.view animated:true];
+//            [weak_self.tableV reloadData];
+//        }];
+//    } else {
+//        @weakify(self);
+//        [self.vm getCusServeListData:^{
+//            [MBProgressHUD hideHUDForView:weak_self.view animated:true];
+//            [weak_self.tableV reloadData];
+//        }];
+//    }
+//
+
+    [self.tableV reloadData];
+}
+
+
+- (void)loadSubVs {
+    [self.view addSubview:self.tableV];
+    [self.tableV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.customNavBar.mas_bottom);
+        make.left.right.equalTo(self.view);
+        make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom);
+    }];
+}
+
+
+- (UITableView *)tableV {
+    if (!_tableV) {
+        UITableView *tabV = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
+        tabV.backgroundColor = [UIColor colorWithHexString:@"#F8F8F8"];
+        [tabV registerClass:[ASSettingListCell class] forCellReuseIdentifier:@"ASSettingListCell"];
+        tabV.delegate = self;
+        tabV.dataSource = self;
+        tabV.rowHeight = UITableViewAutomaticDimension;
+        tabV.estimatedRowHeight = 100;
+        tabV.separatorStyle = UITableViewCellSeparatorStyleNone;
+        UIView *v = [UIView new];
+        v.frame = CGRectMake(0, 0, KScreenWidth, 10);
+        v.backgroundColor = [UIColor colorWithHexString:@"#f8f8f8"];
+        tabV.tableHeaderView = v;
+        _tableV = tabV;
+    }
+    return _tableV;
+}
+
+- (void)toActiveVc:(NSString *)pageUrl title:(NSString *)tit {
+    [Fuction_Tool push_BaseWebUrl:pageUrl  webTitle:tit];
+}
+
+#pragma mark - UITableViewDelegate,UITableViewDataSource
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+//    if (![self checkLogin:true]) {
+//        return;
+//    }
+//    KWMineUrlLinkModel *linkM = self.vm.linkArr[indexPath.row];
+//    [self toActiveVc:linkM.url title:linkM.title];
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return 10;//self.vm.linkArr.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+   
+    ASSettingListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ASSettingListCell" forIndexPath:indexPath];
+//    KWMineUrlLinkModel *link = self.vm.linkArr[indexPath.row];
+//    [cell setTitle:link.title points:@"" enable:true];
+    [cell setTitle:@"Shipping & Delivery" points:@"" enable:true];
+    return  cell;
+}
+
+@end

+ 16 - 0
Asteria/Fuction/UserCenter/Setting/ASInfomationSetController.h

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

+ 434 - 0
Asteria/Fuction/UserCenter/Setting/ASInfomationSetController.m

@@ -0,0 +1,434 @@
+//
+//  ASInfomationSetController.m
+//  Asteria
+//
+//  Created by iOS on 2023/7/5.
+//
+
+#import "ASInfomationSetController.h"
+#import "KWTextField.h"
+#import <BRPickerView/BRPickerView.h>
+
+@interface ASInfomationSetController () <UITextFieldDelegate>
+
+/// 0: 只有邮箱   1: 邮箱加密码        2: 邮箱+验证码+密码  3 邮箱+验证码
+@property (nonatomic,assign) NSInteger showType;
+
+@property (nonatomic, strong) UIScrollView *scrollV;
+@property (nonatomic, strong) UIStackView *totalStackV;
+
+@property (nonatomic, strong) KWTextField *lastNTf;
+@property (nonatomic, strong) KWTextField *nameTf;
+@property (nonatomic, strong) KWTextField *birthTf;
+
+@property (nonatomic, strong) UIStackView *passStackV;
+
+@property (nonatomic, strong) UIButton *changePassBt;
+
+@property (nonatomic, strong) KWTextField *emailTf;
+@property (nonatomic, strong) KWTextField *oldPassTf;
+@property (nonatomic, strong) KWTextField *nPassTf;
+
+@property (nonatomic, strong) UIButton *bottomBt;
+
+
+@property (nonatomic, strong) NSDate *currentDate;
+
+//@property (nonatomic, strong) KWInfoSettingViewModel *vm;
+
+@end
+
+@implementation ASInfomationSetController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+//    self.vm = [KWInfoSettingViewModel new];
+    self.titleStr = @"Information";
+    [self setNavRightSearch:^{
+        
+    }];
+    
+    self.statusBgV.backgroundColor = Col_FFF;
+    self.customNavBar.backgroundColor = Col_FFF;
+    
+    [self loadSubVs];
+    
+    [self setData];
+    
+}
+
+- (void)setData {
+//    KWLoginedUserModel *m = [KWLoginedManager.shareInstance getCurrentLoginedUser];
+////    self.userModel = m;
+//    self.lastNTf.text = m.lastname;
+//    self.nameTf.text = m.firstname;
+//    self.currentDate = [NSDate dateWithString:m.dob format:@"yyyy-MM-dd HH:mm:ss"];
+//    self.birthTf.text = [self.currentDate stringWithFormat:@"MM/dd/yyyy"];
+    
+    self.showType = 0;
+    
+//    self.emailTf.text = m.email;
+    [self configViewsByShowType];
+    
+}
+
+- (void)loadSubVs {
+    
+    [self.view addSubview:self.scrollV];
+    
+    
+    UIStackView *tStackV = [[UIStackView alloc] init];
+    tStackV.axis = UILayoutConstraintAxisVertical;
+    tStackV.alignment = UIStackViewAlignmentFill;
+    tStackV.distribution = UIStackViewDistributionFill;
+    tStackV.spacing = 20;
+    self.totalStackV = tStackV;
+    
+    UIStackView *topStackV = [[UIStackView alloc] init];
+    topStackV.axis = UILayoutConstraintAxisHorizontal;
+    topStackV.alignment = UIStackViewAlignmentFill;
+    topStackV.distribution = UIStackViewDistributionFillEqually;
+    topStackV.spacing = 20;
+    [self.totalStackV addArrangedSubview:topStackV];
+    
+    NSArray *titles = @[@"First Name", @"Last Name", @"Date Of Birth"];
+    NSArray *placeHolders = @[@"Pleace Input Name", @"Pleace Input Last Name", @"Pleace Select Date Of Birth"];
+    for (int i = 0; i<titles.count; i++) {
+        UILabel *lb = [[UILabel alloc] init];
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.textColor = UIColor.blackColor;
+        KWTextField *tf = [[KWTextField alloc] init];
+        UIStackView *stackV = [[UIStackView alloc] init];
+        stackV.axis = UILayoutConstraintAxisVertical;
+        stackV.alignment = UIStackViewAlignmentFill;
+        stackV.distribution = UIStackViewDistributionFill;
+        stackV.spacing = 5;
+        [stackV addArrangedSubview:lb];
+        [stackV addArrangedSubview:tf];
+//        lb.text = titles[i];
+        tf.placeholder = placeHolders[i];
+        [lb mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.height.equalTo(@5);
+        }];
+        [tf mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.height.equalTo(@45);
+        }];
+        if (i == 0 || i == 1) {
+            [topStackV addArrangedSubview:stackV];
+        } else {
+            [self.totalStackV addArrangedSubview:stackV];
+        }
+        switch (i) {
+            case 0: {
+                self.nameTf = tf;
+                break;
+            }
+            case 1: {
+                self.lastNTf = tf;
+                break;
+            }
+            case 2: {
+                self.birthTf = tf;
+                break;
+            }
+            default:
+                break;
+        }
+    }
+    
+    UIStackView *pStackV = [[UIStackView alloc] init];
+    pStackV.axis = UILayoutConstraintAxisVertical;
+    pStackV.alignment = UIStackViewAlignmentFill;
+    pStackV.distribution = UIStackViewDistributionFillEqually;
+    pStackV.spacing = 20;
+    self.passStackV = pStackV;
+    
+    
+    NSArray *titleArr = @[@"Email",@"",@""];
+    NSArray *placeArr = @[@"Place Input Email",@"* OLD Password",@"* New Password"];
+    for (int i=0; i<titleArr.count; i++) {
+        KWTextField *tf = [[KWTextField alloc] init];
+        UIStackView *stackV = [[UIStackView alloc] init];
+        stackV.axis = UILayoutConstraintAxisVertical;
+        stackV.alignment = UIStackViewAlignmentFill;
+        stackV.distribution = UIStackViewDistributionFill;
+        stackV.spacing = 5;
+        if (![titleArr[i] isEqualToString:@""]) {
+            UILabel *lb = [[UILabel alloc] init];
+            lb.font = [UIFont fontWithName:Rob_Regular size:12];
+            lb.textColor = UIColor.blackColor;
+            [stackV addArrangedSubview:lb];
+//            lb.text = titleArr[i];
+            [lb mas_makeConstraints:^(MASConstraintMaker *make) {
+                make.height.equalTo(@5);
+            }];
+        }
+        [stackV addArrangedSubview:tf];
+        tf.placeholder = placeArr[i];
+        [tf mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.height.equalTo(@45);
+        }];
+        tf.delegate = self;
+        [tf addTarget:self action:@selector(textfieldDidChange:) forControlEvents:UIControlEventEditingChanged];
+        [tf addTarget:self action:@selector(textfieldDidChange:) forControlEvents:UIControlEventValueChanged];
+        
+        switch (i) {
+            case 0: {
+                self.emailTf = tf;
+                [self.totalStackV addArrangedSubview:stackV];
+                UIView *v = [UIView new];
+                v.backgroundColor = UIColor.clearColor;
+                [v addSubview:self.changePassBt];
+                [self.totalStackV addArrangedSubview:v];
+                [v mas_makeConstraints:^(MASConstraintMaker *make) {
+                    make.height.equalTo(@30);
+                }];
+                [self.changePassBt mas_makeConstraints:^(MASConstraintMaker *make) {
+                    make.top.left.bottom.equalTo(v);
+                }];
+                break;
+            }
+            case 1: {
+                self.oldPassTf = tf;
+                self.oldPassTf.secureTextEntry = true;
+                UIView *lv = [self getPassRightBt:800000];
+                self.oldPassTf.rightView = lv;
+                [lv mas_makeConstraints:^(MASConstraintMaker *make) {
+                    make.width.equalTo(@50);
+                    make.height.equalTo(@45);
+                }];
+                self.oldPassTf.rightViewMode = UITextFieldViewModeAlways;
+                [self.totalStackV addArrangedSubview:self.passStackV];
+                [self.passStackV addArrangedSubview:stackV];
+                break;
+            }
+            case 2: {
+                self.nPassTf = tf;
+                self.nPassTf.secureTextEntry = true;
+                
+                UIView *lv = [self getPassRightBt:800001];
+                lv.frame = CGRectMake(0, 0, 50, 45);
+                self.nPassTf.rightView = lv;
+                [lv mas_makeConstraints:^(MASConstraintMaker *make) {
+                    make.width.equalTo(@50);
+                    make.height.equalTo(@45);
+                }];
+                self.nPassTf.rightViewMode = UITextFieldViewModeAlways;
+                [self.passStackV addArrangedSubview:stackV];
+                break;
+            }
+            default:
+                break;
+        }
+    }
+    self.passStackV.hidden = true;
+    [self.scrollV addSubview:self.totalStackV];
+    [self.totalStackV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.scrollV).offset(20);
+        make.left.equalTo(self.scrollV).offset(20);
+        make.right.equalTo(self.view).offset(-20);
+        make.bottom.equalTo(self.scrollV).offset(20);
+        make.width.equalTo([NSNumber numberWithFloat:KScreenWidth-40]);
+    }];
+    
+    [self.view addSubview:self.bottomBt];
+    [self.bottomBt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.view).offset(20);
+        make.right.equalTo(self.view).offset(-20);
+        make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom).offset(-20);
+        make.height.equalTo(@45);
+    }];
+    
+    [self.scrollV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.equalTo(self.view);
+        make.top.equalTo(self.customNavBar.mas_bottom);
+        make.bottom.equalTo(self.bottomBt.mas_top).offset(-10);
+    }];
+    
+    self.birthTf.delegate = self;
+    
+}
+
+- (UIScrollView *)scrollV {
+    if (!_scrollV) {
+        UIScrollView *v = [[UIScrollView alloc] init];
+        v.showsVerticalScrollIndicator = false;
+        v.showsHorizontalScrollIndicator = false;
+        v.alwaysBounceVertical = true;
+        v.backgroundColor = [UIColor colorWithHexString:@"#f8f8f8"];
+        _scrollV = v;
+    }
+    return _scrollV;
+}
+
+- (UIButton *)changePassBt {
+    if (!_changePassBt) {
+        UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
+        [bt setImage:[UIImage imageNamed:@"login_selectRido"] forState:UIControlStateNormal];
+        [bt setImage:[UIImage imageNamed:@"login_selectRido_select"] forState:UIControlStateSelected];
+        [bt setTitle:@" Change Password" forState:UIControlStateNormal];
+        bt.titleLabel.font = [UIFont fontWithName:Rob_Regular size:12];
+        [bt setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
+        [bt addTarget:self action:@selector(changePassTypeChanege) forControlEvents:UIControlEventTouchUpInside];
+        _changePassBt = bt;
+    }
+    return  _changePassBt;
+}
+
+- (void)changePassTypeChanege {
+    switch (self.showType) {
+        case 0:
+            self.showType = 1;
+            break;
+        case 1:
+            self.showType = 0;
+            break;
+            
+        default:
+            break;
+    }
+    [self configViewsByShowType];
+    
+}
+
+- (void)configViewsByShowType {
+    switch (self.showType) {
+        case 0:
+            self.changePassBt.selected = false;
+            self.passStackV.hidden = true;
+            [self.bottomBt setTitle:@"SAVE CHANGES" forState:UIControlStateNormal];
+            break;
+        case 1:
+            self.changePassBt.selected = true;
+            self.passStackV.hidden = false;
+            [self.bottomBt setTitle:@"SAVE CHANGES" forState:UIControlStateNormal];
+            break;
+        default:
+            break;
+    }
+    [self configBtState];
+    
+}
+
+- (void)configBtState {
+    switch (self.showType) {
+        case 0:
+            self.bottomBt.enabled = !self.emailTf.text.isEmpty && !self.nameTf.text.isEmpty && !self.lastNTf.text.isEmpty && !self.birthTf.text.isEmpty;
+            break;
+        case 1: {
+            BOOL isflag = !self.emailTf.text.isEmpty && !self.oldPassTf.text.isEmpty && !self.nPassTf.text.isEmpty && !self.nameTf.text.isEmpty && !self.lastNTf.text.isEmpty && !self.birthTf.text.isEmpty;
+            self.bottomBt.enabled = isflag;
+            break;
+        }
+
+        default:
+            break;
+    }
+    self.bottomBt.backgroundColor = self.bottomBt.isEnabled ? [UIColor blackColor] : [UIColor colorWithHexString:@"#ADADAD"];
+}
+
+- (UIView *)getPassRightBt:(NSInteger)tag {
+    UIView *v = [UIView new];
+    v.backgroundColor = UIColor.whiteColor;
+    UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
+    [bt setImage:[UIImage imageNamed:@"login_password_secure"] forState:UIControlStateNormal];
+    [bt setImage:[UIImage imageNamed:@"login_password_secure_display"] forState:UIControlStateSelected];
+    [bt addTarget:self action:@selector(tfBtAction:) forControlEvents:UIControlEventTouchUpInside];
+    bt.tag = tag;
+    [v addSubview:bt];
+    [bt mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.height.equalTo(@30);
+        make.right.equalTo(v).offset(-17);
+        make.centerY.equalTo(v);
+    }];
+    return v;
+}
+
+- (void)tfBtAction:(UIButton *)bt {
+    NSInteger tag = bt.tag - 800000;
+    bt.selected = !bt.isSelected;
+    if (tag == 0) {
+        self.oldPassTf.secureTextEntry = !bt.isSelected;
+    } else {
+        self.nPassTf.secureTextEntry = !bt.isSelected;
+    }
+}
+
+- (UIButton *)bottomBt {
+    if (!_bottomBt) {
+        UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
+        [bt setTitle:@"NEXT" forState:UIControlStateNormal];
+        bt.titleLabel.font = [UIFont fontWithName:Rob_Regular size:16];
+        [bt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
+        [bt setBackgroundColor:[UIColor colorWithHexString:@"#ADADAD"]];
+        bt.layer.cornerRadius = 4;
+        bt.layer.masksToBounds = true;
+        bt.enabled = false;
+        [bt addTarget:self action:@selector(bottomBtAction) forControlEvents:UIControlEventTouchUpInside];
+        _bottomBt = bt;
+    }
+    return _bottomBt;
+}
+
+- (void)bottomBtAction {
+    
+//    KWLoginedUserModel *tempInfo = [[KWLoginedUserModel alloc] init];
+//    tempInfo.firstname = self.nameTf.text;
+//    tempInfo.lastname = self.lastNTf.text;
+//    tempInfo.email = self.emailTf.text;
+//    tempInfo.dob = self.birthTf.text;
+//
+//
+//
+//    [MBProgressHUD showHUDAddedTo:self.view animated:true];
+//    @weakify(self);
+//    [self.vm editUserInfo:tempInfo changePass:[NSString stringWithFormat:@"%ld", self.showType] oldPass:self.oldPassTf.text nPass:self.nPassTf.text complate:^(BOOL flag, NSString * _Nonnull msg) {
+//        [MBProgressHUD hideHUDForView:weak_self.view animated:true];
+//        if (!flag) {
+//            [weak_self.view makeToast:msg];
+//        } else {
+//            [weak_self.view makeToast:@"Save Successed"];
+//            [weak_self.navigationController popViewControllerAnimated:true];
+//        }
+//    }];
+}
+
+
+
+
+- (void)textfieldDidChange:(UITextField *)tf {
+    [self configBtState];
+}
+
+
+
+
+- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
+    if ([self.birthTf isEqual:textField]) {
+        BRDatePickerView *datePickerView = [[BRDatePickerView alloc]init];
+        datePickerView.pickerMode = BRDatePickerModeDate;
+        datePickerView.title = @"Please Select The Date Of Birth";
+        datePickerView.selectDate = self.currentDate;
+        datePickerView.minDate = [NSDate br_setYear:1900 month:1 day:1];
+        datePickerView.maxDate = [NSDate date];
+        datePickerView.isAutoSelect = YES;
+        @weakify(self);
+        datePickerView.resultBlock = ^(NSDate *selectDate, NSString *selectValue) {
+            weak_self.currentDate = selectDate;
+            NSDateFormatter *formartter= [[NSDateFormatter alloc]init];
+            [formartter setDateFormat:@"MM/dd/yyyy"];
+            NSString *currentDateStr = [formartter stringFromDate:selectDate];
+            weak_self.birthTf.text = currentDateStr;
+            [weak_self configBtState];
+            NSLog(@"selectValue=%@", selectValue);
+            NSLog(@"selectDate=%@", selectDate);
+            NSLog(@"---------------------------------");
+            
+        };
+        [datePickerView show];
+        return false;
+    }
+    return true;
+}
+
+@end

+ 16 - 0
Asteria/Fuction/UserCenter/Setting/ASSettingViewController.h

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

+ 333 - 0
Asteria/Fuction/UserCenter/Setting/ASSettingViewController.m

@@ -0,0 +1,333 @@
+//
+//  ASSettingViewController.m
+//  Asteria
+//
+//  Created by iOS on 2023/7/5.
+//
+
+#import "ASSettingViewController.h"
+#import "ASSettingListCell.h"
+#import "ASInfomationSetController.h"
+#import "ASHelpListViewController.h"
+
+@interface ASSettingViewController () <UITableViewDelegate,UITableViewDataSource>
+
+@property (nonatomic, strong) UIView *bottomV;
+@property (nonatomic, strong) UILabel *versionLb;
+@property (nonatomic, strong) UITableView *tableV;
+
+@property (nonatomic, strong) NSArray *titleArr;
+@property (nonatomic, strong) NSArray *detailArr;
+
+//@property (nonatomic, strong) KWLoginedUserModel *userInfo;
+
+@end
+
+@implementation ASSettingViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.titleStr = @"Setting";
+    [self setNavRightSearch:^{
+        
+    }];
+    
+    self.statusBgV.backgroundColor = Col_FFF;
+    self.customNavBar.backgroundColor = Col_FFF;
+    
+    [self loadSubVs];
+    
+//    [self configData];
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+    
+//    self.userInfo = [KWLoginedManager.shareInstance getCurrentLoginedUser];
+    [self configData];
+//    @weakify(self);
+//    [KWLoginedManager.shareInstance getUserInfo:^(bool flag) {
+//        weak_self.userInfo = [KWLoginedManager.shareInstance getCurrentLoginedUser];
+//        [weak_self configData];
+//    }];
+}
+
+- (void)configData {
+    
+    self.titleArr = @[@"INFORMATION",
+                      @"SHIPPING ADDRESS",
+                      @"SUBSCRIBE",
+                      @"CUSTOMER SERVICE",
+                      @"HELP & SUPPORT",
+                      @"LOG OUT",
+                      @"DELETE ACCOUNT"];
+    /*
+     KWLoginedManager.shareInstance.isLogined ? @[@"Information",
+                             @"Shipping Address",
+//                             @"Account Settings",
+                             @"Subscribe",
+                             @"Customer Service",
+                             @"Help & Support",
+                            @"Log Out", @"Delete Account"] : @[@"Infomation",
+                      @"Shipping Address",
+//                      @"Account Settings",
+                      @"Subscribe",
+                      @"Customer Service",
+                      @"Help & Support"];
+     */
+    self.detailArr = @[@"", @"",@"",@"",@"",@"",@"",@""];
+    [self.tableV reloadData];
+}
+
+
+- (void)loadSubVs {
+    [self.view addSubview:self.tableV];
+    
+    [self.bottomV addSubview:self.versionLb];
+    
+   
+    [self.versionLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.bottomV).offset(66);
+        make.left.equalTo(self.bottomV).offset(20);
+        make.centerX.equalTo(self.bottomV);
+        make.height.equalTo(@20);
+    }];
+    [self.tableV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.customNavBar.mas_bottom);
+        make.left.right.equalTo(self.view);
+        make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom);
+    }];
+    
+    
+}
+
+
+- (UILabel *)versionLb {
+    if (!_versionLb) {
+        UILabel *lb = [UILabel new];
+        NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
+        NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
+        lb.text = [NSString stringWithFormat:@"V%@",app_Version];
+        lb.textColor = Col_000;
+        lb.textAlignment = NSTextAlignmentCenter;
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.numberOfLines = 1;
+        _versionLb = lb;
+    }
+    return _versionLb;
+}
+
+-(UIView *)bottomV {
+    if (!_bottomV) {
+        UIView *v = [UIView new];
+        v.frame = CGRectMake(0, 0, KScreenWidth, 100);
+        v.backgroundColor = _F8F8F8;
+        _bottomV = v;
+    }
+    return _bottomV;
+}
+
+- (UITableView *)tableV {
+    if (!_tableV) {
+        UITableView *tabV = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
+        tabV.backgroundColor = _F8F8F8;
+        [tabV registerClass:[ASSettingListCell class] forCellReuseIdentifier:@"ASSettingListCell"];
+        tabV.delegate = self;
+        tabV.dataSource = self;
+        tabV.rowHeight = UITableViewAutomaticDimension;
+        tabV.estimatedRowHeight = 100;
+        tabV.separatorStyle = UITableViewCellSeparatorStyleNone;
+        UIView *v = [UIView new];
+        v.frame = CGRectMake(0, 0, KScreenWidth, 10);
+        v.backgroundColor = _F8F8F8;
+        tabV.tableHeaderView = v;
+        tabV.tableFooterView = self.bottomV;
+        _tableV = tabV;
+    }
+    return _tableV;
+}
+
+#pragma mark - UITableViewDelegate,UITableViewDataSource
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    switch (indexPath.row) {
+        case 0:{
+//            if (![self checkLogin:true]) {
+//                return;
+//            }
+            ASInfomationSetController *vc = [ASInfomationSetController new];
+            [self.navigationController pushViewController:vc animated:true];
+            break;
+        }
+        case 1:{
+//            if (![self checkLogin:true]) {
+//                return;
+//            }
+//            KWAddressListViewController *vc = [KWAddressListViewController new];
+//            vc.addressType = AddressTypeSettingAddress;
+//            [self.navigationController pushViewController:vc animated:true];
+            break;
+        }
+        case 3:{
+            ASHelpListViewController *vc = [ASHelpListViewController new];
+            vc.isHelp = false;
+            [self.navigationController pushViewController:vc animated:true];
+            break;
+        }
+        case 4:{
+            ASHelpListViewController *vc = [ASHelpListViewController new];
+            vc.isHelp = true;
+            [self.navigationController pushViewController:vc animated:true];
+            break;
+        }
+//        case 5: {
+//            [self logout];
+//            break;
+//        }
+//        case 6: {
+//            [self showDeleteAccountAlert];
+//            break;
+//        }
+        default:
+            break;
+    }
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return self.titleArr.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+   
+    ASSettingListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ASSettingListCell" forIndexPath:indexPath];
+    [cell setTitle:self.titleArr[indexPath.row] points:self.detailArr[indexPath.row] enable:true];
+    if (//KWLoginedManager.shareInstance.isLogined &&
+        ((indexPath.row == _titleArr.count - 1) || (indexPath.row == _titleArr.count - 2))) {
+        cell.moreIcon.hidden = true;
+    } else  {
+        cell.moreIcon.hidden = false;
+    }
+    cell.switchBtn.hidden = !(indexPath.row == 2);
+    if (indexPath.row == 2) {
+        [cell.switchBtn setIsOpen:arc4random()%2 == 1 animate:false];
+//        [cell.switchBtn setIsOpen:self.userInfo.is_subscribed animate:false];
+//        @weakify(self);
+//        [cell.switchBtn setClickBack:^{
+//            [weak_self configSubscrib:!weak_self.userInfo.is_subscribed];
+//        }];
+    } else {
+        cell.switchBtn.clickBack = nil;
+    }
+    return  cell;
+}
+
+// MARK: - 注销账号
+- (void)showDeleteAccountAlert {
+//    @weakify(self);
+//    KWUpdateAlertWindow *window = [KWUpdateAlertWindow show:@"Are You Sure To Delete Your Account?\n(This action can't be undone. All the data of your account will be delete)" isMast:false upBlock:^{
+//    } cancelBlock:^{
+//        @strongify(self);
+//        [self deleteAccount];
+//
+//    }];
+//    window.vc.titleLb.text = @"Delete Account?";
+//    [window.vc.sureBt setTitle:@"No" forState:UIControlStateNormal];
+//    [window.vc.cancelBt setTitleColor:UIColor.whiteColor forState:UIControlStateNormal];
+//    NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"Yes"];
+//    [attStr setFont:[UIFont fontWithName:Rob_Regular size:16]];
+//    [attStr setUnderlineStyle:NSUnderlineStyleSingle];
+//    [attStr setUnderlineColor:[UIColor colorWithHexString:@"#000000"]];
+//    [attStr setColor:[UIColor colorWithHexString:@"#000000"]];
+//    [window.vc.cancelBt setAttributedTitle:attStr forState:UIControlStateNormal];
+//
+//    [window.vc.cancelBt mas_remakeConstraints:^(MASConstraintMaker *make) {
+//        make.bottom.equalTo(window.vc.sureBt);
+//        make.height.equalTo(@35);
+//        make.right.equalTo(window.vc.sureBt.mas_left).offset(-20);
+//        make.left.greaterThanOrEqualTo(window.vc.contentV).offset(20);
+//    }];
+//
+//
+}
+- (void)deleteAccount {
+//    [MBProgressHUD showHUDAddedTo:self.view animated:true];
+//    @weakify(self);
+//    [PPNetworkHelper POST:DeleteAccount parameters:@{} success:^(id responseObject) {
+//        [MBProgressHUD hideHUDForView:self.view animated:true];
+//        if (RequestSuccess) {
+//            NSLog(@"success:%@",responseObject);
+//            [XXX_Tabber shareInstance].xxx_barCartBtn.badgeValue = @"0";
+//            [weak_self popAndToLogin];
+//
+//        } else {
+//            NSLog(@"fail:%@",RequestErrorMsg);
+//            [weak_self.view makeToast:RequestErrorMsg];
+//        }
+//    } failure:^(NSError *error) {
+//        [MBProgressHUD hideHUDForView:self.view animated:true];
+//        NSLog(@"err:%@",error);
+//        [weak_self.view makeToast:@"Oh No, Bad Net"];
+//    }];
+}
+
+// MARK: - 退出登录
+- (void)logout {
+//    [MBProgressHUD showHUDAddedTo:self.view animated:true];
+//    @weakify(self);
+//    [PPNetworkHelper POST:LogoutApi parameters:@{} success:^(id responseObject) {
+//        [MBProgressHUD hideHUDForView:self.view animated:true];
+//        if (RequestSuccess) {
+//            NSLog(@"success:%@",responseObject);
+//            [XXX_Tabber shareInstance].xxx_barCartBtn.badgeValue = @"0";
+//            [weak_self popAndToLogin];
+//
+//        } else {
+//            NSLog(@"fail:%@",RequestErrorMsg);
+//            [weak_self.view makeToast:RequestErrorMsg];
+//        }
+//    } failure:^(NSError *error) {
+//        [MBProgressHUD hideHUDForView:self.view animated:true];
+//        NSLog(@"err:%@",error);
+//        [weak_self.view makeToast:@"Oh No, Bad Net"];
+//    }];
+    
+}
+
+
+
+
+- (void)popAndToLogin {
+//    [KWLoginedManager.shareInstance clearLoginedUser];
+//    LoginEntranceC * loginVC = [[LoginEntranceC alloc]init];
+//    UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:loginVC];
+//    navC.modalPresentationStyle = UIModalPresentationFullScreen;
+//    [self.navigationController.viewControllers.firstObject presentViewController:navC animated:YES completion:nil];
+//    [self.navigationController popToRootViewControllerAnimated:false];
+}
+
+
+//- (void)configSubscrib:(BOOL)is_subscribed {
+//    NSDictionary *param = @{@"is_subscribed":[NSNumber numberWithBool:is_subscribed]};
+//    @weakify(self);
+//    [MBProgressHUD showHUDAddedTo:self.view animated:true];
+//    [PPNetworkHelper POST:SaveSub parameters:param success:^(id responseObject) {
+//        [MBProgressHUD hideHUDForView:weak_self.view animated:true];
+//        if (RequestSuccess) {
+//            weak_self.userInfo.is_subscribed = is_subscribed;
+//            [KWLoginedManager.shareInstance getUserInfo:^(bool flag) {
+//
+//            }];
+//        } else {
+//            NSString *errMsg = [NSString stringWithFormat:@"%@", RequestErrorMsg];
+//            [self.view makeToast:errMsg];
+//        }
+//        [weak_self.tableV reloadData];
+//    } failure:^(NSError *error) {
+//        [MBProgressHUD hideHUDForView:weak_self.view animated:true];
+//        [self.view makeToast:@"请求失败"];
+//        [weak_self.tableV reloadData];
+//    }];
+//
+//}
+
+@end

+ 22 - 0
Asteria/Fuction/UserCenter/Setting/view/ASSettingListCell.h

@@ -0,0 +1,22 @@
+//
+//  ASSettingListCell.h
+//  Asteria
+//
+//  Created by iOS on 2023/7/5.
+//
+
+#import <UIKit/UIKit.h>
+#import "KWSwitchButton.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ASSettingListCell : UITableViewCell
+
+@property (nonatomic, strong) KWSwitchButton *switchBtn;
+
+@property (nonatomic, strong) UIImageView *moreIcon;
+- (void)setTitle:(NSString *)title points:(NSString *)points enable:(BOOL)flag;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 146 - 0
Asteria/Fuction/UserCenter/Setting/view/ASSettingListCell.m

@@ -0,0 +1,146 @@
+//
+//  ASSettingListCell.m
+//  Asteria
+//
+//  Created by iOS on 2023/7/5.
+//
+
+#import "ASSettingListCell.h"
+
+@interface ASSettingListCell ()
+@property (nonatomic, strong) UIView *bgV;
+@property (nonatomic, strong) UILabel *titleLb;
+@property (nonatomic, strong) UILabel *pointsLb;
+
+@end
+
+@implementation ASSettingListCell
+
+
+- (void)setTitle:(NSString *)title points:(NSString *)points enable:(BOOL)flag {
+    self.titleLb.text = title;
+    self.pointsLb.text = points;
+    self.moreIcon.image = flag ? [UIImage imageNamed:@"uc_more"] : nil;
+    self.titleLb.textColor = [UIColor.blackColor colorWithAlphaComponent:flag ? 1 : 0.6];
+    self.pointsLb.textColor = [UIColor.blackColor colorWithAlphaComponent:flag ? 1 : 0.6];
+}
+
+-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        [self confgSubV];
+    }
+    return self;
+}
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+- (void)confgSubV {
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+    self.contentView.backgroundColor = _F8F8F8;
+    
+    [self.contentView addSubview:self.bgV];
+    [self.bgV addSubview:self.titleLb];
+    [self.bgV addSubview:self.pointsLb];
+    [self.bgV addSubview:self.moreIcon];
+    [self.bgV addSubview:self.switchBtn];
+    
+    [self.bgV mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.contentView).offset(10);
+        make.left.equalTo(self.contentView).offset(10);
+        make.right.equalTo(self.contentView).offset(-10);
+        make.bottom.equalTo(self.contentView);
+        make.height.equalTo(@60);
+    }];
+    [self.titleLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.top.equalTo(self.bgV).offset(10);
+        make.centerY.equalTo(self.bgV);
+    }];
+    [self.moreIcon mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.equalTo(self.bgV).offset(-12);
+        make.width.height.equalTo(@13);
+        make.centerY.equalTo(self.titleLb);
+    }];
+    [self.pointsLb mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.equalTo(self.moreIcon.mas_left).offset(-10);
+        make.left.equalTo(self.titleLb.mas_right).offset(30);
+        make.centerY.equalTo(self.titleLb);
+        make.width.greaterThanOrEqualTo(@80);
+        make.height.equalTo(@14);
+    }];
+    [self.titleLb setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
+    [self.titleLb setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisVertical];
+    [self.pointsLb setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
+    [self.pointsLb setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
+    [self.switchBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.equalTo(self.bgV).offset(-10);
+        make.centerY.equalTo(self.bgV);
+        make.width.equalTo(@60);
+        make.height.equalTo(@32);
+    }];
+    
+}
+
+- (UILabel *)titleLb {
+    if (!_titleLb) {
+        UILabel *lb = [UILabel new];
+        lb.textColor = Col_000;
+        lb.font = [UIFont fontWithName:Rob_Regular size:14];
+        lb.numberOfLines = 0;
+        _titleLb = lb;
+    }
+    return _titleLb;
+}
+- (UILabel *)pointsLb {
+    if (!_pointsLb) {
+        UILabel *lb = [UILabel new];
+        lb.textColor = Col_000;
+        lb.textAlignment = NSTextAlignmentRight;
+        lb.font = [UIFont fontWithName:Rob_Regular size:12];
+        lb.numberOfLines = 1;
+        _pointsLb = lb;
+    }
+    return _pointsLb;
+}
+
+- (UIImageView *)moreIcon {
+    if (!_moreIcon) {
+        UIImageView *v = [[UIImageView alloc] init];
+        v.contentMode = UIViewContentModeScaleAspectFit;
+        v.image = [UIImage imageNamed:@"uc_more"];
+        _moreIcon = v;
+    }
+    return _moreIcon;
+}
+
+-(UIView *)bgV {
+    if (!_bgV) {
+        UIView *v = [UIView new];
+        v.backgroundColor = Col_FFF;
+        v.layer.cornerRadius = 4;
+        v.layer.masksToBounds = true;
+        _bgV = v;
+    }
+    return _bgV;
+}
+
+-(KWSwitchButton *)switchBtn {
+    if (!_switchBtn) {
+        KWSwitchButton *btn = [[KWSwitchButton alloc] init];
+        btn.openColor = _32CFB0;
+        btn.hidden = true;
+        _switchBtn = btn;
+    }
+    return _switchBtn;
+}
+
+@end

+ 7 - 4
Asteria/Fuction/UserCenter/UserCenterHome/ASUserCenterViewController.m

@@ -14,6 +14,7 @@
 #import "ASPointsHomeViewController.h"
 #import "ASPointsHomeViewController.h"
 #import "ASVipCenterViewController.h"
 #import "ASVipCenterViewController.h"
 #import "ASMessageListViewController.h"
 #import "ASMessageListViewController.h"
+#import "ASSettingViewController.h"
 
 
 
 
 @interface ASUserCenterViewController ()<UITableViewDelegate,UITableViewDataSource>
 @interface ASUserCenterViewController ()<UITableViewDelegate,UITableViewDataSource>
@@ -51,11 +52,8 @@
     
     
     __weak typeof(self) weakSelf = self;
     __weak typeof(self) weakSelf = self;
     [self.tableHeadV.itemsV setItemTapCallBack:^(NSInteger tag) {
     [self.tableHeadV.itemsV setItemTapCallBack:^(NSInteger tag) {
-        /// -2编辑头像 -1设置 0 优惠券  1礼品卡 2积分 3vip  4联系  5消息
+        /// 0 优惠券  1礼品卡 2积分 3vip  4联系  5消息
         switch (tag) {
         switch (tag) {
-            case -2:
-                
-                break;
             case 0: {
             case 0: {
                 ASCouponsListViewController *vc = [[ASCouponsListViewController alloc] init];
                 ASCouponsListViewController *vc = [[ASCouponsListViewController alloc] init];
                 vc.isCard = false;
                 vc.isCard = false;
@@ -94,6 +92,11 @@
                 break;
                 break;
         }
         }
     }];
     }];
+    
+    [self.tableHeadV.topV setSettingBlock:^{
+        ASSettingViewController *vc = [ASSettingViewController new];
+        [weakSelf.navigationController pushViewController:vc animated:true];
+    }];
 }
 }
 
 
 
 

+ 14 - 14
Asteria/Info.plist

@@ -4,24 +4,24 @@
 <dict>
 <dict>
 	<key>NSAppTransportSecurity</key>
 	<key>NSAppTransportSecurity</key>
 	<dict>
 	<dict>
-        <key>NSExceptionDomains</key>
-          <dict>
-              <key>zyp.hnwmzp.cn</key>
-              <dict>
-                  <key>NSExceptionRequiresForwardSecrecy</key>
-                   <false/>
-                   <key>NSExceptionAllowsInsecureHTTPLoads</key>
-                   <true/>
-                   <key>NSIncludesSubdomains</key>
-                   <true/>
-                   <key>NSExceptionMinimumTLSVersion</key>
-                   <string>TLSv1.3</string>
-              </dict>
-          </dict>
 		<key>NSAllowsArbitraryLoads</key>
 		<key>NSAllowsArbitraryLoads</key>
 		<true/>
 		<true/>
 		<key>NSAllowsArbitraryLoadsInWebContent</key>
 		<key>NSAllowsArbitraryLoadsInWebContent</key>
 		<true/>
 		<true/>
+		<key>NSExceptionDomains</key>
+		<dict>
+			<key>zyp.hnwmzp.cn</key>
+			<dict>
+				<key>NSExceptionAllowsInsecureHTTPLoads</key>
+				<true/>
+				<key>NSExceptionMinimumTLSVersion</key>
+				<string>TLSv1.3</string>
+				<key>NSExceptionRequiresForwardSecrecy</key>
+				<false/>
+				<key>NSIncludesSubdomains</key>
+				<true/>
+			</dict>
+		</dict>
 	</dict>
 	</dict>
 	<key>UIAppFonts</key>
 	<key>UIAppFonts</key>
 	<array>
 	<array>

+ 1 - 0
Podfile

@@ -11,6 +11,7 @@ end
 
 
 target 'Asteria' do
 target 'Asteria' do
   use_frameworks!
   use_frameworks!
+  pod 'BRPickerView'
   pod 'AFNetworking'
   pod 'AFNetworking'
   pod 'MBProgressHUD'
   pod 'MBProgressHUD'
   pod 'MJRefresh'
   pod 'MJRefresh'

+ 2 - 1
Podfile.lock

@@ -1151,6 +1151,7 @@ PODS:
 
 
 DEPENDENCIES:
 DEPENDENCIES:
   - AFNetworking
   - AFNetworking
+  - BRPickerView
   - Bugly
   - Bugly
   - CTMediator
   - CTMediator
   - FBSDKLoginKit
   - FBSDKLoginKit
@@ -1273,6 +1274,6 @@ SPEC CHECKSUMS:
   YYCache: 8105b6638f5e849296c71f331ff83891a4942952
   YYCache: 8105b6638f5e849296c71f331ff83891a4942952
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
 
 
-PODFILE CHECKSUM: a791e5754b0b5b0d5c857a9c5c0c2dfbca07c206
+PODFILE CHECKSUM: 783033c0223649adda8861b804b25f0071dae3d8
 
 
 COCOAPODS: 1.12.1
 COCOAPODS: 1.12.1

+ 2 - 1
Pods/Manifest.lock

@@ -1151,6 +1151,7 @@ PODS:
 
 
 DEPENDENCIES:
 DEPENDENCIES:
   - AFNetworking
   - AFNetworking
+  - BRPickerView
   - Bugly
   - Bugly
   - CTMediator
   - CTMediator
   - FBSDKLoginKit
   - FBSDKLoginKit
@@ -1273,6 +1274,6 @@ SPEC CHECKSUMS:
   YYCache: 8105b6638f5e849296c71f331ff83891a4942952
   YYCache: 8105b6638f5e849296c71f331ff83891a4942952
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
 
 
-PODFILE CHECKSUM: a791e5754b0b5b0d5c857a9c5c0c2dfbca07c206
+PODFILE CHECKSUM: 783033c0223649adda8861b804b25f0071dae3d8
 
 
 COCOAPODS: 1.12.1
 COCOAPODS: 1.12.1