Steven 3 سال پیش
والد
کامیت
32553289d5
55فایلهای تغییر یافته به همراه2359 افزوده شده و 1164 حذف شده
  1. 68 16
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 16 48
      KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/choose_instrument.imageset/Contents.json
  5. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/choose_instrument.imageset/choose_instrument@2x.png
  6. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/choose_instrument.imageset/choose_instrument@3x.png
  7. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/instrument_shadow.imageset/Contents.json
  8. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/instrument_shadow.imageset/instrument_shadow@2x.png
  9. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/instrument_shadow.imageset/instrument_shadow@3x.png
  10. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/unChoose_instrument.imageset/Contents.json
  11. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/unChoose_instrument.imageset/unChoose_instrument@2x.png
  12. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/unChoose_instrument.imageset/unChoose_instrument@3x.png
  13. 26 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m
  14. 10 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.h
  15. 18 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.m
  16. 3 3
      KulexiuForStudent/KulexiuForStudent/Module/Home/Controller/HomeViewController.m
  17. 23 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/InstrumentChooseViewController.h
  18. 317 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/InstrumentChooseViewController.m
  19. 1 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Model/InstrumentMessageModel.h
  20. 23 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseBottonView.h
  21. 43 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseBottonView.m
  22. 46 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseBottonView.xib
  23. 19 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseCell.h
  24. 34 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseCell.m
  25. 90 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseCell.xib
  26. 0 16
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseView.h
  27. 0 20
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseView.m
  28. 0 117
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseView.xib
  29. 18 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentHeaderView.h
  30. 26 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentHeaderView.m
  31. 52 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentHeaderView.xib
  32. 8 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/AddressList/Controller/AddressListViewController.h
  33. 16 1
      KulexiuForStudent/KulexiuForStudent/Module/Mine/AddressList/Controller/AddressListViewController.m
  34. 11 2
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Controller/MineViewController.m
  35. 1 282
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/SettingViewController.m
  36. 20 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserAuthViewController.h
  37. 85 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserAuthViewController.m
  38. 16 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserSettingViewController.h
  39. 354 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserSettingViewController.m
  40. 0 16
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserVefiViewController.h
  41. 0 32
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserVefiViewController.m
  42. 1 25
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/SettingBodyView.h
  43. 0 10
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/SettingBodyView.m
  44. 32 575
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/SettingBodyView.xib
  45. 50 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UseBodyView.h
  46. 54 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UseBodyView.m
  47. 567 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UseBodyView.xib
  48. 26 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UserAuthBodyView.h
  49. 66 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UserAuthBodyView.m
  50. 134 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UserAuthBodyView.xib
  51. 1 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.h
  52. 7 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m
  53. 11 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib
  54. BIN
      KulexiuForStudent/build/XCBuildData/BuildDescriptionCacheIndex-604c88e60e61e13155f665cce0707a51
  55. BIN
      KulexiuForStudent/build/XCBuildData/build.db

+ 68 - 16
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -141,8 +141,6 @@
 		275FA23D27E7356B00CFEA2E /* PasswordBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 275FA22A27E7356B00CFEA2E /* PasswordBodyView.xib */; };
 		275FA24327E73DF600CFEA2E /* InstrumentDescView.m in Sources */ = {isa = PBXBuildFile; fileRef = 275FA24227E73DF600CFEA2E /* InstrumentDescView.m */; };
 		275FA24527E73E0100CFEA2E /* InstrumentDescView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 275FA24427E73E0000CFEA2E /* InstrumentDescView.xib */; };
-		275FA24827E7428200CFEA2E /* InstrumentChooseView.m in Sources */ = {isa = PBXBuildFile; fileRef = 275FA24727E7428200CFEA2E /* InstrumentChooseView.m */; };
-		275FA24A27E7428D00CFEA2E /* InstrumentChooseView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 275FA24927E7428D00CFEA2E /* InstrumentChooseView.xib */; };
 		2779351227E324A50010E277 /* KSNetworkAccessibleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2779336527E3249C0010E277 /* KSNetworkAccessibleManager.m */; };
 		2779351327E324A50010E277 /* NSDictionary+KSSafe.m in Sources */ = {isa = PBXBuildFile; fileRef = 2779336927E3249C0010E277 /* NSDictionary+KSSafe.m */; };
 		2779351427E324A50010E277 /* NSMutableDictionary+KSSafe.m in Sources */ = {isa = PBXBuildFile; fileRef = 2779336B27E3249C0010E277 /* NSMutableDictionary+KSSafe.m */; };
@@ -446,6 +444,19 @@
 		BC5367C4283F6D58008428E8 /* HomeLiveCourseView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5367C3283F6D58008428E8 /* HomeLiveCourseView.xib */; };
 		BC5367C7283F6D6B008428E8 /* HomeVideoCourseView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5367C6283F6D6B008428E8 /* HomeVideoCourseView.m */; };
 		BC5367C9283F6D72008428E8 /* HomeVideoCourseView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5367C8283F6D72008428E8 /* HomeVideoCourseView.xib */; };
+		BC542E3B284079D600633781 /* UserAuthViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E39284079D600633781 /* UserAuthViewController.m */; };
+		BC542E3F284079E300633781 /* UserAuthBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E3C284079E200633781 /* UserAuthBodyView.m */; };
+		BC542E40284079E300633781 /* UserAuthBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC542E3E284079E300633781 /* UserAuthBodyView.xib */; };
+		BC542E4B28409E9F00633781 /* InstrumentChooseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E4928409E9E00633781 /* InstrumentChooseViewController.m */; };
+		BC542E5528409EC900633781 /* InstrumentHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC542E4C28409EC700633781 /* InstrumentHeaderView.xib */; };
+		BC542E5628409EC900633781 /* InstrumentChooseBottonView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E4D28409EC800633781 /* InstrumentChooseBottonView.m */; };
+		BC542E5728409EC900633781 /* InstrumentChooseBottonView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC542E4E28409EC800633781 /* InstrumentChooseBottonView.xib */; };
+		BC542E5828409EC900633781 /* InstrumentChooseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E4F28409EC800633781 /* InstrumentChooseCell.m */; };
+		BC542E5928409EC900633781 /* InstrumentChooseCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC542E5128409EC800633781 /* InstrumentChooseCell.xib */; };
+		BC542E5A28409EC900633781 /* InstrumentHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E5428409EC900633781 /* InstrumentHeaderView.m */; };
+		BC542E5D2840A60100633781 /* UserSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E5B2840A60000633781 /* UserSettingViewController.m */; };
+		BC542E612840A60E00633781 /* UseBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E5E2840A60D00633781 /* UseBodyView.m */; };
+		BC542E622840A60E00633781 /* UseBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC542E5F2840A60D00633781 /* UseBodyView.xib */; };
 		BC76630E2827E48800C91A1D /* NotiferMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC76630C2827E48800C91A1D /* NotiferMessageModel.m */; };
 		BC7663152827E49900C91A1D /* NotiferHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC76630F2827E49800C91A1D /* NotiferHeadView.m */; };
 		BC7663162827E49900C91A1D /* NotiferHeadView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC7663102827E49800C91A1D /* NotiferHeadView.xib */; };
@@ -510,7 +521,6 @@
 		BC8C2C7E28265D8E00FBA5D5 /* KSNewsAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8C2C7C28265D8D00FBA5D5 /* KSNewsAlert.m */; };
 		BC8C2C7F28265D8E00FBA5D5 /* KSNewsAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC8C2C7D28265D8E00FBA5D5 /* KSNewsAlert.xib */; };
 		BCA193B8282B6094004A585D /* RecentCourseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA193B7282B6094004A585D /* RecentCourseModel.m */; };
-		BCA193BB282B85EF004A585D /* UserVefiViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA193BA282B85EF004A585D /* UserVefiViewController.m */; };
 		BCB6345D27F6D29600ACFDCF /* KSLiveChatroomWelcome.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340D27F6D29500ACFDCF /* KSLiveChatroomWelcome.m */; };
 		BCB6345E27F6D29600ACFDCF /* KSLiveChatroomLeave.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340E27F6D29500ACFDCF /* KSLiveChatroomLeave.m */; };
 		BCB6345F27F6D29600ACFDCF /* KSLiveChatroomEnter.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340F27F6D29500ACFDCF /* KSLiveChatroomEnter.m */; };
@@ -914,9 +924,6 @@
 		275FA24127E73DF600CFEA2E /* InstrumentDescView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InstrumentDescView.h; sourceTree = "<group>"; };
 		275FA24227E73DF600CFEA2E /* InstrumentDescView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InstrumentDescView.m; sourceTree = "<group>"; };
 		275FA24427E73E0000CFEA2E /* InstrumentDescView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InstrumentDescView.xib; sourceTree = "<group>"; };
-		275FA24627E7428200CFEA2E /* InstrumentChooseView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InstrumentChooseView.h; sourceTree = "<group>"; };
-		275FA24727E7428200CFEA2E /* InstrumentChooseView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InstrumentChooseView.m; sourceTree = "<group>"; };
-		275FA24927E7428D00CFEA2E /* InstrumentChooseView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InstrumentChooseView.xib; sourceTree = "<group>"; };
 		2779336427E3249C0010E277 /* KSNetworkAccessibleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSNetworkAccessibleManager.h; sourceTree = "<group>"; };
 		2779336527E3249C0010E277 /* KSNetworkAccessibleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSNetworkAccessibleManager.m; sourceTree = "<group>"; };
 		2779336727E3249C0010E277 /* KSSafeObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSSafeObject.h; sourceTree = "<group>"; };
@@ -1488,6 +1495,27 @@
 		BC5367C5283F6D6B008428E8 /* HomeVideoCourseView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeVideoCourseView.h; sourceTree = "<group>"; };
 		BC5367C6283F6D6B008428E8 /* HomeVideoCourseView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeVideoCourseView.m; sourceTree = "<group>"; };
 		BC5367C8283F6D72008428E8 /* HomeVideoCourseView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeVideoCourseView.xib; sourceTree = "<group>"; };
+		BC542E39284079D600633781 /* UserAuthViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserAuthViewController.m; sourceTree = "<group>"; };
+		BC542E3A284079D600633781 /* UserAuthViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserAuthViewController.h; sourceTree = "<group>"; };
+		BC542E3C284079E200633781 /* UserAuthBodyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserAuthBodyView.m; sourceTree = "<group>"; };
+		BC542E3D284079E200633781 /* UserAuthBodyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserAuthBodyView.h; sourceTree = "<group>"; };
+		BC542E3E284079E300633781 /* UserAuthBodyView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UserAuthBodyView.xib; sourceTree = "<group>"; };
+		BC542E4928409E9E00633781 /* InstrumentChooseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstrumentChooseViewController.m; sourceTree = "<group>"; };
+		BC542E4A28409E9E00633781 /* InstrumentChooseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstrumentChooseViewController.h; sourceTree = "<group>"; };
+		BC542E4C28409EC700633781 /* InstrumentHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InstrumentHeaderView.xib; sourceTree = "<group>"; };
+		BC542E4D28409EC800633781 /* InstrumentChooseBottonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstrumentChooseBottonView.m; sourceTree = "<group>"; };
+		BC542E4E28409EC800633781 /* InstrumentChooseBottonView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InstrumentChooseBottonView.xib; sourceTree = "<group>"; };
+		BC542E4F28409EC800633781 /* InstrumentChooseCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstrumentChooseCell.m; sourceTree = "<group>"; };
+		BC542E5028409EC800633781 /* InstrumentChooseBottonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstrumentChooseBottonView.h; sourceTree = "<group>"; };
+		BC542E5128409EC800633781 /* InstrumentChooseCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InstrumentChooseCell.xib; sourceTree = "<group>"; };
+		BC542E5228409EC800633781 /* InstrumentHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstrumentHeaderView.h; sourceTree = "<group>"; };
+		BC542E5328409EC800633781 /* InstrumentChooseCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstrumentChooseCell.h; sourceTree = "<group>"; };
+		BC542E5428409EC900633781 /* InstrumentHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstrumentHeaderView.m; sourceTree = "<group>"; };
+		BC542E5B2840A60000633781 /* UserSettingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserSettingViewController.m; sourceTree = "<group>"; };
+		BC542E5C2840A60100633781 /* UserSettingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserSettingViewController.h; sourceTree = "<group>"; };
+		BC542E5E2840A60D00633781 /* UseBodyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UseBodyView.m; sourceTree = "<group>"; };
+		BC542E5F2840A60D00633781 /* UseBodyView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UseBodyView.xib; sourceTree = "<group>"; };
+		BC542E602840A60D00633781 /* UseBodyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UseBodyView.h; sourceTree = "<group>"; };
 		BC76630C2827E48800C91A1D /* NotiferMessageModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotiferMessageModel.m; sourceTree = "<group>"; };
 		BC76630D2827E48800C91A1D /* NotiferMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotiferMessageModel.h; sourceTree = "<group>"; };
 		BC76630F2827E49800C91A1D /* NotiferHeadView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotiferHeadView.m; sourceTree = "<group>"; };
@@ -1591,8 +1619,6 @@
 		BC8C2C7D28265D8E00FBA5D5 /* KSNewsAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KSNewsAlert.xib; sourceTree = "<group>"; };
 		BCA193B6282B6094004A585D /* RecentCourseModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecentCourseModel.h; sourceTree = "<group>"; };
 		BCA193B7282B6094004A585D /* RecentCourseModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecentCourseModel.m; sourceTree = "<group>"; };
-		BCA193B9282B85EF004A585D /* UserVefiViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserVefiViewController.h; sourceTree = "<group>"; };
-		BCA193BA282B85EF004A585D /* UserVefiViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserVefiViewController.m; sourceTree = "<group>"; };
 		BCB6340C27F6D29500ACFDCF /* KSRCMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSRCMessageModel.h; sourceTree = "<group>"; };
 		BCB6340D27F6D29500ACFDCF /* KSLiveChatroomWelcome.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSLiveChatroomWelcome.m; sourceTree = "<group>"; };
 		BCB6340E27F6D29500ACFDCF /* KSLiveChatroomLeave.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSLiveChatroomLeave.m; sourceTree = "<group>"; };
@@ -2488,6 +2514,8 @@
 				275FA21427E7356B00CFEA2E /* VefiCodeLoginController.m */,
 				BC50171027FC0D5600F8BCBC /* SubjectChooseViewController.h */,
 				BC50171127FC0D5600F8BCBC /* SubjectChooseViewController.m */,
+				BC542E4A28409E9E00633781 /* InstrumentChooseViewController.h */,
+				BC542E4928409E9E00633781 /* InstrumentChooseViewController.m */,
 			);
 			path = Controller;
 			sourceTree = "<group>";
@@ -2523,9 +2551,6 @@
 				275FA24127E73DF600CFEA2E /* InstrumentDescView.h */,
 				275FA24227E73DF600CFEA2E /* InstrumentDescView.m */,
 				275FA24427E73E0000CFEA2E /* InstrumentDescView.xib */,
-				275FA24627E7428200CFEA2E /* InstrumentChooseView.h */,
-				275FA24727E7428200CFEA2E /* InstrumentChooseView.m */,
-				275FA24927E7428D00CFEA2E /* InstrumentChooseView.xib */,
 				BC50171327FC0D8300F8BCBC /* SubjectChooseBodyView.h */,
 				BC50171427FC0D8300F8BCBC /* SubjectChooseBodyView.m */,
 				BC50171627FC0D8D00F8BCBC /* SubjectChooseBodyView.xib */,
@@ -2534,6 +2559,15 @@
 				BC0212F427FC4A080040569F /* SubjectImageCell.h */,
 				BC0212F527FC4A080040569F /* SubjectImageCell.m */,
 				BC0212F627FC4A080040569F /* SubjectImageCell.xib */,
+				BC542E5028409EC800633781 /* InstrumentChooseBottonView.h */,
+				BC542E4D28409EC800633781 /* InstrumentChooseBottonView.m */,
+				BC542E4E28409EC800633781 /* InstrumentChooseBottonView.xib */,
+				BC542E5328409EC800633781 /* InstrumentChooseCell.h */,
+				BC542E4F28409EC800633781 /* InstrumentChooseCell.m */,
+				BC542E5128409EC800633781 /* InstrumentChooseCell.xib */,
+				BC542E5228409EC800633781 /* InstrumentHeaderView.h */,
+				BC542E5428409EC900633781 /* InstrumentHeaderView.m */,
+				BC542E4C28409EC700633781 /* InstrumentHeaderView.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -3353,8 +3387,10 @@
 				2723B67127F15D3300E0B90B /* ModifyPhoneCheckController.m */,
 				2723B67D27F15D3D00E0B90B /* ModifyViewController.h */,
 				2723B67927F15D3B00E0B90B /* ModifyViewController.m */,
-				BCA193B9282B85EF004A585D /* UserVefiViewController.h */,
-				BCA193BA282B85EF004A585D /* UserVefiViewController.m */,
+				BC542E3A284079D600633781 /* UserAuthViewController.h */,
+				BC542E39284079D600633781 /* UserAuthViewController.m */,
+				BC542E5C2840A60100633781 /* UserSettingViewController.h */,
+				BC542E5B2840A60000633781 /* UserSettingViewController.m */,
 			);
 			path = Controller;
 			sourceTree = "<group>";
@@ -3385,6 +3421,12 @@
 				2723B64A27F15CF800E0B90B /* SettingBodyView.xib */,
 				2723B65F27F15CFB00E0B90B /* VeriCheckView.h */,
 				2723B64E27F15CF800E0B90B /* VeriCheckView.m */,
+				BC542E3D284079E200633781 /* UserAuthBodyView.h */,
+				BC542E3C284079E200633781 /* UserAuthBodyView.m */,
+				BC542E3E284079E300633781 /* UserAuthBodyView.xib */,
+				BC542E602840A60D00633781 /* UseBodyView.h */,
+				BC542E5E2840A60D00633781 /* UseBodyView.m */,
+				BC542E5F2840A60D00633781 /* UseBodyView.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -4598,11 +4640,13 @@
 				2723B62E27F157D500E0B90B /* GroupApplyChooseAllCell.xib in Resources */,
 				275FA23A27E7356B00CFEA2E /* VefiBodyView.xib in Resources */,
 				BC119258280FA85300A716F7 /* HomeworkListCell.xib in Resources */,
+				BC542E5728409EC900633781 /* InstrumentChooseBottonView.xib in Resources */,
 				2723B63227F157D500E0B90B /* GroupSettingBodyView.xib in Resources */,
 				BCFE53F728128A9600AD6786 /* TeacherShowCell.xib in Resources */,
 				2723B5BF27F157B100E0B90B /* GroupCreateView.xib in Resources */,
 				BC8C2C5E2823F57100FBA5D5 /* AddressDetailBodyView.xib in Resources */,
 				2723B63727F157D500E0B90B /* ApplyBottomView.xib in Resources */,
+				BC542E5928409EC900633781 /* InstrumentChooseCell.xib in Resources */,
 				2723B62F27F157D500E0B90B /* ChatComplainBodyView.xib in Resources */,
 				2723B62127F157D500E0B90B /* NoticeEditBodyView.xib in Resources */,
 				BC5367C9283F6D72008428E8 /* HomeVideoCourseView.xib in Resources */,
@@ -4636,7 +4680,6 @@
 				2779359B27E324A80010E277 /* TZImagePickerController.bundle in Resources */,
 				277935C327E324A90010E277 /* SDQWMaskCustomView.xib in Resources */,
 				BC40B9FA2811768400DEC0D1 /* HotInformationHeadView.xib in Resources */,
-				275FA24A27E7428D00CFEA2E /* InstrumentChooseView.xib in Resources */,
 				BC27A06E280FF56C00F91E27 /* AccompanyEvaluateCell.xib in Resources */,
 				2723B66327F15CFC00E0B90B /* ModifyNameBodyView.xib in Resources */,
 				BCB635B327F6E1A600ACFDCF /* LiveRoomBottomView.xib in Resources */,
@@ -4670,6 +4713,7 @@
 				BC11926C280FAF5900A716F7 /* AccompanyAlertView.xib in Resources */,
 				2723B66F27F15CFC00E0B90B /* AboutUsBodyView.xib in Resources */,
 				275FA23827E7356B00CFEA2E /* FirstSettingBodyView.xib in Resources */,
+				BC542E622840A60E00633781 /* UseBodyView.xib in Resources */,
 				BC27A070280FF56C00F91E27 /* AccompanyStudentEvaCell.xib in Resources */,
 				2723B63927F157D500E0B90B /* GroupMemberListCell.xib in Resources */,
 				BC8A45A0283DC33400094BBB /* JudgePageView.xib in Resources */,
@@ -4684,6 +4728,8 @@
 				BCBFDF48281159A40052AFE5 /* HomeHotAlbumView.xib in Resources */,
 				27F9033727E87C8B00C08A19 /* MineNavView.xib in Resources */,
 				BC8A45AB283DC33400094BBB /* TrackChooseView.xib in Resources */,
+				BC542E40284079E300633781 /* UserAuthBodyView.xib in Resources */,
+				BC542E5528409EC900633781 /* InstrumentHeaderView.xib in Resources */,
 				BC119215280ED6A900A716F7 /* MyLiveCourseCell.xib in Resources */,
 				BC50171727FC0D8E00F8BCBC /* SubjectChooseBodyView.xib in Resources */,
 				BCB6359D27F6D2AB00ACFDCF /* tock.wav in Resources */,
@@ -5030,6 +5076,7 @@
 				2723B61A27F157D500E0B90B /* KSSearchResultViewCell.m in Sources */,
 				BC48C3A92828FC7D00EE65C5 /* KSUploadManager.m in Sources */,
 				BC8A4599283DC33400094BBB /* TBXML.m in Sources */,
+				BC542E4B28409E9F00633781 /* InstrumentChooseViewController.m in Sources */,
 				BC11927A280FB07F00A716F7 /* AccompanyArrangeCell.m in Sources */,
 				277935B827E324A90010E277 /* FSCalendar.m in Sources */,
 				BCB6356C27F6D2A300ACFDCF /* Whiteboard.m in Sources */,
@@ -5038,6 +5085,7 @@
 				BC8A45AE283DC33400094BBB /* SoundCheckView.m in Sources */,
 				2723B67E27F15D3D00E0B90B /* ModifyPhoneCheckController.m in Sources */,
 				2779353A27E324A60010E277 /* UILabel+QWTopLeftLabel.m in Sources */,
+				BC542E5D2840A60100633781 /* UserSettingViewController.m in Sources */,
 				BC119213280ED6A900A716F7 /* MyLessonBodyView.m in Sources */,
 				BC8A45A3283DC33400094BBB /* JudgePageView.m in Sources */,
 				BCB6354227F6D2A300ACFDCF /* VideoListView.m in Sources */,
@@ -5061,6 +5109,7 @@
 				BC119230280ED8F900A716F7 /* TableCourseModel.m in Sources */,
 				BCB6353827F6D2A300ACFDCF /* TipMessageCell.m in Sources */,
 				2779352827E324A60010E277 /* UIColor+Extend.m in Sources */,
+				BC542E3F284079E300633781 /* UserAuthBodyView.m in Sources */,
 				2779357627E324A70010E277 /* ShoppCatView.m in Sources */,
 				BC11927F280FB10900A716F7 /* AccompanyRemarkCell.m in Sources */,
 				2779357127E324A70010E277 /* SkipTextView.m in Sources */,
@@ -5096,7 +5145,6 @@
 				2723B63027F157D500E0B90B /* GroupApplyChooseAllCell.m in Sources */,
 				2723B61F27F157D500E0B90B /* GroupNoticeModel.m in Sources */,
 				275FA1E627E7351900CFEA2E /* KSUpdateAlert.m in Sources */,
-				BCA193BB282B85EF004A585D /* UserVefiViewController.m in Sources */,
 				BCB6353A27F6D2A300ACFDCF /* MessageBaseCell.m in Sources */,
 				2779355027E324A70010E277 /* VoDiskCache.m in Sources */,
 				BCB6353F27F6D2A300ACFDCF /* ChatAreaView.m in Sources */,
@@ -5132,6 +5180,7 @@
 				BCB6354327F6D2A300ACFDCF /* RecentSharedWhiteboardCell.m in Sources */,
 				BC0D1F71281015B000C5D9E5 /* VideoCourseCell.m in Sources */,
 				2779352F27E324A60010E277 /* UIView+Hints.m in Sources */,
+				BC542E612840A60E00633781 /* UseBodyView.m in Sources */,
 				2779351D27E324A60010E277 /* NSString+zh_SafeAccess.m in Sources */,
 				BC8A45A6283DC33400094BBB /* ScoreAnimationView.m in Sources */,
 				BCB6354727F6D2A300ACFDCF /* PersonListView.m in Sources */,
@@ -5139,7 +5188,6 @@
 				BCB635A627F6D90600ACFDCF /* KSLiveEmptyView.m in Sources */,
 				2779359227E324A80010E277 /* WMPlayer.m in Sources */,
 				277935CF27E324A90010E277 /* ALCalendarHeader.m in Sources */,
-				275FA24827E7428200CFEA2E /* InstrumentChooseView.m in Sources */,
 				2779358627E324A80010E277 /* LLPhoto.m in Sources */,
 				277935C127E324A90010E277 /* FSCalendarAppearance.m in Sources */,
 				275E8ABB27E18F8B00DD3F6E /* main.m in Sources */,
@@ -5165,6 +5213,7 @@
 				BCB6346127F6D29600ACFDCF /* KSChatroomMessageCenter.m in Sources */,
 				BC11925B280FA85300A716F7 /* HomeworkSortView.m in Sources */,
 				277935D327E324A90010E277 /* ALCalendarPicker.m in Sources */,
+				BC542E5828409EC900633781 /* InstrumentChooseCell.m in Sources */,
 				BCB6359427F6D2AB00ACFDCF /* NewClassRoomViewController.m in Sources */,
 				BCB6356027F6D2A300ACFDCF /* WhiteboardMessage.m in Sources */,
 				2779354F27E324A70010E277 /* VoLRUManager.m in Sources */,
@@ -5194,6 +5243,7 @@
 				BC119298280FBCB400A716F7 /* UIView+ExtensionForDotLine.m in Sources */,
 				BCB635A927F6D93300ACFDCF /* KSChatVideoView.m in Sources */,
 				2779353027E324A60010E277 /* NSDate+Extension.m in Sources */,
+				BC542E5628409EC900633781 /* InstrumentChooseBottonView.m in Sources */,
 				BCB6356627F6D2A300ACFDCF /* DeviceMessage.m in Sources */,
 				BCBFDF3728110C660052AFE5 /* HomeNavView.m in Sources */,
 				277935D127E324A90010E277 /* ALCalendarCollectionView.m in Sources */,
@@ -5268,6 +5318,7 @@
 				BCB6353E27F6D2A300ACFDCF /* TimeStampMessage.m in Sources */,
 				2779354027E324A60010E277 /* UIImage+Property.m in Sources */,
 				BCFE54002814E1BE00AD6786 /* HomeVideoGroupModel.m in Sources */,
+				BC542E5A28409EC900633781 /* InstrumentHeaderView.m in Sources */,
 				2779356627E324A70010E277 /* ShopMessBtn.m in Sources */,
 				BC11921D280ED6A900A716F7 /* NewClassPopCell.m in Sources */,
 				277935B727E324A90010E277 /* FSCalendarStickyHeader.m in Sources */,
@@ -5371,6 +5422,7 @@
 				BCFE53FA28129A5600AD6786 /* TeacherStyleModel.m in Sources */,
 				2779355527E324A70010E277 /* DiskFreeSpaceManager.m in Sources */,
 				2779352E27E324A60010E277 /* NSDictionary+Extension.m in Sources */,
+				BC542E3B284079D600633781 /* UserAuthViewController.m in Sources */,
 				2779355127E324A70010E277 /* VoCacheManager.m in Sources */,
 				BC8A4594283DC33400094BBB /* MidiPlayerEngine.m in Sources */,
 				277935B527E324A90010E277 /* FSCalendarDelegationFactory.m in Sources */,

BIN
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate


+ 16 - 48
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -23,22 +23,6 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "7FB04BC3-DA77-4E78-82C6-F67F0087B211"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForStudent/Module/Mine/Setting/Controller/SettingViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "291"
-            endingLineNumber = "291"
-            landmarkName = "-modifyUserMessage:gender:birthday:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
             uuid = "A811E03D-935E-4812-9BA4-F901FD668906"
             shouldBeEnabled = "No"
             ignoreCount = "0"
@@ -78,13 +62,13 @@
             filePath = "KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "423"
-            endingLineNumber = "423"
+            startingLineNumber = "424"
+            endingLineNumber = "424"
             landmarkName = "-handleScriptMessageSource:"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "4F6C61A9-D4D5-4F22-B8F3-ED812BE470A4 - e7532b659385b70f"
+                  uuid = "4F6C61A9-D4D5-4F22-B8F3-ED812BE470A4 - e7532b659385b76e"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -94,12 +78,12 @@
                   urlString = "file:///Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "426"
-                  endingLineNumber = "426"
-                  offsetFromSymbolStart = "7404">
+                  startingLineNumber = "427"
+                  endingLineNumber = "427"
+                  offsetFromSymbolStart = "7908">
                </Location>
                <Location
-                  uuid = "4F6C61A9-D4D5-4F22-B8F3-ED812BE470A4 - e7532b659385b70f"
+                  uuid = "4F6C61A9-D4D5-4F22-B8F3-ED812BE470A4 - e7532b659385b76e"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -109,9 +93,9 @@
                   urlString = "file:///Users/wangzhi/DayaWorkspace/Klx_student/KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "426"
-                  endingLineNumber = "426"
-                  offsetFromSymbolStart = "7420">
+                  startingLineNumber = "427"
+                  endingLineNumber = "427"
+                  offsetFromSymbolStart = "7924">
                </Location>
             </Locations>
          </BreakpointContent>
@@ -135,22 +119,6 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "99CF7F13-1490-414C-B049-80DB54A9A42D"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForStudent/Module/Mine/MineCourse/View/MyLessonBodyView.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "158"
-            endingLineNumber = "158"
-            landmarkName = "-requestData"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
             uuid = "3D9A202F-F457-4AD7-B097-BA348C19E5C4"
             shouldBeEnabled = "No"
             ignoreCount = "0"
@@ -174,8 +142,8 @@
             filePath = "KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "527"
-            endingLineNumber = "527"
+            startingLineNumber = "553"
+            endingLineNumber = "553"
             landmarkName = "-refreshUrl:"
             landmarkType = "7">
          </BreakpointContent>
@@ -190,8 +158,8 @@
             filePath = "KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "520"
-            endingLineNumber = "520"
+            startingLineNumber = "546"
+            endingLineNumber = "546"
             landmarkName = "-refreshUrl:"
             landmarkType = "7">
          </BreakpointContent>
@@ -206,8 +174,8 @@
             filePath = "KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "343"
-            endingLineNumber = "343"
+            startingLineNumber = "344"
+            endingLineNumber = "344"
             landmarkName = "-handleScriptMessageSource:"
             landmarkType = "7">
          </BreakpointContent>

+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/choose_instrument.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/choose_instrument.imageset/choose_instrument@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/choose_instrument.imageset/choose_instrument@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/instrument_shadow.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/instrument_shadow.imageset/instrument_shadow@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/instrument_shadow.imageset/instrument_shadow@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/unChoose_instrument.imageset/Contents.json

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

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/unChoose_instrument.imageset/unChoose_instrument@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Login/unChoose_instrument.imageset/unChoose_instrument@3x.png


+ 26 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m

@@ -19,6 +19,7 @@
 #import "KSAccompanyWebViewController.h"
 #import "KSChatConversationViewController.h"
 #import "KSOrderManager.h"
+#import "AddressListViewController.h"
 
 @interface KSBaseWKWebViewController ()
 
@@ -442,6 +443,15 @@
             [self.navigationController pushViewController:ctrl animated:YES];
         }
     }
+    else if ([[parm stringValueForKey:@"api"] isEqualToString:@"setAddress"]) { // 跳转地址选择
+        AddressListViewController *ctrl = [[AddressListViewController alloc] init];
+        ctrl.isChooseAddress = YES;
+        MJWeakSelf;
+        [ctrl chooseAddressAction:^(AddressListModel * _Nonnull model) {
+            [weakSelf sendAddressAction:model];
+        }];
+        [self.navigationController pushViewController:ctrl animated:YES];
+    }
 //    else if ([[parm stringValueForKey:@"api"] isEqualToString:@"enterLiveRoom"]) { // 进入直播间
 //        NSDictionary *valueDic = [parm dictionaryValueForKey:@"content"];
 //        NSString *roomId = [valueDic stringValueForKey:@"roomId"];
@@ -449,6 +459,22 @@
 //    }
 }
 
+- (void)sendAddressAction:(AddressListModel *)model {
+    NSMutableDictionary *sendParm = [NSMutableDictionary dictionary];
+    [sendParm setValue:@"getAddress" forKey:@"api"];
+    NSMutableDictionary *content = [NSMutableDictionary dictionary];
+    [content setValue:model.internalBaseClassIdentifier forKey:@"id"];
+    [content setValue:model.detailAddress forKey:@"detailAddress"];
+    [content setValue:model.city forKey:@"city"];
+    [content setValue:model.region forKey:@"region"];
+    [content setValue:model.province forKey:@"province"];
+    [content setValue:model.name forKey:@"name"];
+    [content setValue:model.phoneNumber forKey:@"phoneNumber"];
+    [content setValue:model.postCode forKey:@"postCode"];
+    [sendParm setValue:content forKey:@"content"];
+    [self postMessage:sendParm];
+}
+
 - (UIImage *)imageWithBase64String:(NSString *)base64String {
     NSURL *URL = [NSURL URLWithString:base64String];
     NSData *imageData = [NSData dataWithContentsOfURL:URL];

+ 10 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.h

@@ -242,6 +242,16 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)modifyUserMessage:(NSString *)post avatal:(NSString *)avatal gender:(NSString *)gender username:(NSString *)username birthdate:(NSString *)birthdate success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
+// /api-auth/user/realNameAuth
+
+/// 实名认证
+/// @param post post
+/// @param idCardNo 身份证
+/// @param realName 姓名
+/// @param success 成功
+/// @param faliure 失败
++ (void)realNameAuthRequest:(NSString *)post idCardNo:(NSString *)idCardNo realName:(NSString *)realName success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
 // /api-student/subject/subjectSelect
 
 /// 声部信息查询 (树状列表)

+ 18 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.m

@@ -701,6 +701,24 @@
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 
+// /api-auth/user/realNameAuth
+
+/// 实名认证
+/// @param post post
+/// @param idCardNo 身份证
+/// @param realName 姓名
+/// @param success 成功
+/// @param faliure 失败
++ (void)realNameAuthRequest:(NSString *)post idCardNo:(NSString *)idCardNo realName:(NSString *)realName success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-auth/user/realNameAuth"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:idCardNo forKey:@"idCardNo"];
+    [parm setValue:realName forKey:@"realName"];
+    [parm setValue:@(YES) forKey:@"save"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
 #pragma mark -------- 群组服务
 // /api-student/imUserFriend/queryAll
 

+ 3 - 3
KulexiuForStudent/KulexiuForStudent/Module/Home/Controller/HomeViewController.m

@@ -8,7 +8,6 @@
 #import "HomeViewController.h"
 #import "KSBaseWKWebViewController.h"
 #import "NotiferMessageViewController.h"
-#import "SubjectChooseViewController.h"
 #import "HomeNavView.h"
 #import "HomeBannerView.h"
 #import <UIButton+WebCache.h>
@@ -52,6 +51,7 @@
 #import "RecentCourseModel.h"
 #import "AccompanyDetailViewController.h"
 #import "KSOrderManager.h"
+#import "InstrumentChooseViewController.h"
 
 #define BUTTONWIDTH (65)
 #define BUTTONHEIGHT (80)
@@ -1146,9 +1146,9 @@
 }
 
 - (void)showInstrumentView:(BOOL)hideBackButton {
-    SubjectChooseViewController *ctrl = [[SubjectChooseViewController alloc] init];
+    InstrumentChooseViewController *ctrl = [[InstrumentChooseViewController alloc] init];
     MJWeakSelf;
-    [ctrl chooseSubjectCallback:^{
+    [ctrl chooseCallback:^{
         [weakSelf requestUserInfo:NO];
         [weakSelf requestData];
     }];

+ 23 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/InstrumentChooseViewController.h

@@ -0,0 +1,23 @@
+//
+//  InstrumentChooseViewController.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "KSBaseViewController.h"
+
+
+typedef void(^ChooseInstrumentCallback)(void);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface InstrumentChooseViewController : KSBaseViewController
+
+@property (nonatomic, assign) BOOL isModalPresent;
+
+- (void)chooseCallback:(ChooseInstrumentCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 317 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Controller/InstrumentChooseViewController.m

@@ -0,0 +1,317 @@
+//
+//  InstrumentChooseViewController.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "InstrumentChooseViewController.h"
+#import "InstrumentMessageModel.h"
+#import "InstrumentChooseCell.h"
+#import "InstrumentChooseBottonView.h"
+#import "InstrumentHeaderView.h"
+
+@interface InstrumentChooseViewController ()<UICollectionViewDelegate,UICollectionViewDataSource>
+
+@property (nonatomic, copy) ChooseInstrumentCallback callback;
+
+@property (nonatomic, copy) UICollectionView *collectionView;
+
+@property (nonatomic, strong) NSMutableArray *parentArray;
+
+@property (nonatomic, strong) NSMutableArray *instrumentArray;
+
+@property (nonatomic, copy) InstrumentChooseBottonView *bottomView;
+
+@property (nonatomic, strong) NSMutableArray *chooseArray;
+
+@end
+
+@implementation InstrumentChooseViewController
+
+- (void)chooseCallback:(ChooseInstrumentCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self allocTitle:@"可教授乐器"];
+    [self configUI];
+    [self requestInstrumentMessage];
+}
+
+- (void)configUI {
+    [self.scrollView removeFromSuperview];
+    [self.view addSubview:self.bottomView];
+    [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.mas_equalTo(self.view);
+        make.bottom.mas_equalTo(self.view.mas_bottom).offset(-iPhoneXSafeBottomMargin);
+        make.height.mas_equalTo(90);
+    }];
+    
+    UIView *headView = [[UIView alloc] init];
+    headView.layer.backgroundColor = [UIColor whiteColor].CGColor;
+    [self.view addSubview:headView];
+    [headView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(self.view.mas_top).mas_offset(10);
+        make.left.mas_equalTo(self.view.mas_left).offset(14.0f);
+        make.right.mas_equalTo(self.view.mas_right).offset(-14.0f);
+        make.height.mas_equalTo(36.0f);
+    }];
+    
+    
+    CAGradientLayer * gradientLayer = [CAGradientLayer layer];
+    gradientLayer.colors = @[(__bridge id)HexRGB(0xFFF6EE).CGColor,(__bridge id)HexRGB(0xFFECDD).CGColor];
+    gradientLayer.startPoint = CGPointMake(0.04, 0);
+    gradientLayer.endPoint = CGPointMake(0.97, 1.07);
+    gradientLayer.frame = CGRectMake(0, 0, kScreenWidth - 28, 36);
+    gradientLayer.locations = @[@(0),@(1)];
+    [headView.layer addSublayer:gradientLayer];
+    headView.layer.cornerRadius = 10.0f;
+    headView.layer.masksToBounds = YES;
+    
+    UILabel *tipsLabel = [[UILabel alloc] init];
+    tipsLabel.text = @"最多可选择1个乐器";
+    tipsLabel.textColor = HexRGB(0xFF9E5A);
+    tipsLabel.font = [UIFont systemFontOfSize:14.0f];
+    [headView addSubview:tipsLabel];
+    [tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(headView.mas_left).offset(11.0f);
+        make.right.mas_equalTo(headView.mas_right).offset(-11.0f);
+        make.height.mas_equalTo(22.0f);
+        make.centerY.mas_equalTo(headView.mas_centerY);
+    }];
+    
+    [self.view addSubview:self.collectionView];
+    [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(self.view.mas_left).offset(15);
+        make.right.mas_equalTo(self.view.mas_right).offset(-15);
+        make.top.mas_equalTo(headView.mas_bottom);
+        make.bottom.mas_equalTo(self.bottomView.mas_top);
+    }];
+}
+
+- (void)requestInstrumentMessage {
+    [self showhud];
+    [KSNetworkingManager studentQuerySubject:KS_GET success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            [self evaluateSource:[dic arrayValueForKey:@"data"]];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+        
+    }];
+}
+
+- (void)evaluateSource:(NSArray *)sourceArray {
+    @autoreleasepool {
+        NSMutableArray *valueArray = [sourceArray mutableCopy];
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+            NSMutableArray *parentNodeArray = [NSMutableArray array];
+            NSMutableArray *instrumentArray = [NSMutableArray array];
+
+            for (NSInteger i = 0; i < valueArray.count; i++) {
+                NSMutableDictionary *parentNodeDic = [NSMutableDictionary dictionary];
+                NSDictionary *parm = valueArray[i];
+                [parentNodeDic setValue:[parm stringValueForKey:@"id"] forKey:@"subjectId"];
+                [parentNodeDic setValue:[parm stringValueForKey:@"name"] forKey:@"subjectName"];
+                
+                NSArray *subjects = [parm arrayValueForKey:@"subjects"];
+                if (subjects.count > 0) {
+                    // 添加父节点分类
+                    [parentNodeArray addObject:parentNodeDic];
+                    
+                    NSMutableArray *subjectModelArray = [NSMutableArray array];
+                    for (NSDictionary *dic in subjects) {
+                        InstrumentMessageModel *model = [[InstrumentMessageModel alloc] initWithDictionary:dic];
+                        [subjectModelArray addObject:model];
+                    }
+                    [instrumentArray addObject:subjectModelArray];
+                }
+            }
+            self.parentArray = [NSMutableArray arrayWithArray:parentNodeArray];
+            self.instrumentArray = [NSMutableArray arrayWithArray:instrumentArray];
+            dispatch_main_async_safe(^{
+                // 刷新
+                [self refreshView];
+            });
+        });
+    };
+}
+
+
+- (void)refreshView {
+    [self.collectionView reloadData];
+}
+
+#pragma mark ----- collection view data source
+- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
+    return self.parentArray.count;
+}
+
+- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
+    NSMutableArray *instrumentArray = self.instrumentArray[section];
+    return instrumentArray.count;
+}
+
+- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
+    NSMutableArray *instrumentArray = self.instrumentArray[indexPath.section];
+    InstrumentMessageModel *model = instrumentArray[indexPath.item];
+    InstrumentChooseCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"InstrumentChooseCell" forIndexPath:indexPath];
+    [cell configCellWithModel:model];
+    return cell;
+}
+
+- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
+    NSMutableArray *instrumentArray = self.instrumentArray[indexPath.section];
+    InstrumentMessageModel *model = instrumentArray[indexPath.item];
+    model.isChoose = !model.isChoose;
+    [self countMessageWithModel:model indexPath:indexPath];
+}
+
+- (void)countMessageWithModel:(InstrumentMessageModel *)model indexPath:(NSIndexPath *)indexPath {
+    if (model.isChoose) {
+        if (![self judgeContainModel:model]) {
+            if (self.chooseArray.count == 1) {
+                [self MBPShow:@"最多只能选择1个乐器"];
+                return;
+            }
+            [self.chooseArray addObject:model];
+        }
+    }
+    else {
+        if ([self judgeContainModel:model]) {
+            [self removeWithInstrumentId:model.internalBaseClassIdentifier];
+        }
+    }
+    [self.collectionView reloadItemsAtIndexPaths:@[indexPath]];
+}
+
+- (BOOL)judgeContainModel:(InstrumentMessageModel *)model {
+    BOOL contain = NO;
+    for (InstrumentMessageModel *chooseModel in self.chooseArray) {
+        if ([chooseModel.internalBaseClassIdentifier isEqualToString:model.internalBaseClassIdentifier]) {
+            contain = YES;
+            break;
+        }
+    }
+    return contain;
+}
+
+- (void)removeWithInstrumentId:(NSString *)instrumentId {
+    for (InstrumentMessageModel *chooseModel in self.chooseArray) {
+        if ([chooseModel.internalBaseClassIdentifier isEqualToString:instrumentId]) {
+            [self.chooseArray removeObject:chooseModel];
+            break;
+        }
+    }
+}
+
+- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
+    NSDictionary *parm = self.parentArray[indexPath.section];
+    NSString *subjectName = [parm stringValueForKey:@"subjectName"];
+    InstrumentHeaderView *headView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"InstrumentHeaderView" forIndexPath:indexPath];
+    [headView evaluateWithMessage:subjectName];
+    return headView;
+}
+
+#pragma mark ------ lazying
+
+- (NSMutableArray *)chooseArray {
+    if (!_chooseArray) {
+        _chooseArray = [NSMutableArray array];
+    }
+    return _chooseArray;
+}
+- (UICollectionView *)collectionView {
+    if (!_collectionView) {
+        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
+        CGFloat width = (kScreen_Width - 15 * 2 - 20) / 3.0f;
+        CGFloat height = width;
+        layout.itemSize = CGSizeMake(width, height);
+        layout.headerReferenceSize = CGSizeMake(kScreen_Width - 30, 40);
+        _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
+        _collectionView.backgroundColor = [UIColor clearColor];
+        _collectionView.delegate = self;
+        _collectionView.dataSource = self;
+        _collectionView.showsVerticalScrollIndicator = NO;
+        _collectionView.showsHorizontalScrollIndicator = NO;
+        [_collectionView registerNib:[UINib nibWithNibName:@"InstrumentChooseCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"InstrumentChooseCell"];
+        [_collectionView registerNib:[UINib nibWithNibName:@"InstrumentHeaderView" bundle:[NSBundle mainBundle]] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"InstrumentHeaderView"];
+    }
+    return _collectionView;
+}
+
+- (InstrumentChooseBottonView *)bottomView {
+    if (!_bottomView) {
+        _bottomView = [InstrumentChooseBottonView shareInstance];
+        MJWeakSelf;
+        [_bottomView sureCallback:^{
+            [weakSelf chooseInstrumentAction];
+        }];
+    }
+    return _bottomView;
+}
+
+- (void)chooseInstrumentAction {
+    if (self.chooseArray.count == 0) {
+        [self MBPShow:@"请选择可教授乐器"];
+        return;
+    }
+    NSMutableArray *instrumentArray = [NSMutableArray array];
+    for (InstrumentMessageModel *model in self.chooseArray) {
+        NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+        [parm setValue:model.name forKey:@"subjectName"];
+        [parm setValue:model.internalBaseClassIdentifier forKey:@"subjectId"];
+        [instrumentArray addObject:parm];
+    }
+    [self sureChooseSubject];
+}
+
+- (void)sureChooseSubject {
+    InstrumentMessageModel *model = [self.chooseArray firstObject];
+    NSString *subjectId = model.internalBaseClassIdentifier;
+    [self showhud];
+    [KSNetworkingManager studentSetSubject:KS_GET subjectIds:subjectId success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            MJWeakSelf;
+            [self KSShowMsg:@"设置成功" promptCompletion:^{
+                if (weakSelf.callback) {
+                    weakSelf.callback();
+                }
+                [weakSelf backAction];
+            }];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+- (void)backAction {
+    if (self.isModalPresent) {
+        [self.navigationController dismissViewControllerAnimated:YES completion:nil];
+    }
+    else {
+        [self.navigationController popViewControllerAnimated:YES];
+    }
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Model/InstrumentMessageModel.h

@@ -22,6 +22,7 @@
 @property (nonatomic, strong) NSString *parentSubjectName;
 @property (nonatomic, strong) NSString *desc;
 @property (nonatomic, strong) NSString *parentSubjectId;
+@property (nonatomic, assign) BOOL isChoose;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 23 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseBottonView.h

@@ -0,0 +1,23 @@
+//
+//  InstrumentChooseBottonView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import <UIKit/UIKit.h>
+
+
+typedef void(^InstrumentChooseCallback)(void);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface InstrumentChooseBottonView : UIView
+
++ (instancetype)shareInstance;
+
+- (void)sureCallback:(InstrumentChooseCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 43 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseBottonView.m

@@ -0,0 +1,43 @@
+//
+//  InstrumentChooseBottonView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "InstrumentChooseBottonView.h"
+
+@interface InstrumentChooseBottonView ()
+
+@property (nonatomic, copy) InstrumentChooseCallback callback;
+
+@end
+
+@implementation InstrumentChooseBottonView
+
++ (instancetype)shareInstance {
+    InstrumentChooseBottonView *view = [[[NSBundle mainBundle] loadNibNamed:@"InstrumentChooseBottonView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)sureCallback:(InstrumentChooseCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (IBAction)sureAction:(id)sender {
+    if (self.callback) {
+        self.callback();
+    }
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 46 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseBottonView.xib

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="InstrumentChooseBottonView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="88"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Uf1-mj-TtD">
+                    <rect key="frame" x="28" y="10" width="358" height="44"/>
+                    <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="44" id="d5b-G6-Zxi"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" title="确认"/>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="22"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                    <connections>
+                        <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="wLV-gx-Z3y"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="Uf1-mj-TtD" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="28" id="2ev-7D-ncM"/>
+                <constraint firstItem="Uf1-mj-TtD" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="XfO-IP-zIf"/>
+                <constraint firstAttribute="trailing" secondItem="Uf1-mj-TtD" secondAttribute="trailing" constant="28" id="d7h-AJ-pUx"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="131.8840579710145" y="-192.1875"/>
+        </view>
+    </objects>
+</document>

+ 19 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseCell.h

@@ -0,0 +1,19 @@
+//
+//  InstrumentChooseCell.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import <UIKit/UIKit.h>
+#import "InstrumentMessageModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface InstrumentChooseCell : UICollectionViewCell
+
+- (void)configCellWithModel:(InstrumentMessageModel *)model;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 34 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseCell.m

@@ -0,0 +1,34 @@
+//
+//  InstrumentChooseCell.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "InstrumentChooseCell.h"
+
+@interface InstrumentChooseCell ()
+
+@property (weak, nonatomic) IBOutlet UILabel *subjectName;
+
+@property (weak, nonatomic) IBOutlet UIImageView *subjectImage;
+
+@property (weak, nonatomic) IBOutlet UIImageView *statusImage;
+
+@end
+
+@implementation InstrumentChooseCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)configCellWithModel:(InstrumentMessageModel *)model {
+    self.subjectName.text = [NSString returnNoNullStringWithString:model.name];
+    [self.subjectImage sd_setImageWithURL:[NSURL URLWithString:[model.img getUrlEndcodeString]]];
+    NSString *imageName = model.isChoose ? @"choose_instrument" : @"unChoose_instrument";
+    [self.statusImage setImage:[UIImage imageNamed:imageName]];
+}
+
+@end

+ 90 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseCell.xib

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="InstrumentChooseCell">
+            <rect key="frame" x="0.0" y="0.0" width="153" height="158"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                <rect key="frame" x="0.0" y="0.0" width="153" height="158"/>
+                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aMj-6T-ziE">
+                        <rect key="frame" x="0.0" y="0.0" width="153" height="158"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="dbO-Xw-Sfj">
+                                <rect key="frame" x="0.0" y="0.0" width="153" height="158"/>
+                            </imageView>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="instrument_shadow" translatesAutoresizingMaskIntoConstraints="NO" id="in2-KE-vrH">
+                                <rect key="frame" x="0.0" y="0.0" width="153" height="158"/>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AfO-mp-RH6">
+                                <rect key="frame" x="7" y="129" width="139" height="22"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="22" id="aR3-f9-nyE"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
+                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="unChoose_instrument" translatesAutoresizingMaskIntoConstraints="NO" id="iEB-Cn-yoM">
+                                <rect key="frame" x="124" y="7" width="22" height="22"/>
+                            </imageView>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="iEB-Cn-yoM" firstAttribute="top" secondItem="aMj-6T-ziE" secondAttribute="top" constant="7" id="2lq-Ia-A9O"/>
+                            <constraint firstItem="in2-KE-vrH" firstAttribute="top" secondItem="dbO-Xw-Sfj" secondAttribute="top" id="4Ts-fe-DLg"/>
+                            <constraint firstAttribute="trailing" secondItem="AfO-mp-RH6" secondAttribute="trailing" constant="7" id="5Wv-bk-WgY"/>
+                            <constraint firstItem="dbO-Xw-Sfj" firstAttribute="top" secondItem="aMj-6T-ziE" secondAttribute="top" id="614-Cc-fFn"/>
+                            <constraint firstItem="in2-KE-vrH" firstAttribute="bottom" secondItem="dbO-Xw-Sfj" secondAttribute="bottom" id="EVD-Mk-U4h"/>
+                            <constraint firstAttribute="bottom" secondItem="dbO-Xw-Sfj" secondAttribute="bottom" id="Iva-PK-3qa"/>
+                            <constraint firstItem="AfO-mp-RH6" firstAttribute="leading" secondItem="aMj-6T-ziE" secondAttribute="leading" constant="7" id="QH7-im-tpe"/>
+                            <constraint firstAttribute="trailing" secondItem="iEB-Cn-yoM" secondAttribute="trailing" constant="7" id="Qob-IA-Uui"/>
+                            <constraint firstAttribute="trailing" secondItem="dbO-Xw-Sfj" secondAttribute="trailing" id="dvg-ST-Oxp"/>
+                            <constraint firstItem="dbO-Xw-Sfj" firstAttribute="leading" secondItem="aMj-6T-ziE" secondAttribute="leading" id="jpM-gl-ap7"/>
+                            <constraint firstItem="in2-KE-vrH" firstAttribute="trailing" secondItem="dbO-Xw-Sfj" secondAttribute="trailing" id="lia-u2-jQ3"/>
+                            <constraint firstItem="in2-KE-vrH" firstAttribute="leading" secondItem="dbO-Xw-Sfj" secondAttribute="leading" id="sgk-YX-ZDj"/>
+                            <constraint firstAttribute="bottom" secondItem="AfO-mp-RH6" secondAttribute="bottom" constant="7" id="yk7-Mt-ZIh"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                <real key="value" value="7"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                    </view>
+                </subviews>
+            </view>
+            <viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="aMj-6T-ziE" secondAttribute="trailing" id="52a-Fz-uOD"/>
+                <constraint firstItem="aMj-6T-ziE" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="9fr-KX-eUX"/>
+                <constraint firstItem="aMj-6T-ziE" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="F2v-Hk-PaJ"/>
+                <constraint firstAttribute="bottom" secondItem="aMj-6T-ziE" secondAttribute="bottom" id="xcb-am-Uzs"/>
+            </constraints>
+            <size key="customSize" width="153" height="158"/>
+            <connections>
+                <outlet property="statusImage" destination="iEB-Cn-yoM" id="xO3-yk-8yb"/>
+                <outlet property="subjectImage" destination="dbO-Xw-Sfj" id="Lwz-6x-9eg"/>
+                <outlet property="subjectName" destination="AfO-mp-RH6" id="OkB-9m-Fau"/>
+            </connections>
+            <point key="canvasLocation" x="206.52173913043481" y="113.83928571428571"/>
+        </collectionViewCell>
+    </objects>
+    <resources>
+        <image name="instrument_shadow" width="108" height="108"/>
+        <image name="unChoose_instrument" width="22" height="22"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 0 - 16
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseView.h

@@ -1,16 +0,0 @@
-//
-//  InstrumentChooseView.h
-//  KulexiuForStudent
-//
-//  Created by Kyle on 2022/3/20.
-//
-
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface InstrumentChooseView : UIView
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 20
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseView.m

@@ -1,20 +0,0 @@
-//
-//  InstrumentChooseView.m
-//  KulexiuForStudent
-//
-//  Created by Kyle on 2022/3/20.
-//
-
-#import "InstrumentChooseView.h"
-
-@implementation InstrumentChooseView
-
-/*
-// Only override drawRect: if you perform custom drawing.
-// An empty implementation adversely affects performance during animation.
-- (void)drawRect:(CGRect)rect {
-    // Drawing code
-}
-*/
-
-@end

+ 0 - 117
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentChooseView.xib

@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
-    <device id="retina6_1" orientation="portrait" appearance="light"/>
-    <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
-        <capability name="System colors in document resources" minToolsVersion="11.0"/>
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <objects>
-        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
-        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-        <view contentMode="scaleToFill" id="iN0-l3-epB">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
-            <autoresizingMask key="autoresizingMask"/>
-            <subviews>
-                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QaX-k8-7I1">
-                    <rect key="frame" x="0.0" y="645.5" width="414" height="250.5"/>
-                    <subviews>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="单簧管" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hnp-wV-ZlH">
-                            <rect key="frame" x="176" y="19" width="62" height="28"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="28" id="lyc-W2-AfF"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
-                            <nil key="textColor"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S0O-Nc-BMa">
-                            <rect key="frame" x="34" y="65" width="346" height="58.5"/>
-                            <attributedString key="attributedText">
-                                <fragment content="音色具有铜管的特色,但又温和高雅,带有哀愁和诗意,在铜管和木管乐器之间起到媒介作用,表现力极其丰富,是铜管乐器中音域最宽,应用最广泛的乐器。">
-                                    <attributes>
-                                        <color key="NSBackgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
-                                        <color key="NSColor" red="0.47843137250000001" green="0.47843137250000001" blue="0.47843137250000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                        <font key="NSFont" metaFont="system" size="14"/>
-                                        <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineSpacing="4" tighteningFactorForTruncation="0.0"/>
-                                    </attributes>
-                                </fragment>
-                            </attributedString>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="436-NW-aRk">
-                            <rect key="frame" x="112" y="148.5" width="190" height="40"/>
-                            <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="40" id="ZKZ-Ur-Apa"/>
-                                <constraint firstAttribute="width" constant="190" id="rRM-Og-vJH"/>
-                            </constraints>
-                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                            <state key="normal" title=" 开启管乐练习之路"/>
-                            <userDefinedRuntimeAttributes>
-                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                    <real key="value" value="20"/>
-                                </userDefinedRuntimeAttribute>
-                            </userDefinedRuntimeAttributes>
-                        </button>
-                    </subviews>
-                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                    <constraints>
-                        <constraint firstItem="S0O-Nc-BMa" firstAttribute="leading" secondItem="QaX-k8-7I1" secondAttribute="leading" constant="34" id="OcJ-Vi-MUd"/>
-                        <constraint firstItem="Hnp-wV-ZlH" firstAttribute="centerX" secondItem="QaX-k8-7I1" secondAttribute="centerX" id="Sj1-Ng-Tlk"/>
-                        <constraint firstAttribute="bottom" secondItem="436-NW-aRk" secondAttribute="bottom" constant="62" id="SwX-C4-pyF"/>
-                        <constraint firstAttribute="trailing" secondItem="S0O-Nc-BMa" secondAttribute="trailing" constant="34" id="T1b-0h-kNd"/>
-                        <constraint firstItem="436-NW-aRk" firstAttribute="top" secondItem="S0O-Nc-BMa" secondAttribute="bottom" constant="25" id="pM4-D9-mvt"/>
-                        <constraint firstItem="Hnp-wV-ZlH" firstAttribute="top" secondItem="QaX-k8-7I1" secondAttribute="top" constant="19" id="qED-hl-Nh1"/>
-                        <constraint firstItem="S0O-Nc-BMa" firstAttribute="top" secondItem="Hnp-wV-ZlH" secondAttribute="bottom" constant="18" id="uLI-wa-VQn"/>
-                        <constraint firstItem="436-NW-aRk" firstAttribute="centerX" secondItem="QaX-k8-7I1" secondAttribute="centerX" id="ywl-Qe-sD4"/>
-                    </constraints>
-                </view>
-                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ljh-Wd-HJu">
-                    <rect key="frame" x="0.0" y="0.0" width="414" height="70"/>
-                    <subviews>
-                        <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nGv-CS-Trn">
-                            <rect key="frame" x="31" y="12" width="98" height="58"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                        </view>
-                        <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Pum-BJ-nJ5">
-                            <rect key="frame" x="211" y="4" width="98" height="58"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                        </view>
-                    </subviews>
-                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="70" id="Q29-LN-RYW"/>
-                    </constraints>
-                </view>
-                <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2D5-2y-I2b">
-                    <rect key="frame" x="0.0" y="226" width="414" height="314"/>
-                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                </view>
-            </subviews>
-            <color key="backgroundColor" red="0.96078431372549022" green="0.96470588235294119" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-            <constraints>
-                <constraint firstItem="Ljh-Wd-HJu" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="Gld-DO-GoI"/>
-                <constraint firstItem="QaX-k8-7I1" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="QXf-fm-RH1"/>
-                <constraint firstItem="Ljh-Wd-HJu" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="c3k-6c-QsQ"/>
-                <constraint firstAttribute="trailing" secondItem="Ljh-Wd-HJu" secondAttribute="trailing" id="lpO-Do-kKN"/>
-                <constraint firstAttribute="trailing" secondItem="QaX-k8-7I1" secondAttribute="trailing" id="oif-b1-81C"/>
-                <constraint firstAttribute="bottom" secondItem="QaX-k8-7I1" secondAttribute="bottom" id="rnH-vq-OK6"/>
-            </constraints>
-            <nil key="simulatedTopBarMetrics"/>
-            <nil key="simulatedBottomBarMetrics"/>
-            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
-            <point key="canvasLocation" x="131.8840579710145" y="95.758928571428569"/>
-        </view>
-    </objects>
-    <resources>
-        <systemColor name="systemBackgroundColor">
-            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-        </systemColor>
-    </resources>
-</document>

+ 18 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentHeaderView.h

@@ -0,0 +1,18 @@
+//
+//  InstrumentHeaderView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface InstrumentHeaderView : UICollectionReusableView
+
+- (void)evaluateWithMessage:(NSString *)message;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 26 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentHeaderView.m

@@ -0,0 +1,26 @@
+//
+//  InstrumentHeaderView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "InstrumentHeaderView.h"
+
+@interface InstrumentHeaderView ()
+@property (weak, nonatomic) IBOutlet UILabel *headerLabel;
+
+@end
+
+@implementation InstrumentHeaderView
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)evaluateWithMessage:(NSString *)message {
+    self.headerLabel.text = [NSString returnNoNullStringWithString:message];
+}
+
+@end

+ 52 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/InstrumentHeaderView.xib

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <collectionReusableView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="U6b-Vx-4bR" customClass="InstrumentHeaderView">
+            <rect key="frame" x="0.0" y="0.0" width="356" height="74"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="accell_left" translatesAutoresizingMaskIntoConstraints="NO" id="l1b-Vv-Tib">
+                    <rect key="frame" x="0.0" y="30" width="4" height="14"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="4" id="BMA-sE-wRY"/>
+                        <constraint firstAttribute="height" constant="14" id="M4c-7m-Pao"/>
+                    </constraints>
+                </imageView>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="乐器类型一" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jBb-Ij-7Sm">
+                    <rect key="frame" x="10" y="22" width="82" height="30"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="30" id="MR7-38-gaS"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
+                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="9Gg-ye-v9C"/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="jBb-Ij-7Sm" firstAttribute="centerY" secondItem="l1b-Vv-Tib" secondAttribute="centerY" id="0so-3m-o9b"/>
+                <constraint firstItem="l1b-Vv-Tib" firstAttribute="leading" secondItem="9Gg-ye-v9C" secondAttribute="leading" id="7f7-O1-Hyg"/>
+                <constraint firstItem="l1b-Vv-Tib" firstAttribute="centerY" secondItem="U6b-Vx-4bR" secondAttribute="centerY" id="HvZ-UC-auv"/>
+                <constraint firstItem="9Gg-ye-v9C" firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="jBb-Ij-7Sm" secondAttribute="trailing" constant="10" id="MXa-gB-45O"/>
+                <constraint firstItem="jBb-Ij-7Sm" firstAttribute="leading" secondItem="l1b-Vv-Tib" secondAttribute="trailing" constant="6" id="V78-lJ-XJL"/>
+            </constraints>
+            <connections>
+                <outlet property="headerLabel" destination="jBb-Ij-7Sm" id="DoX-60-9Zq"/>
+            </connections>
+            <point key="canvasLocation" x="157.97101449275362" y="71.651785714285708"/>
+        </collectionReusableView>
+    </objects>
+    <resources>
+        <image name="accell_left" width="4" height="14"/>
+    </resources>
+</document>

+ 8 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/AddressList/Controller/AddressListViewController.h

@@ -6,11 +6,18 @@
 //
 
 #import "KSBaseViewController.h"
-
+#import "AddressListModel.h"
 NS_ASSUME_NONNULL_BEGIN
 
+typedef void(^ChooseAddressCallback)(AddressListModel *model);
+
+
 @interface AddressListViewController : KSBaseViewController
 
+@property (nonatomic, assign) BOOL isChooseAddress;
+
+- (void)chooseAddressAction:(ChooseAddressCallback)callback;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 16 - 1
KulexiuForStudent/KulexiuForStudent/Module/Mine/AddressList/Controller/AddressListViewController.m

@@ -9,7 +9,6 @@
 #import "MyAddressListCell.h"
 #import "AddressBottomView.h"
 #import "AddressDetailViewController.h"
-#import "AddressListModel.h"
 #import "KSImageAlert.h"
 
 @interface AddressListViewController ()<UITableViewDataSource,UITableViewDelegate>
@@ -18,10 +17,18 @@
 
 @property (nonatomic, strong) AddressBottomView *bottomView;
 
+@property (nonatomic, copy) ChooseAddressCallback callback;
+
 @end
 
 @implementation AddressListViewController
 
+- (void)chooseAddressAction:(ChooseAddressCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
@@ -121,6 +128,14 @@
     [self.navigationController pushViewController:ctrl animated:YES];
 }
 
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    if (self.callback) {
+        AddressListModel *model = self.dataArray[indexPath.row];
+        self.callback(model);
+        [self backAction];
+    }
+}
+
 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
     return YES;
 }

+ 11 - 2
KulexiuForStudent/KulexiuForStudent/Module/Mine/Controller/MineViewController.m

@@ -17,6 +17,7 @@
 #import "StudentInfoModel.h"
 #import "MyCourseViewController.h"
 #import "HomeworkListViewController.h"
+#import "UserSettingViewController.h"
 
 @interface MineViewController ()
 
@@ -170,12 +171,14 @@
             break;
         case MINEVIEWTYPE_FINISHCOURSE:
         {
-            
+            MyCourseViewController *ctrl = [[MyCourseViewController alloc] init];
+            [self.navigationController pushViewController:ctrl animated:YES];
         }
             break;
         case MINEVIEWTYPE_UNFINISHCOURSE:
         {
-            
+            MyCourseViewController *ctrl = [[MyCourseViewController alloc] init];
+            [self.navigationController pushViewController:ctrl animated:YES];
         }
             break;
         case MINEVIEWTYPE_FOLLOW:
@@ -185,6 +188,12 @@
             [self.navigationController pushViewController:webCtrl animated:YES];
         }
             break;
+        case MINEVIEWTYPE_USER:
+        {
+            UserSettingViewController *ctrl = [[UserSettingViewController alloc] init];
+            [self.navigationController pushViewController:ctrl animated:YES];
+        }
+            break;
         default:
             break;
     }

+ 1 - 282
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/SettingViewController.m

@@ -7,36 +7,15 @@
 
 #import "SettingViewController.h"
 #import "SettingBodyView.h"
-#import "RCConnectionManager.h"
-#import "LoginViewController.h"
-#import "AppDelegate.h"
-#import "CustomNavViewController.h"
-#import "JPUSHService.h"
 #import "KSBaseWKWebViewController.h"
-#import "ModifyNameViewController.h"
-#import "ModifyViewController.h"
-#import "ModifyPhoneCheckController.h"
-#import "KSMediaManager.h"
 #import "FeedbackViewController.h"
 #import "AboutUsViewController.h"
-#import "UserInfoManager.h"
 #import "AddressListViewController.h"
-#import "KSFullDatePicker.h"
-#import "StudentInfoModel.h"
-#import "SubjectChooseViewController.h"
 
 @interface SettingViewController ()
 
 @property (nonatomic, strong) SettingBodyView *bodyView;
 
-@property (nonatomic, strong) NSString *userSex;
-
-@property (nonatomic, strong) KSMediaManager *mediaManager;
-
-@property (nonatomic, strong) UserInfo *mineInfo;
-
-@property (nonatomic, strong) NSString *birthday;
-
 @end
 
 @implementation SettingViewController
@@ -46,76 +25,6 @@
     // Do any additional setup after loading the view.
     [self allocTitle:@"设置"];
     [self configUI];
-    [self requestUserMessage];
-    [self requestSubjectInfo];
-}
-
-- (void)requestSubjectInfo {
-    [KSNetworkingManager  queryStudentInfoRequest:KS_GET success:^(NSDictionary * _Nonnull dic) {
-        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-            StudentInfoModel *studentInfo = [[StudentInfoModel alloc] initWithDictionary:[dic dictionaryValueForKey:@"data"]];
-            NSString *rongToken = UserDefault(RongTokenKey);
-            if ([NSString isEmptyString:rongToken]) {
-                [USER_MANAGER queryUserInfoConnectRongCloud:YES];
-            }
-            [self refreshStudentSubject:studentInfo.subjectName];
-        }
-        else {
-            [self MBPShow:MESSAGEKEY];
-        }
-    } faliure:^(NSError * _Nonnull error) {
-        
-    }];
-}
-- (void)refreshStudentSubject:(NSString *)subjectName {
-    if ([NSString isEmptyString:subjectName]) {
-        subjectName = @"请选择乐器";
-    }
-    self.bodyView.subjectLabel.text = subjectName;
-}
-
-- (void)requestUserMessage {
-    
-    [USER_MANAGER queryUserInfoCallback:^(UserInfo * _Nonnull userInfo) {
-        self.mineInfo = userInfo;
-        [self configMessage];
-    }];
-}
-
-- (void)configMessage {
-    if (![NSString isEmptyString:self.mineInfo.avatar]) {
-        [self.bodyView.userAvatal sd_setImageWithURL:[NSURL URLWithString:[self.mineInfo.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
-    }
-    else {
-        [self.bodyView.userAvatal setImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
-    }
-    self.bodyView.nickNameLabel.text = [NSString returnNoNullStringWithString:self.mineInfo.username];
-    NSString *userSex = @"";
-    if ([self.mineInfo.gender isEqualToString:@"1"]) {
-        userSex = @"男";
-        self.userSex = @"1";
-    }
-    else {
-        userSex = @"女";
-        self.userSex = @"0";
-    }
-    self.bodyView.genderLabel.text = userSex;
-    self.bodyView.phoneLabel.text = [NSString returnNoNullStringWithString:self.mineInfo.phone];
-    NSString *authStatus = @"";
-    if (USER_MANAGER.hasAuth) {
-        authStatus = @"已认证";
-    }
-    else {
-        authStatus = @"未认证";
-    }
-    self.bodyView.authStatusLabel.text = authStatus;
-    if ([NSString isEmptyString:self.mineInfo.birthdate]) {
-        self.bodyView.birthdayLabel.text = @"未设置";
-    }
-    else {
-        self.bodyView.birthdayLabel.text = [[self.mineInfo.birthdate componentsSeparatedByString:@" "] firstObject];
-    }
-    
 }
 
 - (void)configUI {
@@ -125,8 +34,7 @@
         make.bottom.mas_equalTo(self.view.mas_bottom).offset(-iPhoneXSafeBottomMargin);
     }];
     self.bodyView = [SettingBodyView shareInstance];
-    CGFloat height = [self.bodyView getViewHeight];
-    CGFloat viewHeight = height > KPortraitHeight - kNaviBarHeight - iPhoneXSafeBottomMargin ? height : KPortraitHeight - kNaviBarHeight - iPhoneXSafeBottomMargin;
+    CGFloat viewHeight = KPortraitHeight - kNaviBarHeight - iPhoneXSafeBottomMargin;
     [self.scrollView addSubview:self.bodyView];
     [self.bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.top.mas_equalTo(self.scrollView.mas_top);
@@ -143,46 +51,6 @@
 
 - (void)operationAction:(SETTINGACTION)type {
     switch (type) {
-        case SETTINGACTION_AVATAL: // 头像
-        {
-            [self chooseImage];
-        }
-            break;
-        case SETTINGACTION_NAME:
-        {
-            ModifyNameViewController *nameCtrl = [[ModifyNameViewController alloc] init];
-            nameCtrl.preNickName = self.mineInfo.username;
-            MJWeakSelf;
-            [nameCtrl successCallback:^{
-                [weakSelf requestUserMessage];
-            }];
-            [self.navigationController pushViewController:nameCtrl animated:YES];
-        }
-            break;
-        case SETTINGACTION_SEX:
-        {
-            [self showModifySexAlert];
-        }
-            break;
-        case SETTINGACTION_PHONE:
-        {
-            ModifyPhoneCheckController *checkCtrl = [[ModifyPhoneCheckController alloc] init];
-            [self.navigationController pushViewController:checkCtrl animated:YES];
-        }
-            break;
-        case SETTINGACTION_PWD:
-        {
-            ModifyViewController *modifyVC = [[ModifyViewController alloc] init];
-            [self.navigationController pushViewController:modifyVC animated:YES];
-        }
-            break;
-        case SETTINGACTION_VEFI: // 实名认证
-        {
-            if (USER_MANAGER.hasAuth == NO) {
-                
-            }
-        }
-            break;
         case SETTINGACTION_ADDRESS:
         {
             AddressListViewController *ctrl = [[AddressListViewController alloc] init];
@@ -213,160 +81,11 @@
             [self.navigationController pushViewController:aboutUs animated:YES];
         }
             break;
-        case SETTINGACTION_LOGOUT: // 退出登录
-        {
-            [self logoutAction];
-        }
-            break;
-        case SETTINGACTION_BIRTHDAY:
-        {
-            [self chooseBirthDay];
-        }
-            break;
-        case SETTINGACTION_SUBJECT:
-        {
-            [self showInstrumentView];
-        }
         default:
             break;
     }
 }
 
-- (void)showInstrumentView {
-    SubjectChooseViewController *ctrl = [[SubjectChooseViewController alloc] init];
-    MJWeakSelf;
-    [ctrl chooseSubjectCallback:^{
-        [weakSelf requestSubjectInfo];
-    }];
-    [self.navigationController pushViewController:ctrl animated:YES];
-    
-}
-
-- (void)chooseBirthDay {
-    MJWeakSelf;
-    KSFullDatePicker *datePicker = [[KSFullDatePicker alloc] initWithTitle:@"" date:[NSDate date] pickMode:KSDATEPICKER_MODE_DAY selectDateBlock:^(NSString *date) {
-        [weakSelf.bodyView.birthdayLabel setText:date];
-        weakSelf.birthday = date;
-        [weakSelf modifyUserMessage:nil gender:self.userSex birthday:date];
-    } cancleBlock:^{
-        
-    }];
-    [datePicker show];
-}
-
-
-
-- (void)chooseImage {
-    // 调用相册
-    self.mediaManager = [[KSMediaManager alloc] init];
-    self.mediaManager.mediaType = MEDIATYPE_PHOTO;
-    self.mediaManager.maxPhotoNumber = 1;
-    self.mediaManager.baseCtrl = self;
-    self.mediaManager.needCropImage = NO;
-    MJWeakSelf;
-    [self.mediaManager noAlertCallback:^(NSString * _Nullable videoUrl, NSMutableArray * _Nullable imageArray, NSMutableArray * _Nullable imageAsset) {
-        UIImage *sendImg = [imageArray lastObject];
-        [weakSelf updateWithUserLogo:sendImg];
-    }];
-    [self.mediaManager pushImagePickerController];
-}
-
-- (void)updateWithUserLogo:(UIImage *)image {
-    NSData *imgData = [UIImage turnsImaegDataByImage:image];
-    NSString *fileName = @"image";
-    [[KSUploadManager shareInstance] uploadImage:imgData fileName:fileName successCallback:^(NSMutableArray * _Nonnull fileUrlArray) {
-        NSString *avatarUrl = [fileUrlArray lastObject];
-        [self modifyUserMessage:avatarUrl gender:nil birthday:nil];
-    } faliure:^(NSError * _Nullable error, NSString *descMessaeg) {
-        if ([NSString isEmptyString:descMessaeg]) {
-            [self MBPShow:descMessaeg];
-        }
-    }];
-}
-
-- (void)modifyUserMessage:(NSString *)imgUrl gender:(NSString *)gender birthday:(NSString *)birthday {
-    NSString *userName = nil;
-    [self showhud];
-    [KSNetworkingManager modifyUserMessage:KS_POST avatal:imgUrl gender:gender username:userName birthdate:birthday success:^(NSDictionary * _Nonnull dic) {
-        [self removehub];
-        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
-            [self MBPShow:@"修改成功"];
-            [self requestUserMessage];
-        }
-        else {
-            [self MBPShow:MESSAGEKEY];
-        }
-    } faliure:^(NSError * _Nonnull error) {
-        [self removehub];
-    }];
-}
-
-
-
-- (void)showModifySexAlert {
-    NSString *titleString = @"选择性别";
-    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"" message:titleString preferredStyle:IS_IPAD ? UIAlertControllerStyleAlert : UIAlertControllerStyleActionSheet];
-    NSMutableAttributedString *titleAtt = [[NSMutableAttributedString alloc] initWithString:titleString];
-    [titleAtt addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16.0f] range:NSMakeRange(0, titleString.length)];
-    [titleAtt addAttribute:NSForegroundColorAttributeName value:HexRGB(0x999999) range:NSMakeRange(0, titleString.length)];
-    [alertVC setValue:titleAtt forKey:@"attributedMessage"];
-    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"男" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        
-        self.bodyView.genderLabel.text = @"男";
-        self.userSex = @"1";
-        [self modifyUserSex];
-    }];
-    [actionOne setValue:THEMECOLOR forKey:@"_titleTextColor"];
-    [alertVC addAction:actionOne];
-    UIAlertAction *actionTwo = [UIAlertAction actionWithTitle:@"女" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        
-        self.bodyView.genderLabel.text = @"女";
-        self.userSex = @"0";
-        [self modifyUserSex];
-    }];
-    [actionTwo setValue:THEMECOLOR forKey:@"_titleTextColor"];
-    [alertVC addAction:actionTwo];
-    
-    UIAlertAction *cancleAlert = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
-        
-    }];
-    [alertVC addAction:cancleAlert];
-    [cancleAlert setValue:HexRGB(0x444444) forKey:@"_titleTextColor"];
-    alertVC.modalPresentationStyle = UIModalPresentationFullScreen;
-    [self presentViewController:alertVC animated:true completion:nil];
-}
-
-- (void)modifyUserSex {
-    // 更新性别
-    [self modifyUserMessage:nil gender:self.userSex birthday:nil];
-}
-
-- (void)logoutAction {
-    [KSNetworkingManager logoutRequest:KS_POST success:^(NSDictionary * _Nonnull dic) {
-        [self clearSource];
-    } faliure:^(NSError * _Nonnull error) {
-        [self clearSource];
-    }];
-}
-
-- (void)clearSource {
-    [RCConnectionManager shareManager].isNeedJoin = NO;
-    [RCConnectionManager shareManager].isNeedShowMessage = NO;
-    [[RCIM sharedRCIM] logout];
-    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
-    // 取消推送别名
-    [JPUSHService deleteAlias:nil seq:0];
-    [[NSUserDefaults standardUserDefaults] removeObjectForKey:TokenKey];
-    [[NSUserDefaults standardUserDefaults] removeObjectForKey:Token_type];
-    [[NSUserDefaults standardUserDefaults] removeObjectForKey:RefreshToken];
-    [[NSUserDefaults standardUserDefaults] removeObjectForKey:RongTokenKey];
-    [[NSUserDefaults standardUserDefaults] synchronize];
-    [KSNetworkingManager clearRequestHeader];
-    LoginViewController *loginVC = [[LoginViewController alloc] init];
-    CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:loginVC];
-    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
-    appDelegate.window.rootViewController = navCtrl;
-}
 
 /*
 #pragma mark - Navigation

+ 20 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserAuthViewController.h

@@ -0,0 +1,20 @@
+//
+//  UserAuthViewController.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/27.
+//
+
+#import "KSBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef void(^AuthSuccessCallback)(void);
+/// 实名认证
+@interface UserAuthViewController : KSBaseViewController
+
+- (void)sureCallback:(AuthSuccessCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 85 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserAuthViewController.m

@@ -0,0 +1,85 @@
+//
+//  UserAuthViewController.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/27.
+//
+
+#import "UserAuthViewController.h"
+#import "UserAuthBodyView.h"
+
+@interface UserAuthViewController ()
+
+@property (nonatomic, strong) UserAuthBodyView *bodyView;
+
+@property (nonatomic, copy) AuthSuccessCallback callback;
+
+@end
+
+@implementation UserAuthViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self allocTitle:@"实名认证"];
+    [self configUI];
+}
+
+- (void)configUI {
+    self.bodyView = [UserAuthBodyView shareInstance];
+    [self.scrollView removeFromSuperview];
+    [self.view addSubview:self.bodyView];
+    [self.bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.right.bottom.left.mas_equalTo(self.view);
+    }];
+    MJWeakSelf;
+    [self.bodyView sureAuthCall:^{
+        [weakSelf authAction];
+    }];
+}
+
+- (void)sureCallback:(AuthSuccessCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+- (void)authAction {
+    if ([NSString isEmptyString:self.bodyView.nameField.text]) {
+        [self MBPShow:@"请输入姓名"];
+        return;
+    }
+    else if ([NSString isEmptyString:self.bodyView.cardField.text]) {
+        [self MBPShow:@"请输入身份证号"];
+        return;
+    }
+    [self showhud];
+    [KSNetworkingManager realNameAuthRequest:KS_POST idCardNo:self.bodyView.cardField.text realName:self.bodyView.nameField.text success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            MJWeakSelf;
+            [self KSShowMsg:@"认证成功" promptCompletion:^{
+                [weakSelf backAction];
+                if (self.callback) {
+                    self.callback();
+                }
+            }];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 16 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserSettingViewController.h

@@ -0,0 +1,16 @@
+//
+//  UserSettingViewController.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/27.
+//
+
+#import "KSBaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface UserSettingViewController : KSBaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 354 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserSettingViewController.m

@@ -0,0 +1,354 @@
+//
+//  UserSettingViewController.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/27.
+//
+
+#import "UserSettingViewController.h"
+#import "UseBodyView.h"
+#import "RCConnectionManager.h"
+#import "LoginViewController.h"
+#import "AppDelegate.h"
+#import "CustomNavViewController.h"
+#import "JPUSHService.h"
+#import "KSBaseWKWebViewController.h"
+#import "ModifyNameViewController.h"
+#import "ModifyViewController.h"
+#import "ModifyPhoneCheckController.h"
+#import "KSChoosePicker.h"
+#import "KSMediaManager.h"
+#import "UserAuthViewController.h"
+#import "UserInfoManager.h"
+#import "InstrumentChooseViewController.h"
+#import "StudentInfoModel.h"
+#import "KSFullDatePicker.h"
+
+@interface UserSettingViewController ()
+
+@property (nonatomic, strong) UseBodyView *bodyView;
+
+@property (nonatomic, strong) NSString *userSex;
+
+@property (nonatomic, strong) KSMediaManager *mediaManager;
+
+@property (nonatomic, strong) UserInfo *mineInfo;
+
+@property (nonatomic, strong) NSString *birthday;
+
+@end
+
+@implementation UserSettingViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self allocTitle:@"设置"];
+    [self configUI];
+    [self requestUserMessage];
+    [self requestSubjectInfo];
+}
+
+- (void)requestSubjectInfo {
+    [KSNetworkingManager  queryStudentInfoRequest:KS_GET success:^(NSDictionary * _Nonnull dic) {
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            StudentInfoModel *studentInfo = [[StudentInfoModel alloc] initWithDictionary:[dic dictionaryValueForKey:@"data"]];
+            NSString *rongToken = UserDefault(RongTokenKey);
+            if ([NSString isEmptyString:rongToken]) {
+                [USER_MANAGER queryUserInfoConnectRongCloud:YES];
+            }
+            [self refreshStudentSubject:studentInfo.subjectName];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        
+    }];
+}
+
+- (void)refreshStudentSubject:(NSString *)subjectName {
+    if ([NSString isEmptyString:subjectName]) {
+        subjectName = @"请选择乐器";
+    }
+    self.bodyView.subjectLabel.text = subjectName;
+}
+
+- (void)requestUserMessage {
+    
+    [USER_MANAGER queryUserInfoCallback:^(UserInfo * _Nonnull userInfo) {
+        self.mineInfo = userInfo;
+        [self configMessage];
+    }];
+}
+
+- (void)configMessage {
+    if (![NSString isEmptyString:self.mineInfo.avatar]) {
+        [self.bodyView.userAvatal sd_setImageWithURL:[NSURL URLWithString:[self.mineInfo.avatar getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
+    }
+    else {
+        [self.bodyView.userAvatal setImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
+    }
+    self.bodyView.nickNameLabel.text = [NSString returnNoNullStringWithString:self.mineInfo.username];
+    NSString *userSex = @"";
+    if ([self.mineInfo.gender isEqualToString:@"1"]) {
+        userSex = @"男";
+        self.userSex = @"1";
+    }
+    else {
+        userSex = @"女";
+        self.userSex = @"0";
+    }
+    self.bodyView.genderLabel.text = userSex;
+    self.bodyView.phoneLabel.text = [NSString returnNoNullStringWithString:self.mineInfo.phone];
+    NSString *authStatus = @"";
+    if (USER_MANAGER.hasAuth) {
+        authStatus = @"已认证";
+    }
+    else {
+        authStatus = @"未认证";
+    }
+    self.bodyView.authStatusLabel.text = authStatus;
+    
+    if ([NSString isEmptyString:self.mineInfo.birthdate]) {
+        self.bodyView.birthdayLabel.text = @"未设置";
+    }
+    else {
+        self.bodyView.birthdayLabel.text = [[self.mineInfo.birthdate componentsSeparatedByString:@" "] firstObject];
+    }
+}
+
+- (void)configUI {
+    [self.scrollView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.mas_equalTo(self.view);
+        make.top.mas_equalTo(self.view.mas_top);
+        make.bottom.mas_equalTo(self.view.mas_bottom).offset(-iPhoneXSafeBottomMargin);
+    }];
+    self.bodyView = [UseBodyView shareInstance];
+    CGFloat height = [self.bodyView getViewHeight];
+    CGFloat viewHeight = height > KPortraitHeight - kNaviBarHeight - iPhoneXSafeBottomMargin ? height : KPortraitHeight - kNaviBarHeight - iPhoneXSafeBottomMargin;
+    [self.scrollView addSubview:self.bodyView];
+    [self.bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(self.scrollView.mas_top);
+        make.right.left.mas_equalTo(self.view);
+        make.height.mas_equalTo(viewHeight);
+    }];
+    [self.scrollView setContentSize:CGSizeMake(kScreenWidth, viewHeight)];
+    KSWeakSelf(weakSelf);
+    [self.bodyView userSettingAction:^(USERSETTING type) {
+        [weakSelf operationAction:type];
+    }];
+}
+
+- (void)operationAction:(USERSETTING)type {
+    switch (type) {
+        case USERSETTING_AVATAL: // 头像
+        {
+            [self chooseImage];
+        }
+            break;
+        case USERSETTING_NAME:
+        {
+            ModifyNameViewController *nameCtrl = [[ModifyNameViewController alloc] init];
+            nameCtrl.preNickName = self.mineInfo.username;
+            MJWeakSelf;
+            [nameCtrl successCallback:^{
+                [weakSelf requestUserMessage];
+            }];
+            [self.navigationController pushViewController:nameCtrl animated:YES];
+        }
+            break;
+        case USERSETTING_SEX:
+        {
+            [self showModifySexAlert];
+        }
+            break;
+        case USERSETTING_PHONE:
+        {
+            ModifyPhoneCheckController *checkCtrl = [[ModifyPhoneCheckController alloc] init];
+            [self.navigationController pushViewController:checkCtrl animated:YES];
+        }
+            break;
+        case USERSETTING_PWD:
+        {
+            ModifyViewController *modifyVC = [[ModifyViewController alloc] init];
+            [self.navigationController pushViewController:modifyVC animated:YES];
+        }
+            break;
+        case USERSETTING_BIRTHDAY:
+        {
+            [self chooseBirthDay];
+        }
+            break;
+        case USERSETTING_SUBJECT:
+        {
+            [self showInstrumentView];
+        }
+            break;
+        case USERSETTING_VEFI:
+        {
+            if (USER_MANAGER.hasAuth == NO) {
+                UserAuthViewController *ctrl = [[UserAuthViewController alloc] init];
+                MJWeakSelf;
+                [ctrl sureCallback:^{
+                    [weakSelf requestUserMessage];
+                }];
+                [self.navigationController pushViewController:ctrl animated:YES];
+            }
+        }
+            break;
+        case USERSETTING_LOGOUT:
+        {
+            [self logoutAction];
+        }
+            break;
+        default:
+            break;
+    }
+}
+
+- (void)showInstrumentView {
+    InstrumentChooseViewController *ctrl = [[InstrumentChooseViewController alloc] init];
+    MJWeakSelf;
+    [ctrl chooseCallback:^{
+        [weakSelf requestSubjectInfo];
+    }];
+    [self.navigationController pushViewController:ctrl animated:YES];
+    
+}
+
+- (void)chooseBirthDay {
+    MJWeakSelf;
+    KSFullDatePicker *datePicker = [[KSFullDatePicker alloc] initWithTitle:@"" date:[NSDate date] pickMode:KSDATEPICKER_MODE_DAY selectDateBlock:^(NSString *date) {
+        [weakSelf.bodyView.birthdayLabel setText:date];
+        weakSelf.birthday = date;
+        [weakSelf modifyUserMessage:nil gender:self.userSex birthday:date];
+    } cancleBlock:^{
+        
+    }];
+    [datePicker show];
+}
+
+
+- (void)chooseImage {
+    // 调用相册
+    self.mediaManager = [[KSMediaManager alloc] init];
+    self.mediaManager.mediaType = MEDIATYPE_PHOTO;
+    self.mediaManager.maxPhotoNumber = 1;
+    self.mediaManager.baseCtrl = self;
+    self.mediaManager.needCropImage = NO;
+    MJWeakSelf;
+    [self.mediaManager noAlertCallback:^(NSString * _Nullable videoUrl, NSMutableArray * _Nullable imageArray, NSMutableArray * _Nullable imageAsset) {
+        UIImage *sendImg = [imageArray lastObject];
+        [weakSelf updateWithUserLogo:sendImg];
+    }];
+    [self.mediaManager pushImagePickerController];
+}
+
+- (void)updateWithUserLogo:(UIImage *)image {
+    NSData *imgData = [UIImage turnsImaegDataByImage:image];
+    NSString *fileName = @"image";
+    [[KSUploadManager shareInstance] uploadImage:imgData fileName:fileName successCallback:^(NSMutableArray * _Nonnull fileUrlArray) {
+        NSString *avatarUrl = [fileUrlArray lastObject];
+        [self modifyUserMessage:avatarUrl gender:nil birthday:nil];
+    } faliure:^(NSError * _Nullable error, NSString *descMessaeg) {
+        if ([NSString isEmptyString:descMessaeg]) {
+            [self MBPShow:descMessaeg];
+        }
+    }];
+}
+
+- (void)modifyUserMessage:(NSString *)imgUrl gender:(NSString *)gender birthday:(NSString *)birthday {
+    NSString *userName = nil;
+    [self showhud];
+    [KSNetworkingManager modifyUserMessage:KS_POST avatal:imgUrl gender:gender username:userName birthdate:birthday success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            [self MBPShow:@"修改成功"];
+            [self requestUserMessage];
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+
+
+- (void)showModifySexAlert {
+    NSString *titleString = @"选择性别";
+    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"" message:titleString preferredStyle:IS_IPAD ? UIAlertControllerStyleAlert : UIAlertControllerStyleActionSheet];
+    NSMutableAttributedString *titleAtt = [[NSMutableAttributedString alloc] initWithString:titleString];
+    [titleAtt addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16.0f] range:NSMakeRange(0, titleString.length)];
+    [titleAtt addAttribute:NSForegroundColorAttributeName value:HexRGB(0x999999) range:NSMakeRange(0, titleString.length)];
+    [alertVC setValue:titleAtt forKey:@"attributedMessage"];
+    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"男" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+        
+        self.bodyView.genderLabel.text = @"男";
+        self.userSex = @"1";
+        [self modifyUserSex];
+    }];
+    [actionOne setValue:THEMECOLOR forKey:@"_titleTextColor"];
+    [alertVC addAction:actionOne];
+    UIAlertAction *actionTwo = [UIAlertAction actionWithTitle:@"女" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+        
+        self.bodyView.genderLabel.text = @"女";
+        self.userSex = @"0";
+        [self modifyUserSex];
+    }];
+    [actionTwo setValue:THEMECOLOR forKey:@"_titleTextColor"];
+    [alertVC addAction:actionTwo];
+    
+    UIAlertAction *cancleAlert = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+        
+    }];
+    [alertVC addAction:cancleAlert];
+    [cancleAlert setValue:HexRGB(0x444444) forKey:@"_titleTextColor"];
+    alertVC.modalPresentationStyle = UIModalPresentationFullScreen;
+    [self presentViewController:alertVC animated:true completion:nil];
+}
+
+- (void)modifyUserSex {
+    // 更新性别
+    [self modifyUserMessage:nil gender:self.userSex birthday:nil];
+}
+
+- (void)logoutAction {
+    [KSNetworkingManager logoutRequest:KS_POST success:^(NSDictionary * _Nonnull dic) {
+        [self clearSource];
+    } faliure:^(NSError * _Nonnull error) {
+        [self clearSource];
+    }];
+}
+
+- (void)clearSource {
+    [RCConnectionManager shareManager].isNeedJoin = NO;
+    [RCConnectionManager shareManager].isNeedShowMessage = NO;
+    [[RCIM sharedRCIM] logout];
+    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
+    // 取消推送别名
+    [JPUSHService deleteAlias:nil seq:0];
+    [[NSUserDefaults standardUserDefaults] removeObjectForKey:TokenKey];
+    [[NSUserDefaults standardUserDefaults] removeObjectForKey:Token_type];
+    [[NSUserDefaults standardUserDefaults] removeObjectForKey:RefreshToken];
+    [[NSUserDefaults standardUserDefaults] removeObjectForKey:RongTokenKey];
+    [[NSUserDefaults standardUserDefaults] synchronize];
+    [KSNetworkingManager clearRequestHeader];
+    LoginViewController *loginVC = [[LoginViewController alloc] init];
+    CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:loginVC];
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    appDelegate.window.rootViewController = navCtrl;
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 0 - 16
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserVefiViewController.h

@@ -1,16 +0,0 @@
-//
-//  UserVefiViewController.h
-//  KulexiuForStudent
-//
-//  Created by 王智 on 2022/5/11.
-//
-
-#import "KSBaseViewController.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface UserVefiViewController : KSBaseViewController
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 32
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/UserVefiViewController.m

@@ -1,32 +0,0 @@
-//
-//  UserVefiViewController.m
-//  KulexiuForStudent
-//
-//  Created by 王智 on 2022/5/11.
-//
-
-#import "UserVefiViewController.h"
-
-@interface UserVefiViewController ()
-
-@end
-
-@implementation UserVefiViewController
-
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    // Do any additional setup after loading the view.
-    [self allocTitle:@"实名认证"];
-}
-
-/*
-#pragma mark - Navigation
-
-// In a storyboard-based application, you will often want to do a little preparation before navigation
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
-    // Get the new view controller using [segue destinationViewController].
-    // Pass the selected object to the new view controller.
-}
-*/
-
-@end

+ 1 - 25
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/SettingBodyView.h

@@ -8,20 +8,11 @@
 #import <UIKit/UIKit.h>
 
 typedef NS_ENUM(NSInteger, SETTINGACTION) {
-    SETTINGACTION_AVATAL = 1001, // 头像
-    SETTINGACTION_NAME,  // 修改姓名
-    SETTINGACTION_SEX,   // 修改性别
-    SETTINGACTION_PHONE, // 修改手机号
-    SETTINGACTION_PWD,   // 修改密码
-    SETTINGACTION_VEFI,  // 实名认证
-    SETTINGACTION_ADDRESS, // 地址
+    SETTINGACTION_ADDRESS = 1001, // 地址
     SETTINGACTION_ONLINECHECK, // 进入教室检测
     SETTINGACTION_PRIVACY,  // 隐私
     SETTINGACTION_FEEEDBACK, // 反馈
     SETTINGACTION_ABOUTUS,  // 关于我们
-    SETTINGACTION_LOGOUT,   // 退出登录
-    SETTINGACTION_BIRTHDAY, // 生日
-    SETTINGACTION_SUBJECT,  // 声部设置
 };
 
 typedef void(^SettingCallback)(SETTINGACTION type);
@@ -30,19 +21,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface SettingBodyView : UIView
 
-@property (weak, nonatomic) IBOutlet UIImageView *userAvatal;
-
-@property (weak, nonatomic) IBOutlet UILabel *nickNameLabel;
-
-@property (weak, nonatomic) IBOutlet UILabel *genderLabel;
-
-@property (weak, nonatomic) IBOutlet UILabel *phoneLabel;
-
-@property (weak, nonatomic) IBOutlet UILabel *authStatusLabel;
-
-@property (weak, nonatomic) IBOutlet UILabel *birthdayLabel;
-
-@property (weak, nonatomic) IBOutlet UILabel *subjectLabel;
 
 @property (nonatomic, assign) BOOL enableCheck;
 
@@ -50,8 +28,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)settingAction:(SettingCallback)callback;
 
-- (CGFloat)getViewHeight;
-
 @end
 
 NS_ASSUME_NONNULL_END

+ 0 - 10
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/SettingBodyView.m

@@ -47,16 +47,6 @@
     [self.switchButton setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
 }
 
-- (IBAction)logoutAction:(id)sender {
-    if (self.callback) {
-        self.callback(SETTINGACTION_LOGOUT);
-    }
-}
-
-- (CGFloat)getViewHeight {
-    return 15 + 64 + 12 + 310 + 12 + 160 + 12 + 160 + 25 + 50 + 15;
-}
-
 /*
  // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 32 - 575
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/SettingBodyView.xib

@@ -4,7 +4,6 @@
     <dependencies>
         <deployment identifier="iOS"/>
         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
-        <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -14,453 +13,11 @@
             <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
-                <view tag="1001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GuW-h5-PZ3">
-                    <rect key="frame" x="14" y="15" width="386" height="64"/>
-                    <subviews>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="Y0N-Qr-8Oe">
-                            <rect key="frame" x="12" y="8" width="48" height="48"/>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="48" id="0vg-xx-4vW"/>
-                                <constraint firstAttribute="height" constant="48" id="xfx-Ty-fpC"/>
-                            </constraints>
-                            <userDefinedRuntimeAttributes>
-                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                                    <real key="value" value="24"/>
-                                </userDefinedRuntimeAttribute>
-                            </userDefinedRuntimeAttributes>
-                        </imageView>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改头像" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jt4-Rh-F5Z">
-                            <rect key="frame" x="289" y="22" width="66" height="20"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="HJw-YK-ybh">
-                            <rect key="frame" x="365" y="26.5" width="6" height="11"/>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="6" id="DB5-Fb-IAg"/>
-                                <constraint firstAttribute="height" constant="11" id="iCm-IC-8hh"/>
-                            </constraints>
-                        </imageView>
-                    </subviews>
-                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                    <gestureRecognizers/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="64" id="0Mn-3n-m8f"/>
-                        <constraint firstItem="HJw-YK-ybh" firstAttribute="centerY" secondItem="Jt4-Rh-F5Z" secondAttribute="centerY" id="937-LO-krE"/>
-                        <constraint firstItem="Y0N-Qr-8Oe" firstAttribute="centerY" secondItem="GuW-h5-PZ3" secondAttribute="centerY" id="E9p-Wf-cl7"/>
-                        <constraint firstItem="HJw-YK-ybh" firstAttribute="leading" secondItem="Jt4-Rh-F5Z" secondAttribute="trailing" constant="10" id="aoA-ZJ-9Ph"/>
-                        <constraint firstItem="Y0N-Qr-8Oe" firstAttribute="leading" secondItem="GuW-h5-PZ3" secondAttribute="leading" constant="12" id="cQl-FA-RxI"/>
-                        <constraint firstAttribute="trailing" secondItem="HJw-YK-ybh" secondAttribute="trailing" constant="15" id="mu8-Mo-LcX"/>
-                        <constraint firstItem="HJw-YK-ybh" firstAttribute="centerY" secondItem="GuW-h5-PZ3" secondAttribute="centerY" id="n8P-y5-oSA"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                    </userDefinedRuntimeAttributes>
-                    <connections>
-                        <outletCollection property="gestureRecognizers" destination="hus-UO-UOG" appends="YES" id="xCJ-Fa-R7o"/>
-                    </connections>
-                </view>
-                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0Pf-RE-eZa">
-                    <rect key="frame" x="14" y="91" width="386" height="310"/>
-                    <subviews>
-                        <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Q6y-w1-LNd">
-                            <rect key="frame" x="0.0" y="5" width="386" height="50"/>
-                            <subviews>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vJz-tn-tZw">
-                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="75" id="DrB-dE-4Ey"/>
-                                    </constraints>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9mw-jx-odd">
-                                    <rect key="frame" x="355" y="0.0" width="0.0" height="49"/>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="Lgj-eb-Lgx">
-                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="11" id="b7Q-Bd-SeX"/>
-                                        <constraint firstAttribute="width" constant="6" id="kdm-QC-12c"/>
-                                    </constraints>
-                                </imageView>
-                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eE2-1M-Kb0">
-                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
-                                    <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="1" id="N9h-zf-c97"/>
-                                    </constraints>
-                                </view>
-                            </subviews>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <gestureRecognizers/>
-                            <constraints>
-                                <constraint firstItem="9mw-jx-odd" firstAttribute="top" secondItem="Q6y-w1-LNd" secondAttribute="top" id="FbV-O8-sTf"/>
-                                <constraint firstAttribute="trailing" secondItem="Lgj-eb-Lgx" secondAttribute="trailing" constant="15" id="GMd-RJ-7rC"/>
-                                <constraint firstItem="vJz-tn-tZw" firstAttribute="centerY" secondItem="Q6y-w1-LNd" secondAttribute="centerY" id="N1h-pD-eTX"/>
-                                <constraint firstItem="Lgj-eb-Lgx" firstAttribute="centerY" secondItem="Q6y-w1-LNd" secondAttribute="centerY" id="QPW-14-nRd"/>
-                                <constraint firstItem="vJz-tn-tZw" firstAttribute="leading" secondItem="Q6y-w1-LNd" secondAttribute="leading" constant="12" id="USc-5h-JAw"/>
-                                <constraint firstAttribute="height" constant="50" id="XSc-Nx-EEg"/>
-                                <constraint firstItem="Lgj-eb-Lgx" firstAttribute="leading" secondItem="9mw-jx-odd" secondAttribute="trailing" constant="10" id="ZYR-km-gku"/>
-                                <constraint firstItem="9mw-jx-odd" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="vJz-tn-tZw" secondAttribute="trailing" constant="15" id="cbI-Xi-dLD"/>
-                                <constraint firstAttribute="bottom" secondItem="eE2-1M-Kb0" secondAttribute="bottom" id="dVt-NX-VKa"/>
-                                <constraint firstAttribute="trailing" secondItem="eE2-1M-Kb0" secondAttribute="trailing" constant="9" id="huZ-Vl-tKe"/>
-                                <constraint firstItem="eE2-1M-Kb0" firstAttribute="leading" secondItem="Q6y-w1-LNd" secondAttribute="leading" constant="11" id="mxV-5V-bx0"/>
-                                <constraint firstItem="eE2-1M-Kb0" firstAttribute="top" secondItem="9mw-jx-odd" secondAttribute="bottom" id="oIZ-9n-RQB"/>
-                            </constraints>
-                            <connections>
-                                <outletCollection property="gestureRecognizers" destination="O34-NJ-j90" appends="YES" id="a28-Bc-xU0"/>
-                            </connections>
-                        </view>
-                        <view tag="1003" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Tz3-5D-EcJ">
-                            <rect key="frame" x="0.0" y="55" width="386" height="50"/>
-                            <subviews>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="性别" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="64I-71-ROr">
-                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="75" id="NmE-d0-zxg"/>
-                                    </constraints>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="5KE-gt-Kwa">
-                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="11" id="2MY-TL-bTh"/>
-                                        <constraint firstAttribute="width" constant="6" id="cdR-V1-3AA"/>
-                                    </constraints>
-                                </imageView>
-                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vtb-Eb-ZoP">
-                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
-                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="1" id="FMd-Hn-Tsw"/>
-                                    </constraints>
-                                </view>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eVe-2E-45u">
-                                    <rect key="frame" x="355" y="0.0" width="0.0" height="49"/>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                            </subviews>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <gestureRecognizers/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="50" id="3UW-Ic-jgq"/>
-                                <constraint firstAttribute="bottom" secondItem="vtb-Eb-ZoP" secondAttribute="bottom" id="9es-cY-VYR"/>
-                                <constraint firstItem="vtb-Eb-ZoP" firstAttribute="top" secondItem="eVe-2E-45u" secondAttribute="bottom" id="DWe-am-cec"/>
-                                <constraint firstItem="eVe-2E-45u" firstAttribute="top" secondItem="Tz3-5D-EcJ" secondAttribute="top" id="Gan-UP-UQT"/>
-                                <constraint firstItem="5KE-gt-Kwa" firstAttribute="leading" secondItem="eVe-2E-45u" secondAttribute="trailing" constant="10" id="TzB-fD-hgb"/>
-                                <constraint firstItem="64I-71-ROr" firstAttribute="centerY" secondItem="Tz3-5D-EcJ" secondAttribute="centerY" id="a5C-Ud-oHs"/>
-                                <constraint firstAttribute="trailing" secondItem="5KE-gt-Kwa" secondAttribute="trailing" constant="15" id="buz-ed-aS9"/>
-                                <constraint firstItem="vtb-Eb-ZoP" firstAttribute="leading" secondItem="Tz3-5D-EcJ" secondAttribute="leading" constant="11" id="cQ7-2T-zfI"/>
-                                <constraint firstItem="5KE-gt-Kwa" firstAttribute="centerY" secondItem="Tz3-5D-EcJ" secondAttribute="centerY" id="lae-Gt-RV9"/>
-                                <constraint firstAttribute="trailing" secondItem="vtb-Eb-ZoP" secondAttribute="trailing" constant="9" id="nag-dP-nlU"/>
-                                <constraint firstItem="eVe-2E-45u" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="64I-71-ROr" secondAttribute="trailing" constant="15" id="ut0-F5-xdL"/>
-                                <constraint firstItem="64I-71-ROr" firstAttribute="leading" secondItem="Tz3-5D-EcJ" secondAttribute="leading" constant="12" id="v95-QD-M07"/>
-                            </constraints>
-                            <connections>
-                                <outletCollection property="gestureRecognizers" destination="0lQ-SW-kEX" appends="YES" id="PJa-SW-D1n"/>
-                            </connections>
-                        </view>
-                        <view tag="1004" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="y2Z-Pu-GKq">
-                            <rect key="frame" x="0.0" y="105" width="386" height="50"/>
-                            <subviews>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="手机号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5x9-qj-kzm">
-                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="75" id="91h-tq-at5"/>
-                                    </constraints>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M6z-rl-5CW">
-                                    <rect key="frame" x="355" y="0.0" width="0.0" height="49"/>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="hP7-NV-Abx">
-                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="6" id="Qgt-tm-iIS"/>
-                                        <constraint firstAttribute="height" constant="11" id="x1t-ZK-XUL"/>
-                                    </constraints>
-                                </imageView>
-                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iQs-T6-7jm">
-                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
-                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="1" id="J3u-DU-AaA"/>
-                                    </constraints>
-                                </view>
-                            </subviews>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <gestureRecognizers/>
-                            <constraints>
-                                <constraint firstItem="M6z-rl-5CW" firstAttribute="top" secondItem="y2Z-Pu-GKq" secondAttribute="top" id="76W-HA-Xyh"/>
-                                <constraint firstItem="iQs-T6-7jm" firstAttribute="leading" secondItem="y2Z-Pu-GKq" secondAttribute="leading" constant="11" id="7eQ-QY-Rsa"/>
-                                <constraint firstItem="hP7-NV-Abx" firstAttribute="leading" secondItem="M6z-rl-5CW" secondAttribute="trailing" constant="10" id="7ic-y9-44s"/>
-                                <constraint firstAttribute="trailing" secondItem="hP7-NV-Abx" secondAttribute="trailing" constant="15" id="Dc9-D9-Yks"/>
-                                <constraint firstItem="M6z-rl-5CW" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="5x9-qj-kzm" secondAttribute="trailing" constant="15" id="MT6-Ss-Cda"/>
-                                <constraint firstItem="iQs-T6-7jm" firstAttribute="top" secondItem="M6z-rl-5CW" secondAttribute="bottom" id="Okg-NK-y9n"/>
-                                <constraint firstItem="hP7-NV-Abx" firstAttribute="centerY" secondItem="y2Z-Pu-GKq" secondAttribute="centerY" id="fiQ-29-ouu"/>
-                                <constraint firstItem="5x9-qj-kzm" firstAttribute="centerY" secondItem="y2Z-Pu-GKq" secondAttribute="centerY" id="iCu-HE-YVf"/>
-                                <constraint firstAttribute="height" constant="50" id="jxi-ow-Mcd"/>
-                                <constraint firstAttribute="trailing" secondItem="iQs-T6-7jm" secondAttribute="trailing" constant="9" id="qGR-dk-Xi4"/>
-                                <constraint firstAttribute="bottom" secondItem="iQs-T6-7jm" secondAttribute="bottom" id="vLv-hH-Gkt"/>
-                                <constraint firstItem="5x9-qj-kzm" firstAttribute="leading" secondItem="y2Z-Pu-GKq" secondAttribute="leading" constant="12" id="zyL-2C-jVb"/>
-                            </constraints>
-                            <connections>
-                                <outletCollection property="gestureRecognizers" destination="91i-mt-ZJq" appends="YES" id="C9x-Ta-t2a"/>
-                            </connections>
-                        </view>
-                        <view tag="1005" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5wD-Uz-Hw3">
-                            <rect key="frame" x="0.0" y="255" width="386" height="50"/>
-                            <subviews>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="duu-hP-dOU">
-                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="75" id="GJF-iP-xbU"/>
-                                    </constraints>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="Ywa-dR-8EE">
-                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="11" id="7Wr-1k-Q2b"/>
-                                        <constraint firstAttribute="width" constant="6" id="dOC-x9-HrY"/>
-                                    </constraints>
-                                </imageView>
-                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6Cb-bd-BGK">
-                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
-                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="1" id="ae6-X1-DMD"/>
-                                    </constraints>
-                                </view>
-                            </subviews>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <gestureRecognizers/>
-                            <constraints>
-                                <constraint firstItem="6Cb-bd-BGK" firstAttribute="leading" secondItem="5wD-Uz-Hw3" secondAttribute="leading" constant="11" id="76F-fe-sE5"/>
-                                <constraint firstAttribute="trailing" secondItem="Ywa-dR-8EE" secondAttribute="trailing" constant="15" id="FUQ-Dh-dXd"/>
-                                <constraint firstItem="duu-hP-dOU" firstAttribute="leading" secondItem="5wD-Uz-Hw3" secondAttribute="leading" constant="12" id="Kzr-yX-6XQ"/>
-                                <constraint firstAttribute="trailing" secondItem="6Cb-bd-BGK" secondAttribute="trailing" constant="9" id="Xet-DR-WI1"/>
-                                <constraint firstItem="duu-hP-dOU" firstAttribute="centerY" secondItem="5wD-Uz-Hw3" secondAttribute="centerY" id="cSI-to-AW2"/>
-                                <constraint firstAttribute="height" constant="50" id="fOD-FI-0km"/>
-                                <constraint firstItem="Ywa-dR-8EE" firstAttribute="centerY" secondItem="5wD-Uz-Hw3" secondAttribute="centerY" id="kQS-we-Sxv"/>
-                                <constraint firstAttribute="bottom" secondItem="6Cb-bd-BGK" secondAttribute="bottom" id="pVm-VT-blu"/>
-                            </constraints>
-                            <connections>
-                                <outletCollection property="gestureRecognizers" destination="MDo-fW-GMy" appends="YES" id="afo-Gb-wx2"/>
-                            </connections>
-                        </view>
-                        <view tag="1013" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cXG-gd-HvD">
-                            <rect key="frame" x="0.0" y="155" width="386" height="50"/>
-                            <subviews>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="出生日期" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fF0-cL-bFT">
-                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="75" id="0i7-B3-I0s"/>
-                                    </constraints>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="G2c-TS-oTr">
-                                    <rect key="frame" x="355" y="0.0" width="0.0" height="49"/>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="haa-Gv-Nnx">
-                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="6" id="L2b-cd-f8S"/>
-                                        <constraint firstAttribute="height" constant="11" id="Qyk-Pu-TCu"/>
-                                    </constraints>
-                                </imageView>
-                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NQ5-rR-5sx">
-                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
-                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="1" id="lqY-6w-WCv"/>
-                                    </constraints>
-                                </view>
-                            </subviews>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <gestureRecognizers/>
-                            <constraints>
-                                <constraint firstAttribute="bottom" secondItem="NQ5-rR-5sx" secondAttribute="bottom" id="0o6-IB-fcl"/>
-                                <constraint firstItem="NQ5-rR-5sx" firstAttribute="leading" secondItem="cXG-gd-HvD" secondAttribute="leading" constant="11" id="4XN-0f-Zb1"/>
-                                <constraint firstItem="NQ5-rR-5sx" firstAttribute="top" secondItem="G2c-TS-oTr" secondAttribute="bottom" id="D9V-BU-0Hn"/>
-                                <constraint firstItem="G2c-TS-oTr" firstAttribute="top" secondItem="cXG-gd-HvD" secondAttribute="top" id="Dgd-VF-KDy"/>
-                                <constraint firstItem="G2c-TS-oTr" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="fF0-cL-bFT" secondAttribute="trailing" constant="15" id="Fqy-4D-hwA"/>
-                                <constraint firstItem="fF0-cL-bFT" firstAttribute="centerY" secondItem="cXG-gd-HvD" secondAttribute="centerY" id="K4r-C6-09x"/>
-                                <constraint firstItem="haa-Gv-Nnx" firstAttribute="centerY" secondItem="cXG-gd-HvD" secondAttribute="centerY" id="ONb-RU-3NJ"/>
-                                <constraint firstAttribute="trailing" secondItem="haa-Gv-Nnx" secondAttribute="trailing" constant="15" id="VPq-N8-uwE"/>
-                                <constraint firstAttribute="trailing" secondItem="NQ5-rR-5sx" secondAttribute="trailing" constant="9" id="Y3a-ZP-Vps"/>
-                                <constraint firstAttribute="height" constant="50" id="Yhh-BC-UbY"/>
-                                <constraint firstItem="haa-Gv-Nnx" firstAttribute="leading" secondItem="G2c-TS-oTr" secondAttribute="trailing" constant="10" id="e5W-UQ-MYN"/>
-                                <constraint firstItem="fF0-cL-bFT" firstAttribute="leading" secondItem="cXG-gd-HvD" secondAttribute="leading" constant="12" id="ork-tk-XZt"/>
-                            </constraints>
-                            <connections>
-                                <outletCollection property="gestureRecognizers" destination="e8z-uP-hNu" appends="YES" id="Zjq-ES-JGe"/>
-                            </connections>
-                        </view>
-                        <view tag="1014" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QZl-hS-7q6">
-                            <rect key="frame" x="0.0" y="205" width="386" height="50"/>
-                            <subviews>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="声部" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dgf-rA-Wsz">
-                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="75" id="EBV-w9-BW2"/>
-                                    </constraints>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="32e-uz-97k">
-                                    <rect key="frame" x="355" y="0.0" width="0.0" height="49"/>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="efz-5c-a3j">
-                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="6" id="gFf-p3-Qqr"/>
-                                        <constraint firstAttribute="height" constant="11" id="wG6-yo-yck"/>
-                                    </constraints>
-                                </imageView>
-                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Lku-Ic-nPC">
-                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
-                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="1" id="vcL-P6-01h"/>
-                                    </constraints>
-                                </view>
-                            </subviews>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <gestureRecognizers/>
-                            <constraints>
-                                <constraint firstItem="efz-5c-a3j" firstAttribute="leading" secondItem="32e-uz-97k" secondAttribute="trailing" constant="10" id="9w9-ZS-ZQU"/>
-                                <constraint firstAttribute="height" constant="50" id="J5s-B2-M3e"/>
-                                <constraint firstItem="Dgf-rA-Wsz" firstAttribute="leading" secondItem="QZl-hS-7q6" secondAttribute="leading" constant="12" id="JlY-yt-8lY"/>
-                                <constraint firstItem="Dgf-rA-Wsz" firstAttribute="centerY" secondItem="QZl-hS-7q6" secondAttribute="centerY" id="a9c-S1-eIJ"/>
-                                <constraint firstItem="efz-5c-a3j" firstAttribute="centerY" secondItem="QZl-hS-7q6" secondAttribute="centerY" id="apG-8l-2tB"/>
-                                <constraint firstItem="Lku-Ic-nPC" firstAttribute="top" secondItem="32e-uz-97k" secondAttribute="bottom" id="g9E-R1-DTs"/>
-                                <constraint firstItem="32e-uz-97k" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Dgf-rA-Wsz" secondAttribute="trailing" constant="15" id="gip-4X-GRG"/>
-                                <constraint firstAttribute="trailing" secondItem="Lku-Ic-nPC" secondAttribute="trailing" constant="9" id="h1H-VT-w4U"/>
-                                <constraint firstAttribute="trailing" secondItem="efz-5c-a3j" secondAttribute="trailing" constant="15" id="jLH-Z8-goV"/>
-                                <constraint firstItem="Lku-Ic-nPC" firstAttribute="leading" secondItem="QZl-hS-7q6" secondAttribute="leading" constant="11" id="nyb-8E-V8m"/>
-                                <constraint firstItem="32e-uz-97k" firstAttribute="top" secondItem="QZl-hS-7q6" secondAttribute="top" id="rLz-Qq-VFa"/>
-                                <constraint firstAttribute="bottom" secondItem="Lku-Ic-nPC" secondAttribute="bottom" id="uaQ-qx-qHx"/>
-                            </constraints>
-                            <connections>
-                                <outletCollection property="gestureRecognizers" destination="pOv-Zb-IFD" appends="YES" id="JGM-rb-Ifo"/>
-                            </connections>
-                        </view>
-                    </subviews>
-                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                    <constraints>
-                        <constraint firstItem="cXG-gd-HvD" firstAttribute="top" secondItem="y2Z-Pu-GKq" secondAttribute="bottom" id="27e-xr-4PW"/>
-                        <constraint firstAttribute="trailing" secondItem="Q6y-w1-LNd" secondAttribute="trailing" id="C9h-Tz-0GF"/>
-                        <constraint firstItem="y2Z-Pu-GKq" firstAttribute="leading" secondItem="0Pf-RE-eZa" secondAttribute="leading" id="Gph-rN-Y6b"/>
-                        <constraint firstAttribute="bottom" secondItem="5wD-Uz-Hw3" secondAttribute="bottom" constant="5" id="Hrb-zT-zgD"/>
-                        <constraint firstItem="5wD-Uz-Hw3" firstAttribute="top" secondItem="QZl-hS-7q6" secondAttribute="bottom" id="N4V-SF-X5D"/>
-                        <constraint firstAttribute="trailing" secondItem="Tz3-5D-EcJ" secondAttribute="trailing" id="Rok-uu-QuL"/>
-                        <constraint firstItem="Tz3-5D-EcJ" firstAttribute="top" secondItem="Q6y-w1-LNd" secondAttribute="bottom" id="YcO-wd-kO6"/>
-                        <constraint firstItem="cXG-gd-HvD" firstAttribute="leading" secondItem="0Pf-RE-eZa" secondAttribute="leading" id="ZP4-2G-3fP"/>
-                        <constraint firstItem="QZl-hS-7q6" firstAttribute="top" secondItem="cXG-gd-HvD" secondAttribute="bottom" id="aer-01-joi"/>
-                        <constraint firstItem="5wD-Uz-Hw3" firstAttribute="leading" secondItem="0Pf-RE-eZa" secondAttribute="leading" id="atH-c3-wvw"/>
-                        <constraint firstAttribute="trailing" secondItem="cXG-gd-HvD" secondAttribute="trailing" id="bNP-p7-C0g"/>
-                        <constraint firstItem="Tz3-5D-EcJ" firstAttribute="leading" secondItem="0Pf-RE-eZa" secondAttribute="leading" id="i8x-zc-spS"/>
-                        <constraint firstAttribute="trailing" secondItem="y2Z-Pu-GKq" secondAttribute="trailing" id="iqg-48-xgS"/>
-                        <constraint firstItem="y2Z-Pu-GKq" firstAttribute="top" secondItem="Tz3-5D-EcJ" secondAttribute="bottom" id="mfq-9S-gB8"/>
-                        <constraint firstItem="Q6y-w1-LNd" firstAttribute="leading" secondItem="0Pf-RE-eZa" secondAttribute="leading" id="r0R-co-pYn"/>
-                        <constraint firstItem="Q6y-w1-LNd" firstAttribute="top" secondItem="0Pf-RE-eZa" secondAttribute="top" constant="5" id="rir-rY-52u"/>
-                        <constraint firstItem="QZl-hS-7q6" firstAttribute="leading" secondItem="0Pf-RE-eZa" secondAttribute="leading" id="v2G-l9-vhf"/>
-                        <constraint firstAttribute="trailing" secondItem="QZl-hS-7q6" secondAttribute="trailing" id="wa7-rN-iCc"/>
-                        <constraint firstAttribute="trailing" secondItem="5wD-Uz-Hw3" secondAttribute="trailing" id="yiA-Bt-1Uj"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                    </userDefinedRuntimeAttributes>
-                </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bvI-vo-wNV">
-                    <rect key="frame" x="14" y="413" width="386" height="160"/>
+                    <rect key="frame" x="14" y="15" width="386" height="258"/>
                     <subviews>
-                        <view tag="1006" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="JvN-sN-Dxg">
-                            <rect key="frame" x="0.0" y="5" width="386" height="50"/>
-                            <subviews>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="实名认证" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NHC-gP-IUN">
-                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="75" id="UbG-Wd-Od2"/>
-                                    </constraints>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="o5X-9L-JWB">
-                                    <rect key="frame" x="365" y="19.5" width="6" height="11"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" constant="6" id="HaO-PT-fjr"/>
-                                        <constraint firstAttribute="height" constant="11" id="dxZ-d3-MAU"/>
-                                    </constraints>
-                                </imageView>
-                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Lbn-35-utG">
-                                    <rect key="frame" x="11" y="49" width="366" height="1"/>
-                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="1" id="5xH-dM-cqq"/>
-                                    </constraints>
-                                </view>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H2U-zy-fP3">
-                                    <rect key="frame" x="355" y="0.0" width="0.0" height="49"/>
-                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                    <nil key="highlightedColor"/>
-                                </label>
-                            </subviews>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                            <gestureRecognizers/>
-                            <constraints>
-                                <constraint firstItem="H2U-zy-fP3" firstAttribute="top" secondItem="JvN-sN-Dxg" secondAttribute="top" id="49M-b7-egw"/>
-                                <constraint firstItem="Lbn-35-utG" firstAttribute="leading" secondItem="JvN-sN-Dxg" secondAttribute="leading" constant="11" id="D9l-oc-Tba"/>
-                                <constraint firstItem="H2U-zy-fP3" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="NHC-gP-IUN" secondAttribute="trailing" constant="15" id="FjD-mq-iZ2"/>
-                                <constraint firstAttribute="height" constant="50" id="G1X-FT-tM6"/>
-                                <constraint firstItem="Lbn-35-utG" firstAttribute="top" secondItem="H2U-zy-fP3" secondAttribute="bottom" id="JDB-xn-lp2"/>
-                                <constraint firstItem="NHC-gP-IUN" firstAttribute="leading" secondItem="JvN-sN-Dxg" secondAttribute="leading" constant="12" id="KSY-VD-Jbj"/>
-                                <constraint firstItem="o5X-9L-JWB" firstAttribute="leading" secondItem="H2U-zy-fP3" secondAttribute="trailing" constant="10" id="LEU-yB-lAf"/>
-                                <constraint firstAttribute="trailing" secondItem="o5X-9L-JWB" secondAttribute="trailing" constant="15" id="fR6-pD-mdw"/>
-                                <constraint firstItem="o5X-9L-JWB" firstAttribute="centerY" secondItem="JvN-sN-Dxg" secondAttribute="centerY" id="fWA-L5-pJa"/>
-                                <constraint firstAttribute="trailing" secondItem="Lbn-35-utG" secondAttribute="trailing" constant="9" id="h4T-za-c3P"/>
-                                <constraint firstItem="NHC-gP-IUN" firstAttribute="centerY" secondItem="JvN-sN-Dxg" secondAttribute="centerY" id="wOj-pm-OoP"/>
-                                <constraint firstAttribute="bottom" secondItem="Lbn-35-utG" secondAttribute="bottom" id="yXH-jY-1g9"/>
-                            </constraints>
-                            <connections>
-                                <outletCollection property="gestureRecognizers" destination="9FU-oz-u55" appends="YES" id="1ve-Od-JHY"/>
-                            </connections>
-                        </view>
-                        <view tag="1007" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="66O-io-Yxa">
-                            <rect key="frame" x="0.0" y="55" width="386" height="50"/>
+                        <view tag="1001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="66O-io-Yxa">
+                            <rect key="frame" x="0.0" y="0.0" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="收货地址" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="28H-xl-VfT">
                                     <rect key="frame" x="12" y="15" width="75" height="20"/>
@@ -512,8 +69,8 @@
                                 <outletCollection property="gestureRecognizers" destination="39y-5f-REt" appends="YES" id="NSl-rj-tKk"/>
                             </connections>
                         </view>
-                        <view tag="1008" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IrL-hq-2eU">
-                            <rect key="frame" x="0.0" y="105" width="386" height="50"/>
+                        <view tag="1005" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IrL-hq-2eU">
+                            <rect key="frame" x="0.0" y="50" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="进入课堂时进行网络&amp;设备检测" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x6m-6D-CUC">
                                     <rect key="frame" x="12" y="15" width="223.5" height="20"/>
@@ -523,7 +80,7 @@
                                 </label>
                                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qbj-na-VSL">
                                     <rect key="frame" x="11" y="49" width="366" height="1"/>
-                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="1" id="Rjr-Bs-uyG"/>
                                     </constraints>
@@ -553,31 +110,8 @@
                                 <constraint firstAttribute="trailing" secondItem="qbj-na-VSL" secondAttribute="trailing" constant="9" id="wfV-kR-CF3"/>
                             </constraints>
                         </view>
-                    </subviews>
-                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <constraints>
-                        <constraint firstAttribute="trailing" secondItem="66O-io-Yxa" secondAttribute="trailing" id="Bu8-cb-AIo"/>
-                        <constraint firstItem="IrL-hq-2eU" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="CLc-rU-xPU"/>
-                        <constraint firstAttribute="bottom" secondItem="IrL-hq-2eU" secondAttribute="bottom" constant="5" id="DLQ-cM-Nev"/>
-                        <constraint firstItem="66O-io-Yxa" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="Hkj-Fz-5iB"/>
-                        <constraint firstAttribute="trailing" secondItem="JvN-sN-Dxg" secondAttribute="trailing" id="HxN-xe-7wJ"/>
-                        <constraint firstItem="IrL-hq-2eU" firstAttribute="top" secondItem="66O-io-Yxa" secondAttribute="bottom" id="SAO-fg-84E"/>
-                        <constraint firstAttribute="trailing" secondItem="IrL-hq-2eU" secondAttribute="trailing" id="WW8-th-rjC"/>
-                        <constraint firstItem="66O-io-Yxa" firstAttribute="top" secondItem="JvN-sN-Dxg" secondAttribute="bottom" id="fIH-az-ad6"/>
-                        <constraint firstItem="JvN-sN-Dxg" firstAttribute="top" secondItem="bvI-vo-wNV" secondAttribute="top" constant="5" id="gfE-A4-MzG"/>
-                        <constraint firstItem="JvN-sN-Dxg" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="uMr-qB-MN2"/>
-                    </constraints>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                    </userDefinedRuntimeAttributes>
-                </view>
-                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Px3-aY-XMT">
-                    <rect key="frame" x="14" y="585" width="386" height="160"/>
-                    <subviews>
-                        <view tag="1009" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="l7Z-Gj-hWL">
-                            <rect key="frame" x="0.0" y="5" width="386" height="50"/>
+                        <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="l7Z-Gj-hWL">
+                            <rect key="frame" x="0.0" y="100" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="安全隐私" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nw6-Cw-1IV">
                                     <rect key="frame" x="12" y="15" width="75" height="20"/>
@@ -619,8 +153,8 @@
                                 <outletCollection property="gestureRecognizers" destination="WVN-s2-eTZ" appends="YES" id="cfU-f6-1Uf"/>
                             </connections>
                         </view>
-                        <view tag="1010" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="anE-I3-Co0">
-                            <rect key="frame" x="0.0" y="55" width="386" height="50"/>
+                        <view tag="1003" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="anE-I3-Co0">
+                            <rect key="frame" x="0.0" y="150" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="意见反馈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gdi-Lt-ODx">
                                     <rect key="frame" x="12" y="15" width="75" height="20"/>
@@ -672,8 +206,8 @@
                                 <outletCollection property="gestureRecognizers" destination="hfQ-Uy-nSc" appends="YES" id="cKc-XC-g09"/>
                             </connections>
                         </view>
-                        <view tag="1011" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fae-Ws-ND6">
-                            <rect key="frame" x="0.0" y="105" width="386" height="50"/>
+                        <view tag="1004" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fae-Ws-ND6">
+                            <rect key="frame" x="0.0" y="200" width="386" height="50"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="关于我们" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7NY-Jl-Fvk">
                                     <rect key="frame" x="12" y="15" width="75" height="20"/>
@@ -718,16 +252,22 @@
                     </subviews>
                     <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
-                        <constraint firstItem="fae-Ws-ND6" firstAttribute="top" secondItem="anE-I3-Co0" secondAttribute="bottom" id="8AZ-HI-FoC"/>
-                        <constraint firstAttribute="trailing" secondItem="fae-Ws-ND6" secondAttribute="trailing" id="HWd-4v-V32"/>
-                        <constraint firstAttribute="bottom" secondItem="fae-Ws-ND6" secondAttribute="bottom" constant="5" id="Hyn-Zx-xg3"/>
-                        <constraint firstItem="l7Z-Gj-hWL" firstAttribute="top" secondItem="Px3-aY-XMT" secondAttribute="top" constant="5" id="Lv3-PF-hc6"/>
-                        <constraint firstAttribute="trailing" secondItem="anE-I3-Co0" secondAttribute="trailing" id="QsR-GM-b2c"/>
-                        <constraint firstItem="anE-I3-Co0" firstAttribute="leading" secondItem="Px3-aY-XMT" secondAttribute="leading" id="YC4-wa-ofv"/>
-                        <constraint firstItem="l7Z-Gj-hWL" firstAttribute="leading" secondItem="Px3-aY-XMT" secondAttribute="leading" id="iOQ-sh-IbU"/>
-                        <constraint firstItem="anE-I3-Co0" firstAttribute="top" secondItem="l7Z-Gj-hWL" secondAttribute="bottom" id="sRv-p6-Srf"/>
-                        <constraint firstItem="fae-Ws-ND6" firstAttribute="leading" secondItem="Px3-aY-XMT" secondAttribute="leading" id="uCC-QL-6Rc"/>
-                        <constraint firstAttribute="trailing" secondItem="l7Z-Gj-hWL" secondAttribute="trailing" id="xkA-wi-SzN"/>
+                        <constraint firstItem="anE-I3-Co0" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="1Zm-xX-pZi"/>
+                        <constraint firstAttribute="trailing" secondItem="66O-io-Yxa" secondAttribute="trailing" id="Bu8-cb-AIo"/>
+                        <constraint firstItem="IrL-hq-2eU" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="CLc-rU-xPU"/>
+                        <constraint firstItem="anE-I3-Co0" firstAttribute="top" secondItem="l7Z-Gj-hWL" secondAttribute="bottom" id="DHj-Dc-7Bd"/>
+                        <constraint firstItem="fae-Ws-ND6" firstAttribute="top" secondItem="anE-I3-Co0" secondAttribute="bottom" id="EHt-XQ-mid"/>
+                        <constraint firstItem="66O-io-Yxa" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="Hkj-Fz-5iB"/>
+                        <constraint firstAttribute="trailing" secondItem="anE-I3-Co0" secondAttribute="trailing" id="OI8-po-q8D"/>
+                        <constraint firstAttribute="trailing" secondItem="fae-Ws-ND6" secondAttribute="trailing" id="PHZ-JF-g1b"/>
+                        <constraint firstAttribute="bottom" secondItem="fae-Ws-ND6" secondAttribute="bottom" constant="8" id="QlX-Q3-vpm"/>
+                        <constraint firstItem="IrL-hq-2eU" firstAttribute="top" secondItem="66O-io-Yxa" secondAttribute="bottom" id="SAO-fg-84E"/>
+                        <constraint firstAttribute="trailing" secondItem="IrL-hq-2eU" secondAttribute="trailing" id="WW8-th-rjC"/>
+                        <constraint firstItem="66O-io-Yxa" firstAttribute="top" secondItem="bvI-vo-wNV" secondAttribute="top" id="fRO-8p-cvN"/>
+                        <constraint firstItem="fae-Ws-ND6" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="qg0-l6-MyF"/>
+                        <constraint firstItem="l7Z-Gj-hWL" firstAttribute="top" secondItem="IrL-hq-2eU" secondAttribute="bottom" id="sBu-UY-YCZ"/>
+                        <constraint firstItem="l7Z-Gj-hWL" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="xuu-jK-kcV"/>
+                        <constraint firstAttribute="trailing" secondItem="l7Z-Gj-hWL" secondAttribute="trailing" id="yOz-ac-Lrv"/>
                     </constraints>
                     <userDefinedRuntimeAttributes>
                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -735,85 +275,21 @@
                         </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                 </view>
-                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="N6o-wM-RdI">
-                    <rect key="frame" x="14" y="770" width="386" height="50"/>
-                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="50" id="dUm-Pe-IzT"/>
-                    </constraints>
-                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
-                    <state key="normal" title="退出登录">
-                        <color key="titleColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                    </state>
-                    <userDefinedRuntimeAttributes>
-                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
-                            <real key="value" value="10"/>
-                        </userDefinedRuntimeAttribute>
-                    </userDefinedRuntimeAttributes>
-                    <connections>
-                        <action selector="logoutAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="fBw-ZJ-zxC"/>
-                    </connections>
-                </button>
             </subviews>
-            <color key="backgroundColor" red="0.96470588235294119" green="0.97254901960784312" blue="0.97647058823529409" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
-                <constraint firstItem="GuW-h5-PZ3" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="3HV-ny-8jj"/>
-                <constraint firstItem="Px3-aY-XMT" firstAttribute="trailing" secondItem="bvI-vo-wNV" secondAttribute="trailing" id="4AG-J2-M28"/>
-                <constraint firstItem="Px3-aY-XMT" firstAttribute="top" secondItem="bvI-vo-wNV" secondAttribute="bottom" constant="12" id="DfN-W2-Ecv"/>
-                <constraint firstItem="N6o-wM-RdI" firstAttribute="top" secondItem="Px3-aY-XMT" secondAttribute="bottom" constant="25" id="HdB-Kt-R6Z"/>
-                <constraint firstItem="GuW-h5-PZ3" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="15" id="OlS-2I-ihK"/>
-                <constraint firstItem="N6o-wM-RdI" firstAttribute="trailing" secondItem="Px3-aY-XMT" secondAttribute="trailing" id="PyI-0n-JQs"/>
-                <constraint firstItem="bvI-vo-wNV" firstAttribute="trailing" secondItem="0Pf-RE-eZa" secondAttribute="trailing" id="SED-UA-1GU"/>
-                <constraint firstItem="bvI-vo-wNV" firstAttribute="top" secondItem="0Pf-RE-eZa" secondAttribute="bottom" constant="12" id="UfN-Xn-MB9"/>
-                <constraint firstItem="bvI-vo-wNV" firstAttribute="leading" secondItem="0Pf-RE-eZa" secondAttribute="leading" id="eto-OT-Iqh"/>
-                <constraint firstItem="Px3-aY-XMT" firstAttribute="leading" secondItem="bvI-vo-wNV" secondAttribute="leading" id="oAm-bW-du7"/>
-                <constraint firstItem="0Pf-RE-eZa" firstAttribute="leading" secondItem="GuW-h5-PZ3" secondAttribute="leading" id="qnP-eU-8KZ"/>
-                <constraint firstItem="N6o-wM-RdI" firstAttribute="leading" secondItem="Px3-aY-XMT" secondAttribute="leading" id="t3E-fZ-xRH"/>
-                <constraint firstItem="0Pf-RE-eZa" firstAttribute="trailing" secondItem="GuW-h5-PZ3" secondAttribute="trailing" id="u7h-xp-4zr"/>
-                <constraint firstAttribute="trailing" secondItem="GuW-h5-PZ3" secondAttribute="trailing" constant="14" id="ulP-Ga-09m"/>
-                <constraint firstItem="0Pf-RE-eZa" firstAttribute="top" secondItem="GuW-h5-PZ3" secondAttribute="bottom" constant="12" id="xyf-S9-mCb"/>
+                <constraint firstItem="bvI-vo-wNV" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="5n4-bb-LbN"/>
+                <constraint firstAttribute="trailing" secondItem="bvI-vo-wNV" secondAttribute="trailing" constant="14" id="7ac-ck-hbr"/>
+                <constraint firstItem="bvI-vo-wNV" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="15" id="QbZ-et-vlc"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
-                <outlet property="authStatusLabel" destination="H2U-zy-fP3" id="fCh-R8-YRj"/>
-                <outlet property="birthdayLabel" destination="G2c-TS-oTr" id="ZZZ-vS-zXQ"/>
-                <outlet property="genderLabel" destination="eVe-2E-45u" id="sLs-3I-LPV"/>
-                <outlet property="nickNameLabel" destination="9mw-jx-odd" id="neH-kw-77Z"/>
-                <outlet property="phoneLabel" destination="M6z-rl-5CW" id="5Ga-fk-N0U"/>
-                <outlet property="subjectLabel" destination="32e-uz-97k" id="Dis-ZO-E3X"/>
                 <outlet property="switchButton" destination="ZKM-lu-myi" id="Gli-bu-Kkp"/>
-                <outlet property="userAvatal" destination="Y0N-Qr-8Oe" id="ImK-uA-Csp"/>
             </connections>
             <point key="canvasLocation" x="131.8840579710145" y="78.348214285714278"/>
         </view>
-        <tapGestureRecognizer id="hus-UO-UOG">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="kCP-bf-Smc"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="0lQ-SW-kEX">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="PSd-zJ-77m"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="91i-mt-ZJq">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="Kgr-Zu-6RP"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="MDo-fW-GMy">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="4ji-38-8b4"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="9FU-oz-u55">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="ubl-LK-We3"/>
-            </connections>
-        </tapGestureRecognizer>
         <tapGestureRecognizer id="39y-5f-REt">
             <connections>
                 <action selector="tapAction:" destination="iN0-l3-epB" id="VeN-qZ-UA8"/>
@@ -834,28 +310,9 @@
                 <action selector="tapAction:" destination="iN0-l3-epB" id="oQQ-9p-gfF"/>
             </connections>
         </tapGestureRecognizer>
-        <tapGestureRecognizer id="O34-NJ-j90">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="Paz-Kq-KK6"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="e8z-uP-hNu">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="b1W-of-rNx"/>
-            </connections>
-        </tapGestureRecognizer>
-        <tapGestureRecognizer id="pOv-Zb-IFD">
-            <connections>
-                <action selector="tapAction:" destination="iN0-l3-epB" id="yzt-De-ACL"/>
-            </connections>
-        </tapGestureRecognizer>
     </objects>
     <resources>
         <image name="setting_next" width="6" height="11"/>
         <image name="switch_on" width="47" height="24"/>
-        <image name="user_default_avatal" width="52" height="52"/>
-        <systemColor name="systemBackgroundColor">
-            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-        </systemColor>
     </resources>
 </document>

+ 50 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UseBodyView.h

@@ -0,0 +1,50 @@
+//
+//  UseBodyView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/27.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, USERSETTING) {
+    USERSETTING_AVATAL = 1001, // 头像
+    USERSETTING_NAME,  // 修改姓名
+    USERSETTING_SEX,   // 修改性别
+    USERSETTING_PHONE, // 修改手机号
+    USERSETTING_BIRTHDAY, // 生日
+    USERSETTING_SUBJECT,  // 声部设置
+    USERSETTING_PWD,   // 修改密码
+    USERSETTING_VEFI,  // 实名认证
+    USERSETTING_LOGOUT,   // 退出登录
+};
+
+typedef void(^UserSettingCallback)(USERSETTING type);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface UseBodyView : UIView
+
+@property (weak, nonatomic) IBOutlet UIImageView *userAvatal;
+
+@property (weak, nonatomic) IBOutlet UILabel *nickNameLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *genderLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *phoneLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *authStatusLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *birthdayLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *subjectLabel;
+
++ (instancetype)shareInstance;
+
+- (void)userSettingAction:(UserSettingCallback)callback;
+
+- (CGFloat)getViewHeight;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 54 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UseBodyView.m

@@ -0,0 +1,54 @@
+//
+//  UseBodyView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/27.
+//
+
+#import "UseBodyView.h"
+
+@interface UseBodyView ()
+
+@property (nonatomic, copy) UserSettingCallback callback;
+
+
+@end
+
+@implementation UseBodyView
+
++ (instancetype)shareInstance {
+    UseBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"UseBodyView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)userSettingAction:(UserSettingCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (IBAction)tapAction:(UITapGestureRecognizer *)sender {
+    NSInteger index = sender.view.tag;
+    if (self.callback) {
+        self.callback(index);
+    }
+}
+
+- (IBAction)logoutAction:(id)sender {
+    if (self.callback) {
+        self.callback(USERSETTING_LOGOUT);
+    }
+}
+
+- (CGFloat)getViewHeight {
+    return 440 + 15 + 15 + 70;
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 567 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UseBodyView.xib

@@ -0,0 +1,567 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="UseBodyView">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="675"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hhh-Gs-c0i">
+                    <rect key="frame" x="14" y="605" width="347" height="50"/>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="50" id="o7G-5n-cqm"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" title="退出登录">
+                        <color key="titleColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    </state>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                    <connections>
+                        <action selector="logoutAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="fcA-OB-9pO"/>
+                    </connections>
+                </button>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="40v-Cg-vfD">
+                    <rect key="frame" x="14" y="15" width="347" height="440"/>
+                    <subviews>
+                        <view tag="1001" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="J2o-ST-wEv">
+                            <rect key="frame" x="0.0" y="0.0" width="347" height="80"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="UFo-U9-qsN">
+                                    <rect key="frame" x="12" y="13" width="54" height="54"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="54" id="RxM-37-OnT"/>
+                                        <constraint firstAttribute="width" constant="54" id="vxo-AM-dXg"/>
+                                    </constraints>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="27"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </imageView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改头像" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kfN-Gd-98o">
+                                    <rect key="frame" x="250" y="30" width="66" height="20"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="eIf-0l-EcR">
+                                    <rect key="frame" x="326" y="34.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="6" id="LgR-fr-nlL"/>
+                                        <constraint firstAttribute="height" constant="11" id="szT-2J-4uN"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cJS-WW-Dvs">
+                                    <rect key="frame" x="11" y="79" width="327" height="1"/>
+                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="dD3-im-rio"/>
+                                    </constraints>
+                                </view>
+                            </subviews>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="eIf-0l-EcR" secondAttribute="trailing" constant="15" id="4dc-MH-sM3"/>
+                                <constraint firstAttribute="bottom" secondItem="cJS-WW-Dvs" secondAttribute="bottom" id="9hY-H1-kbc"/>
+                                <constraint firstItem="eIf-0l-EcR" firstAttribute="leading" secondItem="kfN-Gd-98o" secondAttribute="trailing" constant="10" id="SUN-zx-qwb"/>
+                                <constraint firstItem="UFo-U9-qsN" firstAttribute="centerY" secondItem="J2o-ST-wEv" secondAttribute="centerY" id="Yka-2D-F8I"/>
+                                <constraint firstAttribute="height" constant="80" id="ZAa-2C-JVD"/>
+                                <constraint firstItem="UFo-U9-qsN" firstAttribute="leading" secondItem="J2o-ST-wEv" secondAttribute="leading" constant="12" id="gzb-k0-h07"/>
+                                <constraint firstAttribute="trailing" secondItem="cJS-WW-Dvs" secondAttribute="trailing" constant="9" id="kEp-Ft-mvX"/>
+                                <constraint firstItem="cJS-WW-Dvs" firstAttribute="leading" secondItem="J2o-ST-wEv" secondAttribute="leading" constant="11" id="mvi-Me-W1H"/>
+                                <constraint firstItem="eIf-0l-EcR" firstAttribute="centerY" secondItem="kfN-Gd-98o" secondAttribute="centerY" id="tNT-X3-kVO"/>
+                                <constraint firstItem="eIf-0l-EcR" firstAttribute="centerY" secondItem="J2o-ST-wEv" secondAttribute="centerY" id="w0J-za-NiR"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="10"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="sMf-AW-wp6" appends="YES" id="u26-23-sbK"/>
+                            </connections>
+                        </view>
+                        <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IF9-sZ-JPq">
+                            <rect key="frame" x="0.0" y="80" width="347" height="50"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7jM-p0-255">
+                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="0Bt-xW-H2E"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lbd-gJ-V3D">
+                                    <rect key="frame" x="316" y="0.0" width="0.0" height="49"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="1vV-7e-hyJ">
+                                    <rect key="frame" x="326" y="19.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="11" id="E3T-Ab-CgQ"/>
+                                        <constraint firstAttribute="width" constant="6" id="S8z-Nf-Nqh"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UXc-43-NVv">
+                                    <rect key="frame" x="11" y="49" width="327" height="1"/>
+                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="Y3e-Jk-ZbD"/>
+                                    </constraints>
+                                </view>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstItem="Lbd-gJ-V3D" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="7jM-p0-255" secondAttribute="trailing" constant="15" id="2p2-d0-MpQ"/>
+                                <constraint firstItem="7jM-p0-255" firstAttribute="centerY" secondItem="IF9-sZ-JPq" secondAttribute="centerY" id="831-2o-G24"/>
+                                <constraint firstItem="1vV-7e-hyJ" firstAttribute="leading" secondItem="Lbd-gJ-V3D" secondAttribute="trailing" constant="10" id="AUQ-jS-aLn"/>
+                                <constraint firstAttribute="trailing" secondItem="UXc-43-NVv" secondAttribute="trailing" constant="9" id="C6A-Mr-t4f"/>
+                                <constraint firstItem="UXc-43-NVv" firstAttribute="leading" secondItem="IF9-sZ-JPq" secondAttribute="leading" constant="11" id="SS5-ZH-B8U"/>
+                                <constraint firstItem="1vV-7e-hyJ" firstAttribute="centerY" secondItem="IF9-sZ-JPq" secondAttribute="centerY" id="d3w-Cp-QyI"/>
+                                <constraint firstItem="UXc-43-NVv" firstAttribute="top" secondItem="Lbd-gJ-V3D" secondAttribute="bottom" id="ewS-m4-MpD"/>
+                                <constraint firstAttribute="height" constant="50" id="hdJ-Ms-pjy"/>
+                                <constraint firstAttribute="trailing" secondItem="1vV-7e-hyJ" secondAttribute="trailing" constant="15" id="iFb-t7-W0H"/>
+                                <constraint firstItem="Lbd-gJ-V3D" firstAttribute="top" secondItem="IF9-sZ-JPq" secondAttribute="top" id="pFN-sh-TpP"/>
+                                <constraint firstItem="7jM-p0-255" firstAttribute="leading" secondItem="IF9-sZ-JPq" secondAttribute="leading" constant="12" id="tE4-VL-SSp"/>
+                                <constraint firstAttribute="bottom" secondItem="UXc-43-NVv" secondAttribute="bottom" id="uHp-qE-aQc"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="fIo-YP-4OD" appends="YES" id="6od-AG-BIp"/>
+                            </connections>
+                        </view>
+                        <view tag="1003" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NLD-D0-BA1">
+                            <rect key="frame" x="0.0" y="130" width="347" height="50"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="性别" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S9G-Lg-WHp">
+                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="HgM-yD-yNZ"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="bSN-Dc-7Fs">
+                                    <rect key="frame" x="326" y="19.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="6" id="I9J-VO-KAy"/>
+                                        <constraint firstAttribute="height" constant="11" id="MJJ-4x-apR"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ToJ-TB-isO">
+                                    <rect key="frame" x="11" y="49" width="327" height="1"/>
+                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="HxH-e7-Wgl"/>
+                                    </constraints>
+                                </view>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fLa-l1-4Y5">
+                                    <rect key="frame" x="316" y="0.0" width="0.0" height="49"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstItem="S9G-Lg-WHp" firstAttribute="centerY" secondItem="NLD-D0-BA1" secondAttribute="centerY" id="98r-9u-S1M"/>
+                                <constraint firstItem="fLa-l1-4Y5" firstAttribute="top" secondItem="NLD-D0-BA1" secondAttribute="top" id="Hpv-6p-mci"/>
+                                <constraint firstItem="bSN-Dc-7Fs" firstAttribute="centerY" secondItem="NLD-D0-BA1" secondAttribute="centerY" id="JnG-aG-hIf"/>
+                                <constraint firstItem="ToJ-TB-isO" firstAttribute="top" secondItem="fLa-l1-4Y5" secondAttribute="bottom" id="L9v-Pw-PPS"/>
+                                <constraint firstAttribute="trailing" secondItem="ToJ-TB-isO" secondAttribute="trailing" constant="9" id="NzA-fr-zFJ"/>
+                                <constraint firstItem="S9G-Lg-WHp" firstAttribute="leading" secondItem="NLD-D0-BA1" secondAttribute="leading" constant="12" id="SkB-mI-H9V"/>
+                                <constraint firstItem="ToJ-TB-isO" firstAttribute="leading" secondItem="NLD-D0-BA1" secondAttribute="leading" constant="11" id="WFH-9U-4Cc"/>
+                                <constraint firstAttribute="bottom" secondItem="ToJ-TB-isO" secondAttribute="bottom" id="Wt6-cd-QmS"/>
+                                <constraint firstItem="bSN-Dc-7Fs" firstAttribute="leading" secondItem="fLa-l1-4Y5" secondAttribute="trailing" constant="10" id="afL-Q6-j3K"/>
+                                <constraint firstAttribute="trailing" secondItem="bSN-Dc-7Fs" secondAttribute="trailing" constant="15" id="g9M-9t-na6"/>
+                                <constraint firstAttribute="height" constant="50" id="ij5-78-E6C"/>
+                                <constraint firstItem="fLa-l1-4Y5" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="S9G-Lg-WHp" secondAttribute="trailing" constant="15" id="pcv-PQ-wd0"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="0z8-co-gzT" appends="YES" id="9jF-Rp-nQq"/>
+                            </connections>
+                        </view>
+                        <view tag="1004" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6iQ-yO-6VZ">
+                            <rect key="frame" x="0.0" y="180" width="347" height="50"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="手机号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wKh-p2-jGJ">
+                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="kt7-4J-lA8"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d85-0p-gam">
+                                    <rect key="frame" x="316" y="0.0" width="0.0" height="49"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="jyk-v9-275">
+                                    <rect key="frame" x="326" y="19.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="11" id="ZUs-OG-P2A"/>
+                                        <constraint firstAttribute="width" constant="6" id="iO5-2m-TS0"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fK7-EK-PYY">
+                                    <rect key="frame" x="11" y="49" width="327" height="1"/>
+                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="6eW-wC-KKe"/>
+                                    </constraints>
+                                </view>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstItem="jyk-v9-275" firstAttribute="centerY" secondItem="6iQ-yO-6VZ" secondAttribute="centerY" id="17Q-9q-Vtz"/>
+                                <constraint firstItem="d85-0p-gam" firstAttribute="top" secondItem="6iQ-yO-6VZ" secondAttribute="top" id="1FK-3o-hyc"/>
+                                <constraint firstItem="wKh-p2-jGJ" firstAttribute="centerY" secondItem="6iQ-yO-6VZ" secondAttribute="centerY" id="3Ss-cm-awn"/>
+                                <constraint firstItem="d85-0p-gam" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="wKh-p2-jGJ" secondAttribute="trailing" constant="15" id="74h-7s-FeH"/>
+                                <constraint firstItem="fK7-EK-PYY" firstAttribute="top" secondItem="d85-0p-gam" secondAttribute="bottom" id="94O-Fd-MXh"/>
+                                <constraint firstAttribute="trailing" secondItem="fK7-EK-PYY" secondAttribute="trailing" constant="9" id="CEo-pr-oqe"/>
+                                <constraint firstAttribute="height" constant="50" id="IUK-ya-qzs"/>
+                                <constraint firstItem="wKh-p2-jGJ" firstAttribute="leading" secondItem="6iQ-yO-6VZ" secondAttribute="leading" constant="12" id="dWc-TQ-Y2s"/>
+                                <constraint firstAttribute="bottom" secondItem="fK7-EK-PYY" secondAttribute="bottom" id="dsd-6d-CEn"/>
+                                <constraint firstItem="fK7-EK-PYY" firstAttribute="leading" secondItem="6iQ-yO-6VZ" secondAttribute="leading" constant="11" id="fnD-MS-BM7"/>
+                                <constraint firstAttribute="trailing" secondItem="jyk-v9-275" secondAttribute="trailing" constant="15" id="hiv-H1-acQ"/>
+                                <constraint firstItem="jyk-v9-275" firstAttribute="leading" secondItem="d85-0p-gam" secondAttribute="trailing" constant="10" id="sNH-KY-kne"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="Zrl-5k-yIC" appends="YES" id="WOD-uL-QzI"/>
+                            </connections>
+                        </view>
+                        <view tag="1007" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fZL-4c-wav">
+                            <rect key="frame" x="0.0" y="330" width="347" height="50"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O8d-BR-sSx">
+                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="r72-JC-UNf"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="Gez-Bh-0b6">
+                                    <rect key="frame" x="326" y="19.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="6" id="4YO-WT-6vp"/>
+                                        <constraint firstAttribute="height" constant="11" id="A17-tb-H3J"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u63-By-HoA">
+                                    <rect key="frame" x="11" y="49" width="327" height="1"/>
+                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="Ijc-JE-PIU"/>
+                                    </constraints>
+                                </view>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="u63-By-HoA" secondAttribute="trailing" constant="9" id="CTH-qz-2Pz"/>
+                                <constraint firstAttribute="trailing" secondItem="Gez-Bh-0b6" secondAttribute="trailing" constant="15" id="HgI-hH-Tvr"/>
+                                <constraint firstItem="Gez-Bh-0b6" firstAttribute="centerY" secondItem="fZL-4c-wav" secondAttribute="centerY" id="I00-im-S6O"/>
+                                <constraint firstAttribute="bottom" secondItem="u63-By-HoA" secondAttribute="bottom" id="Lz4-ZP-maR"/>
+                                <constraint firstAttribute="height" constant="50" id="P46-Sa-jTh"/>
+                                <constraint firstItem="O8d-BR-sSx" firstAttribute="centerY" secondItem="fZL-4c-wav" secondAttribute="centerY" id="TOl-N2-JPw"/>
+                                <constraint firstItem="O8d-BR-sSx" firstAttribute="leading" secondItem="fZL-4c-wav" secondAttribute="leading" constant="12" id="m2N-XN-ITf"/>
+                                <constraint firstItem="u63-By-HoA" firstAttribute="leading" secondItem="fZL-4c-wav" secondAttribute="leading" constant="11" id="z4T-QS-ekR"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="CTa-Xk-gek" appends="YES" id="AgB-iz-eNz"/>
+                            </connections>
+                        </view>
+                        <view tag="1005" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="41H-H8-0XH">
+                            <rect key="frame" x="0.0" y="230" width="347" height="50"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="出生日期" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gu8-Bn-XTU">
+                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="4Cb-Wa-vTE"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="edx-ro-P9a">
+                                    <rect key="frame" x="316" y="0.0" width="0.0" height="49"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="dh8-Fx-Qnl">
+                                    <rect key="frame" x="326" y="19.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="6" id="Lrb-L6-bNJ"/>
+                                        <constraint firstAttribute="height" constant="11" id="wYM-VV-Byl"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ilU-du-kYY">
+                                    <rect key="frame" x="11" y="49" width="327" height="1"/>
+                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="wAL-wn-Ui9"/>
+                                    </constraints>
+                                </view>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="dh8-Fx-Qnl" secondAttribute="trailing" constant="15" id="0IV-22-am4"/>
+                                <constraint firstItem="gu8-Bn-XTU" firstAttribute="leading" secondItem="41H-H8-0XH" secondAttribute="leading" constant="12" id="3ZK-ap-JRF"/>
+                                <constraint firstAttribute="height" constant="50" id="8N7-Ju-ocT"/>
+                                <constraint firstAttribute="bottom" secondItem="ilU-du-kYY" secondAttribute="bottom" id="9n7-SE-7QL"/>
+                                <constraint firstItem="ilU-du-kYY" firstAttribute="top" secondItem="edx-ro-P9a" secondAttribute="bottom" id="ESP-Ld-rJF"/>
+                                <constraint firstItem="edx-ro-P9a" firstAttribute="top" secondItem="41H-H8-0XH" secondAttribute="top" id="GLf-sd-8Ip"/>
+                                <constraint firstItem="dh8-Fx-Qnl" firstAttribute="leading" secondItem="edx-ro-P9a" secondAttribute="trailing" constant="10" id="MrZ-KH-sc3"/>
+                                <constraint firstItem="dh8-Fx-Qnl" firstAttribute="centerY" secondItem="41H-H8-0XH" secondAttribute="centerY" id="PSe-fo-EwQ"/>
+                                <constraint firstItem="gu8-Bn-XTU" firstAttribute="centerY" secondItem="41H-H8-0XH" secondAttribute="centerY" id="g7g-Cb-KD3"/>
+                                <constraint firstItem="edx-ro-P9a" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="gu8-Bn-XTU" secondAttribute="trailing" constant="15" id="jWo-2Z-xnq"/>
+                                <constraint firstAttribute="trailing" secondItem="ilU-du-kYY" secondAttribute="trailing" constant="9" id="kR4-Vu-ibB"/>
+                                <constraint firstItem="ilU-du-kYY" firstAttribute="leading" secondItem="41H-H8-0XH" secondAttribute="leading" constant="11" id="rRB-5X-Z0v"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="cj9-5z-tMh" appends="YES" id="QfU-Tg-275"/>
+                            </connections>
+                        </view>
+                        <view tag="1006" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dde-XZ-Fmj">
+                            <rect key="frame" x="0.0" y="280" width="347" height="50"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="声部" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ha1-58-cwy">
+                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="zYL-EE-ml2"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gt5-4k-ZHe">
+                                    <rect key="frame" x="316" y="0.0" width="0.0" height="49"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="AAd-1u-RKn">
+                                    <rect key="frame" x="326" y="19.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="11" id="p6A-KK-hGg"/>
+                                        <constraint firstAttribute="width" constant="6" id="zSg-6w-V0n"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="27b-nw-Mre">
+                                    <rect key="frame" x="11" y="49" width="327" height="1"/>
+                                    <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="uHg-dC-jy8"/>
+                                    </constraints>
+                                </view>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstItem="ha1-58-cwy" firstAttribute="leading" secondItem="dde-XZ-Fmj" secondAttribute="leading" constant="12" id="1yV-3T-oUZ"/>
+                                <constraint firstItem="AAd-1u-RKn" firstAttribute="leading" secondItem="Gt5-4k-ZHe" secondAttribute="trailing" constant="10" id="8fq-hR-87V"/>
+                                <constraint firstItem="AAd-1u-RKn" firstAttribute="centerY" secondItem="dde-XZ-Fmj" secondAttribute="centerY" id="F60-HX-lim"/>
+                                <constraint firstItem="ha1-58-cwy" firstAttribute="centerY" secondItem="dde-XZ-Fmj" secondAttribute="centerY" id="G9f-xr-IDW"/>
+                                <constraint firstAttribute="trailing" secondItem="27b-nw-Mre" secondAttribute="trailing" constant="9" id="ga4-ue-uvR"/>
+                                <constraint firstItem="Gt5-4k-ZHe" firstAttribute="top" secondItem="dde-XZ-Fmj" secondAttribute="top" id="hNQ-J6-o8T"/>
+                                <constraint firstItem="27b-nw-Mre" firstAttribute="top" secondItem="Gt5-4k-ZHe" secondAttribute="bottom" id="hgQ-tn-grL"/>
+                                <constraint firstAttribute="trailing" secondItem="AAd-1u-RKn" secondAttribute="trailing" constant="15" id="qKz-IT-xn7"/>
+                                <constraint firstAttribute="height" constant="50" id="qLK-RZ-Xbs"/>
+                                <constraint firstItem="27b-nw-Mre" firstAttribute="leading" secondItem="dde-XZ-Fmj" secondAttribute="leading" constant="11" id="rTJ-p0-FBw"/>
+                                <constraint firstItem="Gt5-4k-ZHe" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="ha1-58-cwy" secondAttribute="trailing" constant="15" id="rj2-ug-nGt"/>
+                                <constraint firstAttribute="bottom" secondItem="27b-nw-Mre" secondAttribute="bottom" id="u7K-uo-GbZ"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="tvg-xp-RbJ" appends="YES" id="Fgl-x2-xFH"/>
+                            </connections>
+                        </view>
+                        <view tag="1008" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NaT-to-bcq">
+                            <rect key="frame" x="0.0" y="380" width="347" height="50"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="实名认证" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xrD-iA-eJH">
+                                    <rect key="frame" x="12" y="15" width="75" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="75" id="LIe-xM-aBU"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="setting_next" translatesAutoresizingMaskIntoConstraints="NO" id="t9r-tO-fZi">
+                                    <rect key="frame" x="326" y="19.5" width="6" height="11"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="11" id="0X0-2p-yaf"/>
+                                        <constraint firstAttribute="width" constant="6" id="9G6-17-adT"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yfQ-lp-0PY">
+                                    <rect key="frame" x="11" y="49" width="327" height="1"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="1" id="ZkA-Sg-Ts0"/>
+                                    </constraints>
+                                </view>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c8g-8v-yk9">
+                                    <rect key="frame" x="316" y="0.0" width="0.0" height="49"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="t9r-tO-fZi" secondAttribute="trailing" constant="15" id="0Sh-BU-yNR"/>
+                                <constraint firstAttribute="trailing" secondItem="yfQ-lp-0PY" secondAttribute="trailing" constant="9" id="3Xb-D7-oVv"/>
+                                <constraint firstItem="xrD-iA-eJH" firstAttribute="centerY" secondItem="NaT-to-bcq" secondAttribute="centerY" id="5Yr-6L-pRu"/>
+                                <constraint firstAttribute="bottom" secondItem="yfQ-lp-0PY" secondAttribute="bottom" id="7HW-3x-SMu"/>
+                                <constraint firstItem="c8g-8v-yk9" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="xrD-iA-eJH" secondAttribute="trailing" constant="15" id="7m5-6X-OTE"/>
+                                <constraint firstItem="t9r-tO-fZi" firstAttribute="centerY" secondItem="NaT-to-bcq" secondAttribute="centerY" id="AJz-Bg-LnK"/>
+                                <constraint firstItem="yfQ-lp-0PY" firstAttribute="leading" secondItem="NaT-to-bcq" secondAttribute="leading" constant="11" id="Dyq-ku-m2r"/>
+                                <constraint firstAttribute="height" constant="50" id="QE1-nk-IY8"/>
+                                <constraint firstItem="t9r-tO-fZi" firstAttribute="leading" secondItem="c8g-8v-yk9" secondAttribute="trailing" constant="10" id="bwZ-Wk-dna"/>
+                                <constraint firstItem="yfQ-lp-0PY" firstAttribute="top" secondItem="c8g-8v-yk9" secondAttribute="bottom" id="oHB-Yl-Rk5"/>
+                                <constraint firstItem="xrD-iA-eJH" firstAttribute="leading" secondItem="NaT-to-bcq" secondAttribute="leading" constant="12" id="xTh-7h-2jP"/>
+                                <constraint firstItem="c8g-8v-yk9" firstAttribute="top" secondItem="NaT-to-bcq" secondAttribute="top" id="yr0-uA-cxh"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="lni-kN-iHH" appends="YES" id="3vf-Cu-onb"/>
+                            </connections>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    <constraints>
+                        <constraint firstItem="fZL-4c-wav" firstAttribute="leading" secondItem="40v-Cg-vfD" secondAttribute="leading" id="6ft-vm-Kv9"/>
+                        <constraint firstAttribute="leading" secondItem="J2o-ST-wEv" secondAttribute="leading" id="CL2-DK-7wL"/>
+                        <constraint firstItem="NaT-to-bcq" firstAttribute="leading" secondItem="40v-Cg-vfD" secondAttribute="leading" id="CmI-tS-DmI"/>
+                        <constraint firstAttribute="trailing" secondItem="IF9-sZ-JPq" secondAttribute="trailing" id="I7K-AY-pQf"/>
+                        <constraint firstItem="IF9-sZ-JPq" firstAttribute="top" secondItem="J2o-ST-wEv" secondAttribute="bottom" id="JBT-hw-rxH"/>
+                        <constraint firstItem="41H-H8-0XH" firstAttribute="top" secondItem="6iQ-yO-6VZ" secondAttribute="bottom" id="Jky-IU-fqr"/>
+                        <constraint firstItem="fZL-4c-wav" firstAttribute="top" secondItem="dde-XZ-Fmj" secondAttribute="bottom" id="NMs-DD-YBb"/>
+                        <constraint firstItem="6iQ-yO-6VZ" firstAttribute="top" secondItem="NLD-D0-BA1" secondAttribute="bottom" id="OVg-M6-xm4"/>
+                        <constraint firstItem="IF9-sZ-JPq" firstAttribute="leading" secondItem="40v-Cg-vfD" secondAttribute="leading" id="PAm-BS-Lmd"/>
+                        <constraint firstItem="41H-H8-0XH" firstAttribute="leading" secondItem="40v-Cg-vfD" secondAttribute="leading" id="TLI-VS-q0v"/>
+                        <constraint firstAttribute="bottom" secondItem="NaT-to-bcq" secondAttribute="bottom" constant="10" id="WuE-4e-gPi"/>
+                        <constraint firstItem="NaT-to-bcq" firstAttribute="top" secondItem="fZL-4c-wav" secondAttribute="bottom" id="XXP-NC-sH8"/>
+                        <constraint firstItem="J2o-ST-wEv" firstAttribute="top" secondItem="40v-Cg-vfD" secondAttribute="top" id="Zg5-W9-cZj"/>
+                        <constraint firstAttribute="trailing" secondItem="J2o-ST-wEv" secondAttribute="trailing" id="bhM-rn-SB0"/>
+                        <constraint firstAttribute="trailing" secondItem="6iQ-yO-6VZ" secondAttribute="trailing" id="hEa-6J-WJQ"/>
+                        <constraint firstAttribute="trailing" secondItem="dde-XZ-Fmj" secondAttribute="trailing" id="hvc-xz-RhM"/>
+                        <constraint firstItem="NLD-D0-BA1" firstAttribute="top" secondItem="IF9-sZ-JPq" secondAttribute="bottom" id="j7h-iM-JAE"/>
+                        <constraint firstAttribute="trailing" secondItem="41H-H8-0XH" secondAttribute="trailing" id="n2M-P4-cfT"/>
+                        <constraint firstItem="dde-XZ-Fmj" firstAttribute="leading" secondItem="40v-Cg-vfD" secondAttribute="leading" id="pM2-yk-q91"/>
+                        <constraint firstItem="NLD-D0-BA1" firstAttribute="leading" secondItem="40v-Cg-vfD" secondAttribute="leading" id="qv6-FT-El2"/>
+                        <constraint firstItem="dde-XZ-Fmj" firstAttribute="top" secondItem="41H-H8-0XH" secondAttribute="bottom" id="ttQ-bU-aJP"/>
+                        <constraint firstAttribute="trailing" secondItem="fZL-4c-wav" secondAttribute="trailing" id="uAb-eS-rYy"/>
+                        <constraint firstAttribute="trailing" secondItem="NaT-to-bcq" secondAttribute="trailing" id="wAo-Vk-TX6"/>
+                        <constraint firstItem="6iQ-yO-6VZ" firstAttribute="leading" secondItem="40v-Cg-vfD" secondAttribute="leading" id="wRs-Z1-jAG"/>
+                        <constraint firstAttribute="trailing" secondItem="NLD-D0-BA1" secondAttribute="trailing" id="xnu-df-wUG"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="40v-Cg-vfD" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="15" id="Deu-VY-9wk"/>
+                <constraint firstAttribute="trailing" secondItem="hhh-Gs-c0i" secondAttribute="trailing" constant="14" id="KYQ-2f-GeR"/>
+                <constraint firstAttribute="bottom" secondItem="hhh-Gs-c0i" secondAttribute="bottom" constant="20" id="VgG-aG-D5D"/>
+                <constraint firstItem="hhh-Gs-c0i" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="aqD-q7-njU"/>
+                <constraint firstAttribute="trailing" secondItem="40v-Cg-vfD" secondAttribute="trailing" constant="14" id="hs9-Jy-kMZ"/>
+                <constraint firstItem="40v-Cg-vfD" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="kJR-zF-SM3"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="authStatusLabel" destination="c8g-8v-yk9" id="irA-Ls-XvO"/>
+                <outlet property="birthdayLabel" destination="edx-ro-P9a" id="nOB-HK-9Kf"/>
+                <outlet property="genderLabel" destination="fLa-l1-4Y5" id="2v2-sP-i34"/>
+                <outlet property="nickNameLabel" destination="Lbd-gJ-V3D" id="DRh-xE-84H"/>
+                <outlet property="phoneLabel" destination="d85-0p-gam" id="x3j-HH-YHP"/>
+                <outlet property="subjectLabel" destination="Gt5-4k-ZHe" id="O0z-2d-qHE"/>
+                <outlet property="userAvatal" destination="UFo-U9-qsN" id="PGy-gh-OiR"/>
+            </connections>
+            <point key="canvasLocation" x="131.15942028985509" y="128.90625"/>
+        </view>
+        <tapGestureRecognizer id="sMf-AW-wp6">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="Lnp-h4-xYY"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="fIo-YP-4OD">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="gDA-US-EY0"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="0z8-co-gzT">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="1eR-yy-Tie"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="Zrl-5k-yIC">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="Mrc-CU-Ani"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="cj9-5z-tMh">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="ezr-cG-MEN"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="tvg-xp-RbJ">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="N5R-bS-IjM"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="CTa-Xk-gek">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="3cx-nz-a8V"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="lni-kN-iHH">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="bJP-KO-RcM"/>
+            </connections>
+        </tapGestureRecognizer>
+    </objects>
+    <resources>
+        <image name="setting_next" width="6" height="11"/>
+        <image name="user_default_avatal" width="52" height="52"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 26 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UserAuthBodyView.h

@@ -0,0 +1,26 @@
+//
+//  UserAuthBodyView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/27.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef void(^AuthSureCallback)(void);
+
+@interface UserAuthBodyView : UIView
+
+@property (weak, nonatomic) IBOutlet UITextField *nameField;
+
+@property (weak, nonatomic) IBOutlet UITextField *cardField;
+
++ (instancetype)shareInstance;
+
+- (void)sureAuthCall:(AuthSureCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 66 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UserAuthBodyView.m

@@ -0,0 +1,66 @@
+//
+//  UserAuthBodyView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/5/27.
+//
+
+#import "UserAuthBodyView.h"
+
+@interface UserAuthBodyView ()<UITextFieldDelegate>
+
+@property (nonatomic, copy) AuthSureCallback callback;
+
+
+@end
+
+@implementation UserAuthBodyView
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    self.nameField.delegate = self;
+    self.cardField.delegate = self;
+}
+
++ (instancetype)shareInstance {
+    UserAuthBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"UserAuthBodyView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)sureAuthCall:(AuthSureCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (IBAction)sureAction:(id)sender {
+    if (self.callback) {
+        self.callback();
+    }
+}
+
+- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
+    [string replaceAll:@" " WithString:@""];
+    if ([string isEqualToString:@"\n"]) {
+        [self endEditing:YES];
+        return YES;
+    }
+
+    // 输入控制
+    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
+    if (textField == self.cardField) {
+        if (newString.length > 18) {
+            return NO;
+        }
+    }
+    return YES;
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 134 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/UserAuthBodyView.xib

@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="UserAuthBodyView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="551"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zXT-wQ-9xf">
+                    <rect key="frame" x="27" y="15" width="360" height="70"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="姓名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nKZ-z7-YcX">
+                            <rect key="frame" x="0.0" y="2" width="37" height="25"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="25" id="6Ub-Ao-xiU"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
+                            <nil key="textColor"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入真实姓名" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="3vY-NV-dp4">
+                            <rect key="frame" x="0.0" y="27" width="360" height="43"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <textInputTraits key="textInputTraits" enablesReturnKeyAutomatically="YES"/>
+                        </textField>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="55x-la-fYP">
+                            <rect key="frame" x="7" y="69" width="346" height="1"/>
+                            <color key="backgroundColor" red="0.92156862745098034" green="0.92156862745098034" blue="0.92156862745098034" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="1" id="K0d-hL-Taa"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="bottom" secondItem="55x-la-fYP" secondAttribute="bottom" id="7v6-Jp-deP"/>
+                        <constraint firstItem="55x-la-fYP" firstAttribute="leading" secondItem="zXT-wQ-9xf" secondAttribute="leading" constant="7" id="8RL-aU-Iee"/>
+                        <constraint firstAttribute="trailing" secondItem="55x-la-fYP" secondAttribute="trailing" constant="7" id="Pl6-8S-Ttz"/>
+                        <constraint firstItem="nKZ-z7-YcX" firstAttribute="leading" secondItem="zXT-wQ-9xf" secondAttribute="leading" id="RCG-CW-Rqq"/>
+                        <constraint firstAttribute="trailing" secondItem="3vY-NV-dp4" secondAttribute="trailing" id="RFz-AW-LSg"/>
+                        <constraint firstItem="3vY-NV-dp4" firstAttribute="top" secondItem="nKZ-z7-YcX" secondAttribute="bottom" id="T85-ia-27k"/>
+                        <constraint firstItem="3vY-NV-dp4" firstAttribute="leading" secondItem="zXT-wQ-9xf" secondAttribute="leading" id="VQg-7F-vhL"/>
+                        <constraint firstItem="nKZ-z7-YcX" firstAttribute="top" secondItem="zXT-wQ-9xf" secondAttribute="top" constant="2" id="muE-Zf-Uwz"/>
+                        <constraint firstAttribute="bottom" secondItem="3vY-NV-dp4" secondAttribute="bottom" id="oMN-ji-XCo"/>
+                        <constraint firstAttribute="height" constant="70" id="qZQ-tq-IW6"/>
+                    </constraints>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ffm-T7-ztd">
+                    <rect key="frame" x="27" y="100" width="360" height="70"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="证件号码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JhR-Bf-KWc">
+                            <rect key="frame" x="0.0" y="2" width="73.5" height="25"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="25" id="mAP-Nm-lwZ"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
+                            <nil key="textColor"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入身份证号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="JWP-XS-Fwe">
+                            <rect key="frame" x="0.0" y="27" width="360" height="43"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <textInputTraits key="textInputTraits" keyboardType="alphabet"/>
+                        </textField>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QAx-sk-QrL">
+                            <rect key="frame" x="7" y="69" width="346" height="1"/>
+                            <color key="backgroundColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.92156862750000001" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="1" id="KjM-3S-Djt"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="70" id="3ps-PH-AH9"/>
+                        <constraint firstItem="JhR-Bf-KWc" firstAttribute="leading" secondItem="Ffm-T7-ztd" secondAttribute="leading" id="5XZ-Kc-um0"/>
+                        <constraint firstAttribute="trailing" secondItem="QAx-sk-QrL" secondAttribute="trailing" constant="7" id="HRA-Ls-7wR"/>
+                        <constraint firstItem="JhR-Bf-KWc" firstAttribute="top" secondItem="Ffm-T7-ztd" secondAttribute="top" constant="2" id="OOt-w3-35m"/>
+                        <constraint firstItem="JWP-XS-Fwe" firstAttribute="top" secondItem="JhR-Bf-KWc" secondAttribute="bottom" id="VWr-LG-nIi"/>
+                        <constraint firstAttribute="bottom" secondItem="QAx-sk-QrL" secondAttribute="bottom" id="W90-SW-YND"/>
+                        <constraint firstAttribute="bottom" secondItem="JWP-XS-Fwe" secondAttribute="bottom" id="XaH-Eg-mGt"/>
+                        <constraint firstAttribute="trailing" secondItem="JWP-XS-Fwe" secondAttribute="trailing" id="cAb-Z5-Q7S"/>
+                        <constraint firstItem="QAx-sk-QrL" firstAttribute="leading" secondItem="Ffm-T7-ztd" secondAttribute="leading" constant="7" id="kqB-ck-9jq"/>
+                        <constraint firstItem="JWP-XS-Fwe" firstAttribute="leading" secondItem="Ffm-T7-ztd" secondAttribute="leading" id="q7a-hm-4Lw"/>
+                    </constraints>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aeI-9x-Zku">
+                    <rect key="frame" x="28" y="197" width="358" height="44"/>
+                    <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="44" id="ZpX-K1-XGu"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" title="确定"/>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="22"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                    <connections>
+                        <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="TbP-ux-Lyc"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="Ffm-T7-ztd" secondAttribute="trailing" constant="27" id="2BE-on-vRw"/>
+                <constraint firstItem="aeI-9x-Zku" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="28" id="8Iw-kG-bru"/>
+                <constraint firstItem="zXT-wQ-9xf" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="15" id="E5t-Aw-Gex"/>
+                <constraint firstItem="zXT-wQ-9xf" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="27" id="TEH-LN-pPI"/>
+                <constraint firstAttribute="trailing" secondItem="zXT-wQ-9xf" secondAttribute="trailing" constant="27" id="WU6-BI-WfH"/>
+                <constraint firstAttribute="trailing" secondItem="aeI-9x-Zku" secondAttribute="trailing" constant="28" id="jQT-ed-bsl"/>
+                <constraint firstItem="aeI-9x-Zku" firstAttribute="top" secondItem="Ffm-T7-ztd" secondAttribute="bottom" constant="27" id="kRA-iQ-sHL"/>
+                <constraint firstItem="Ffm-T7-ztd" firstAttribute="top" secondItem="zXT-wQ-9xf" secondAttribute="bottom" constant="15" id="pXk-lo-3Gc"/>
+                <constraint firstItem="Ffm-T7-ztd" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="27" id="zeY-2I-CA2"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="cardField" destination="JWP-XS-Fwe" id="WSn-8z-FrL"/>
+                <outlet property="nameField" destination="3vY-NV-dp4" id="qPy-wI-AL0"/>
+            </connections>
+            <point key="canvasLocation" x="131.8840579710145" y="-21.763392857142858"/>
+        </view>
+    </objects>
+</document>

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.h

@@ -22,6 +22,7 @@ typedef NS_ENUM(NSInteger, MINEVIEWTYPE) {
     MINEVIEWTYPE_FINISHCOURSE, // 已完成课程
     MINEVIEWTYPE_UNFINISHCOURSE, // 未完成课程
     MINEVIEWTYPE_FOLLOW, // 我的关注
+    MINEVIEWTYPE_USER,
 
 };
 typedef void(^MineViewCallback)(MINEVIEWTYPE type);

+ 7 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m

@@ -102,6 +102,13 @@
 - (CGFloat)getViewHeight {
     return 80 + 15 + (self.memberViewHeight.constant) / 2 + 10 + 100 + 12 + 93 + 15 + 220;
 }
+
+- (IBAction)modifyUser:(id)sender {
+    if (self.callback) {
+        self.callback(MINEVIEWTYPE_USER);
+    }
+}
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 11 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib

@@ -261,16 +261,27 @@
                                 </userDefinedRuntimeAttribute>
                             </userDefinedRuntimeAttributes>
                         </view>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QuV-vC-ohV">
+                            <rect key="frame" x="15" y="14" width="52" height="52"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <connections>
+                                <action selector="modifyUser:" destination="iN0-l3-epB" eventType="touchUpInside" id="Lba-uL-3dV"/>
+                            </connections>
+                        </button>
                     </subviews>
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <gestureRecognizers/>
                     <constraints>
                         <constraint firstAttribute="height" constant="80" id="2dr-3Z-HqW"/>
+                        <constraint firstItem="QuV-vC-ohV" firstAttribute="top" secondItem="0Xj-Pq-GsW" secondAttribute="top" id="Cx3-Ob-Pvf"/>
+                        <constraint firstItem="QuV-vC-ohV" firstAttribute="trailing" secondItem="0Xj-Pq-GsW" secondAttribute="trailing" id="Jty-Vm-XW6"/>
                         <constraint firstItem="0Xj-Pq-GsW" firstAttribute="centerY" secondItem="4LF-Bt-r8c" secondAttribute="centerY" id="Yw6-be-zX3"/>
                         <constraint firstItem="XdJ-kZ-3mN" firstAttribute="leading" secondItem="Kmw-KD-cZO" secondAttribute="leading" id="ceh-hj-UL9"/>
                         <constraint firstItem="XdJ-kZ-3mN" firstAttribute="top" secondItem="Kmw-KD-cZO" secondAttribute="bottom" constant="2" id="gCX-lG-K5I"/>
                         <constraint firstItem="0Xj-Pq-GsW" firstAttribute="leading" secondItem="4LF-Bt-r8c" secondAttribute="leading" constant="15" id="k2E-Es-dn5"/>
+                        <constraint firstItem="QuV-vC-ohV" firstAttribute="leading" secondItem="0Xj-Pq-GsW" secondAttribute="leading" id="nFf-FN-iJC"/>
                         <constraint firstItem="Kmw-KD-cZO" firstAttribute="top" secondItem="0Xj-Pq-GsW" secondAttribute="top" constant="6" id="u1P-VW-Xnq"/>
+                        <constraint firstItem="QuV-vC-ohV" firstAttribute="bottom" secondItem="0Xj-Pq-GsW" secondAttribute="bottom" id="vlN-Yl-FtS"/>
                         <constraint firstItem="Kmw-KD-cZO" firstAttribute="leading" secondItem="0Xj-Pq-GsW" secondAttribute="trailing" constant="10" id="yjn-h2-WmO"/>
                     </constraints>
                 </view>

BIN
KulexiuForStudent/build/XCBuildData/BuildDescriptionCacheIndex-604c88e60e61e13155f665cce0707a51


BIN
KulexiuForStudent/build/XCBuildData/build.db