Pārlūkot izejas kodu

个人风采设置,查询。

Steven 3 gadi atpakaļ
vecāks
revīzija
c76ab187ab
100 mainītis faili ar 3304 papildinājumiem un 287 dzēšanām
  1. 146 0
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. 1 1
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist
  3. BIN
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  4. 48 0
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  5. 6 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/Contents.json
  6. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/choose_instrument.imageset/Contents.json
  7. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/choose_instrument.imageset/choose_instrument@2x.png
  8. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/choose_instrument.imageset/choose_instrument@3x.png
  9. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/image_upload.imageset/Contents.json
  10. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/image_upload.imageset/image_upload@2x.png
  11. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/image_upload.imageset/image_upload@3x.png
  12. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_instrument.imageset/Contents.json
  13. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_instrument.imageset/myStyle_instrument@2x.png
  14. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_instrument.imageset/myStyle_instrument@3x.png
  15. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_introduce.imageset/Contents.json
  16. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_introduce.imageset/myStyle_introduce@2x.png
  17. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_introduce.imageset/myStyle_introduce@3x.png
  18. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_video.imageset/Contents.json
  19. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_video.imageset/myStyle_video@2x.png
  20. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_video.imageset/myStyle_video@3x.png
  21. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/playVideo_image.imageset/Contents.json
  22. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/playVideo_image.imageset/playVideo_image@2x.png
  23. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/playVideo_image.imageset/playVideo_image@3x.png
  24. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/unChoose_instrument.imageset/Contents.json
  25. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/unChoose_instrument.imageset/unChoose_instrument@2x.png
  26. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/unChoose_instrument.imageset/unChoose_instrument@3x.png
  27. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/video_delete.imageset/Contents.json
  28. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/video_delete.imageset/video_delete@2x.png
  29. BIN
      KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/video_delete.imageset/video_delete@3x.png
  30. 27 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h
  31. 42 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m
  32. 25 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Category/UIView+ExtensionForDotLine.h
  33. 35 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Category/UIView+ExtensionForDotLine.m
  34. 15 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.m
  35. 30 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/View/AccompanyAlertView.h
  36. 101 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/View/AccompanyAlertView.m
  37. 151 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/View/AccompanyAlertView.xib
  38. 3 1
      KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHeadView.m
  39. 11 9
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Controller/MineViewController.m
  40. 23 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/InstrumentChooseViewController.h
  41. 270 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/InstrumentChooseViewController.m
  42. 16 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/MyStyleViewController.h
  43. 203 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/MyStyleViewController.m
  44. 31 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Model/InstrumentMessageModel.h
  45. 169 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Model/InstrumentMessageModel.m
  46. 23 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentChooseBottonView.h
  47. 43 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentChooseBottonView.m
  48. 46 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentChooseBottonView.xib
  49. 19 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentChooseCell.h
  50. 34 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentChooseCell.m
  51. 82 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentChooseCell.xib
  52. 18 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentHeaderView.h
  53. 26 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentHeaderView.m
  54. 52 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentHeaderView.xib
  55. 20 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleBottomView.h
  56. 43 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleBottomView.m
  57. 47 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleBottomView.xib
  58. 25 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleInstrumentCell.h
  59. 118 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleInstrumentCell.m
  60. 109 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleInstrumentCell.xib
  61. 21 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleIntroduceCell.h
  62. 38 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleIntroduceCell.m
  63. 123 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleIntroduceCell.xib
  64. 18 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoCell.h
  65. 40 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoCell.m
  66. 87 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoCell.xib
  67. 32 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoView.h
  68. 71 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoView.m
  69. 143 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoView.xib
  70. 3 3
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/DeviceCheck/DeviceCheckView.xib
  71. 7 7
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/Controller/MinePageViewController.m
  72. 1 50
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MineIntroduceCell.xib
  73. 17 12
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageVideoCell.xib
  74. 2 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageVideoView.m
  75. 33 10
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.h
  76. 225 62
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.m
  77. 3 7
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/Controller/VideoCourseViewController.m
  78. 14 9
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/View/VideoCourseCell.xib
  79. 17 6
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/View/VideoListBodyView.m
  80. 2 0
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineBodyView.h
  81. 12 4
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineBodyView.m
  82. 6 2
      KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineBodyView.xib
  83. 3 3
      KulexiuForTeacher/Podfile
  84. 8 8
      KulexiuForTeacher/Podfile.lock
  85. BIN
      KulexiuForTeacher/Pods/JCore/libjcore-noidfa-ios-2.6.2.a
  86. 8 8
      KulexiuForTeacher/Pods/Manifest.lock
  87. 10 10
      KulexiuForTeacher/Pods/Pods.xcodeproj/project.pbxproj
  88. 105 51
      KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist
  89. BIN
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-arm64_armv7/RongFaceBeautifier.framework/Info.plist
  90. BIN
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-arm64_armv7/RongFaceBeautifier.framework/RongFaceBeautifier
  91. 1 1
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-arm64_armv7/RongFaceBeautifier.framework/_CodeSignature/CodeResources
  92. BIN
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-x86_64-simulator/RongFaceBeautifier.framework/Info.plist
  93. BIN
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-x86_64-simulator/RongFaceBeautifier.framework/RongFaceBeautifier
  94. 1 1
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-x86_64-simulator/RongFaceBeautifier.framework/_CodeSignature/CodeResources
  95. 7 7
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/Info.plist
  96. 4 4
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-arm64_armv7/RongRTCLib.framework/Headers/RCRTCLocalUser.h
  97. BIN
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-arm64_armv7/RongRTCLib.framework/Info.plist
  98. BIN
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-arm64_armv7/RongRTCLib.framework/RongRTCLib
  99. 4 4
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-arm64_armv7/RongRTCLib.framework/_CodeSignature/CodeResources
  100. 4 4
      KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-x86_64-simulator/RongRTCLib.framework/Headers/RCRTCLocalUser.h

+ 146 - 0
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -436,6 +436,17 @@
 		27FC2F6627F1BBFE00FCC239 /* MyMusicViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27FC2F6527F1BBFE00FCC239 /* MyMusicViewController.m */; };
 		27FC2F6D27F1BE4800FCC239 /* VideoCourseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 27FC2F6C27F1BE4800FCC239 /* VideoCourseViewController.m */; };
 		BC0167A627FC06D600AE66A1 /* MyCourseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC0167A527FC06D600AE66A1 /* MyCourseViewController.m */; };
+		BC5EB5A92803D85300B4A3B0 /* AccompanyAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB5A82803D85300B4A3B0 /* AccompanyAlertView.m */; };
+		BC5EB5AB2803D86500B4A3B0 /* AccompanyAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5EB5AA2803D86500B4A3B0 /* AccompanyAlertView.xib */; };
+		BC5EB5B22804027500B4A3B0 /* MyStyleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB5B12804027500B4A3B0 /* MyStyleViewController.m */; };
+		BC5EB5B6280402CB00B4A3B0 /* MyStyleInstrumentCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB5B4280402CB00B4A3B0 /* MyStyleInstrumentCell.m */; };
+		BC5EB5B7280402CB00B4A3B0 /* MyStyleInstrumentCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5EB5B5280402CB00B4A3B0 /* MyStyleInstrumentCell.xib */; };
+		BC5EB5BB2804083800B4A3B0 /* MyStyleIntroduceCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB5B92804083800B4A3B0 /* MyStyleIntroduceCell.m */; };
+		BC5EB5BC2804083800B4A3B0 /* MyStyleIntroduceCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5EB5BA2804083800B4A3B0 /* MyStyleIntroduceCell.xib */; };
+		BC5EB5C02804085500B4A3B0 /* MyStyleVideoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB5BE2804085500B4A3B0 /* MyStyleVideoCell.m */; };
+		BC5EB5C12804085500B4A3B0 /* MyStyleVideoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5EB5BF2804085500B4A3B0 /* MyStyleVideoCell.xib */; };
+		BC5EB5C42804087000B4A3B0 /* MyStyleBottomView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5EB5C32804087000B4A3B0 /* MyStyleBottomView.m */; };
+		BC5EB5C62804087700B4A3B0 /* MyStyleBottomView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC5EB5C52804087700B4A3B0 /* MyStyleBottomView.xib */; };
 		BC6C303A27F586A60044BC0F /* KSRCMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC6C303927F586A60044BC0F /* KSRCMessageModel.m */; };
 		BCA9CE1527FD339400D558C6 /* AuthDisplayView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA9CE1427FD339400D558C6 /* AuthDisplayView.m */; };
 		BCA9CE1727FD339D00D558C6 /* AuthDisplayView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA9CE1627FD339D00D558C6 /* AuthDisplayView.xib */; };
@@ -479,6 +490,8 @@
 		BCB635B927F722E800ACFDCF /* KSDocumentViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB635B827F722E800ACFDCF /* KSDocumentViewController.m */; };
 		BCB635BE27F7256B00ACFDCF /* KSICloudManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB635BA27F7256B00ACFDCF /* KSICloudManager.m */; };
 		BCB635BF27F7256B00ACFDCF /* KSDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB635BD27F7256B00ACFDCF /* KSDocument.m */; };
+		BCC03F88280460C000461B7C /* InstrumentHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCC03F86280460C000461B7C /* InstrumentHeaderView.m */; };
+		BCC03F89280460C000461B7C /* InstrumentHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCC03F87280460C000461B7C /* InstrumentHeaderView.xib */; };
 		BCC9F35527F5F4FD00647449 /* LiveSeatMember.m in Sources */ = {isa = PBXBuildFile; fileRef = BCC9F35427F5F4FD00647449 /* LiveSeatMember.m */; };
 		BCC9F40727F69BD200647449 /* SealClass.strings in Resources */ = {isa = PBXBuildFile; fileRef = BCC9F35C27F69BD100647449 /* SealClass.strings */; };
 		BCC9F40927F69BD200647449 /* ZoomControl.m in Sources */ = {isa = PBXBuildFile; fileRef = BCC9F36427F69BD100647449 /* ZoomControl.m */; };
@@ -569,6 +582,15 @@
 		BCF1BA5627F5CBA100FA36C4 /* LiveSeatApplyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCF1BA5527F5CBA100FA36C4 /* LiveSeatApplyView.xib */; };
 		BCF1BA5A27F5CF3C00FA36C4 /* LiveSeatApplyCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF1BA5827F5CF3C00FA36C4 /* LiveSeatApplyCell.m */; };
 		BCF1BA5B27F5CF3C00FA36C4 /* LiveSeatApplyCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCF1BA5927F5CF3C00FA36C4 /* LiveSeatApplyCell.xib */; };
+		BCF61BDC280417100000ACFE /* MyStyleVideoView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF61BDB280417100000ACFE /* MyStyleVideoView.m */; };
+		BCF61BDE280417190000ACFE /* MyStyleVideoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCF61BDD280417190000ACFE /* MyStyleVideoView.xib */; };
+		BCF61BE128041FC90000ACFE /* UIView+ExtensionForDotLine.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF61BE028041FC90000ACFE /* UIView+ExtensionForDotLine.m */; };
+		BCF61BE42804248F0000ACFE /* InstrumentChooseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF61BE32804248F0000ACFE /* InstrumentChooseViewController.m */; };
+		BCF61BE8280425DA0000ACFE /* InstrumentChooseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF61BE6280425DA0000ACFE /* InstrumentChooseCell.m */; };
+		BCF61BE9280425DA0000ACFE /* InstrumentChooseCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCF61BE7280425DA0000ACFE /* InstrumentChooseCell.xib */; };
+		BCF61BEC28042D1A0000ACFE /* InstrumentMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF61BEB28042D1A0000ACFE /* InstrumentMessageModel.m */; };
+		BCF61BEF28042F9B0000ACFE /* InstrumentChooseBottonView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF61BEE28042F9B0000ACFE /* InstrumentChooseBottonView.m */; };
+		BCF61BF128042FA90000ACFE /* InstrumentChooseBottonView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCF61BF028042FA90000ACFE /* InstrumentChooseBottonView.xib */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -1379,6 +1401,23 @@
 		AC7237F12804B8A0533DF9FE /* Pods-KulexiuForTeacher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KulexiuForTeacher.debug.xcconfig"; path = "Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher.debug.xcconfig"; sourceTree = "<group>"; };
 		BC0167A427FC06D600AE66A1 /* MyCourseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyCourseViewController.h; sourceTree = "<group>"; };
 		BC0167A527FC06D600AE66A1 /* MyCourseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyCourseViewController.m; sourceTree = "<group>"; };
+		BC5EB5A72803D85300B4A3B0 /* AccompanyAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccompanyAlertView.h; sourceTree = "<group>"; };
+		BC5EB5A82803D85300B4A3B0 /* AccompanyAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AccompanyAlertView.m; sourceTree = "<group>"; };
+		BC5EB5AA2803D86500B4A3B0 /* AccompanyAlertView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AccompanyAlertView.xib; sourceTree = "<group>"; };
+		BC5EB5B02804027500B4A3B0 /* MyStyleViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleViewController.h; sourceTree = "<group>"; };
+		BC5EB5B12804027500B4A3B0 /* MyStyleViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleViewController.m; sourceTree = "<group>"; };
+		BC5EB5B3280402CB00B4A3B0 /* MyStyleInstrumentCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleInstrumentCell.h; sourceTree = "<group>"; };
+		BC5EB5B4280402CB00B4A3B0 /* MyStyleInstrumentCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleInstrumentCell.m; sourceTree = "<group>"; };
+		BC5EB5B5280402CB00B4A3B0 /* MyStyleInstrumentCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyStyleInstrumentCell.xib; sourceTree = "<group>"; };
+		BC5EB5B82804083800B4A3B0 /* MyStyleIntroduceCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleIntroduceCell.h; sourceTree = "<group>"; };
+		BC5EB5B92804083800B4A3B0 /* MyStyleIntroduceCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleIntroduceCell.m; sourceTree = "<group>"; };
+		BC5EB5BA2804083800B4A3B0 /* MyStyleIntroduceCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyStyleIntroduceCell.xib; sourceTree = "<group>"; };
+		BC5EB5BD2804085500B4A3B0 /* MyStyleVideoCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleVideoCell.h; sourceTree = "<group>"; };
+		BC5EB5BE2804085500B4A3B0 /* MyStyleVideoCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleVideoCell.m; sourceTree = "<group>"; };
+		BC5EB5BF2804085500B4A3B0 /* MyStyleVideoCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyStyleVideoCell.xib; sourceTree = "<group>"; };
+		BC5EB5C22804087000B4A3B0 /* MyStyleBottomView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleBottomView.h; sourceTree = "<group>"; };
+		BC5EB5C32804087000B4A3B0 /* MyStyleBottomView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleBottomView.m; sourceTree = "<group>"; };
+		BC5EB5C52804087700B4A3B0 /* MyStyleBottomView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyStyleBottomView.xib; sourceTree = "<group>"; };
 		BC6C303827F586A60044BC0F /* KSRCMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSRCMessageModel.h; sourceTree = "<group>"; };
 		BC6C303927F586A60044BC0F /* KSRCMessageModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSRCMessageModel.m; sourceTree = "<group>"; };
 		BCA9CE1327FD339400D558C6 /* AuthDisplayView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AuthDisplayView.h; sourceTree = "<group>"; };
@@ -1453,6 +1492,9 @@
 		BCB635BB27F7256B00ACFDCF /* KSICloudManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSICloudManager.h; sourceTree = "<group>"; };
 		BCB635BC27F7256B00ACFDCF /* KSDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSDocument.h; sourceTree = "<group>"; };
 		BCB635BD27F7256B00ACFDCF /* KSDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSDocument.m; sourceTree = "<group>"; };
+		BCC03F85280460C000461B7C /* InstrumentHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InstrumentHeaderView.h; sourceTree = "<group>"; };
+		BCC03F86280460C000461B7C /* InstrumentHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InstrumentHeaderView.m; sourceTree = "<group>"; };
+		BCC03F87280460C000461B7C /* InstrumentHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InstrumentHeaderView.xib; sourceTree = "<group>"; };
 		BCC9F35327F5F4FD00647449 /* LiveSeatMember.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LiveSeatMember.h; sourceTree = "<group>"; };
 		BCC9F35427F5F4FD00647449 /* LiveSeatMember.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LiveSeatMember.m; sourceTree = "<group>"; };
 		BCC9F35B27F69BD100647449 /* KSRemoteUserManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSRemoteUserManager.h; sourceTree = "<group>"; };
@@ -1625,6 +1667,21 @@
 		BCF1BA5727F5CF3C00FA36C4 /* LiveSeatApplyCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LiveSeatApplyCell.h; sourceTree = "<group>"; };
 		BCF1BA5827F5CF3C00FA36C4 /* LiveSeatApplyCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LiveSeatApplyCell.m; sourceTree = "<group>"; };
 		BCF1BA5927F5CF3C00FA36C4 /* LiveSeatApplyCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LiveSeatApplyCell.xib; sourceTree = "<group>"; };
+		BCF61BDA280417100000ACFE /* MyStyleVideoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyStyleVideoView.h; sourceTree = "<group>"; };
+		BCF61BDB280417100000ACFE /* MyStyleVideoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyStyleVideoView.m; sourceTree = "<group>"; };
+		BCF61BDD280417190000ACFE /* MyStyleVideoView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyStyleVideoView.xib; sourceTree = "<group>"; };
+		BCF61BDF28041FC90000ACFE /* UIView+ExtensionForDotLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIView+ExtensionForDotLine.h"; sourceTree = "<group>"; };
+		BCF61BE028041FC90000ACFE /* UIView+ExtensionForDotLine.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIView+ExtensionForDotLine.m"; sourceTree = "<group>"; };
+		BCF61BE22804248F0000ACFE /* InstrumentChooseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InstrumentChooseViewController.h; sourceTree = "<group>"; };
+		BCF61BE32804248F0000ACFE /* InstrumentChooseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InstrumentChooseViewController.m; sourceTree = "<group>"; };
+		BCF61BE5280425DA0000ACFE /* InstrumentChooseCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InstrumentChooseCell.h; sourceTree = "<group>"; };
+		BCF61BE6280425DA0000ACFE /* InstrumentChooseCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InstrumentChooseCell.m; sourceTree = "<group>"; };
+		BCF61BE7280425DA0000ACFE /* InstrumentChooseCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InstrumentChooseCell.xib; sourceTree = "<group>"; };
+		BCF61BEA28042D190000ACFE /* InstrumentMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstrumentMessageModel.h; sourceTree = "<group>"; };
+		BCF61BEB28042D1A0000ACFE /* InstrumentMessageModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstrumentMessageModel.m; sourceTree = "<group>"; };
+		BCF61BED28042F9B0000ACFE /* InstrumentChooseBottonView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InstrumentChooseBottonView.h; sourceTree = "<group>"; };
+		BCF61BEE28042F9B0000ACFE /* InstrumentChooseBottonView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InstrumentChooseBottonView.m; sourceTree = "<group>"; };
+		BCF61BF028042FA90000ACFE /* InstrumentChooseBottonView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InstrumentChooseBottonView.xib; sourceTree = "<group>"; };
 		CC310B10C17622ABB179BC7C /* libPods-KulexiuForTeacher.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-KulexiuForTeacher.a"; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
@@ -2198,6 +2255,8 @@
 				277930CD27E30FBD0010E277 /* UIView+KSLayer.m */,
 				277930D527E30FBD0010E277 /* UIView+XIBView.h */,
 				277930C627E30FBD0010E277 /* UIView+XIBView.m */,
+				BCF61BDF28041FC90000ACFE /* UIView+ExtensionForDotLine.h */,
+				BCF61BE028041FC90000ACFE /* UIView+ExtensionForDotLine.m */,
 				277930D927E30FBD0010E277 /* UrlDecode.h */,
 				277930C827E30FBD0010E277 /* UrlDecode.m */,
 				BCE6A07D27F7FACA00C97704 /* UIView+SubViewExtension.h */,
@@ -2835,6 +2894,7 @@
 		277935FE27E32BBF0010E277 /* Mine */ = {
 			isa = PBXGroup;
 			children = (
+				BC5EB5AC2804016200B4A3B0 /* CreateStyle */,
 				BCA9CE1827FD5EBF00D558C6 /* LiveCourse */,
 				275FA55927F31A7400EB6240 /* MinePage */,
 				27FC2F6727F1BE3600FCC239 /* VideoCourse */,
@@ -3424,6 +3484,67 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		BC5EB5AC2804016200B4A3B0 /* CreateStyle */ = {
+			isa = PBXGroup;
+			children = (
+				BC5EB5AD2804016200B4A3B0 /* Controller */,
+				BC5EB5AE2804016200B4A3B0 /* Model */,
+				BC5EB5AF2804016200B4A3B0 /* View */,
+			);
+			path = CreateStyle;
+			sourceTree = "<group>";
+		};
+		BC5EB5AD2804016200B4A3B0 /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+				BC5EB5B02804027500B4A3B0 /* MyStyleViewController.h */,
+				BC5EB5B12804027500B4A3B0 /* MyStyleViewController.m */,
+				BCF61BE22804248F0000ACFE /* InstrumentChooseViewController.h */,
+				BCF61BE32804248F0000ACFE /* InstrumentChooseViewController.m */,
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
+		BC5EB5AE2804016200B4A3B0 /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				BCF61BEA28042D190000ACFE /* InstrumentMessageModel.h */,
+				BCF61BEB28042D1A0000ACFE /* InstrumentMessageModel.m */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		BC5EB5AF2804016200B4A3B0 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				BC5EB5B3280402CB00B4A3B0 /* MyStyleInstrumentCell.h */,
+				BC5EB5B4280402CB00B4A3B0 /* MyStyleInstrumentCell.m */,
+				BC5EB5B5280402CB00B4A3B0 /* MyStyleInstrumentCell.xib */,
+				BC5EB5B82804083800B4A3B0 /* MyStyleIntroduceCell.h */,
+				BC5EB5B92804083800B4A3B0 /* MyStyleIntroduceCell.m */,
+				BC5EB5BA2804083800B4A3B0 /* MyStyleIntroduceCell.xib */,
+				BC5EB5BD2804085500B4A3B0 /* MyStyleVideoCell.h */,
+				BC5EB5BE2804085500B4A3B0 /* MyStyleVideoCell.m */,
+				BC5EB5BF2804085500B4A3B0 /* MyStyleVideoCell.xib */,
+				BC5EB5C22804087000B4A3B0 /* MyStyleBottomView.h */,
+				BC5EB5C32804087000B4A3B0 /* MyStyleBottomView.m */,
+				BC5EB5C52804087700B4A3B0 /* MyStyleBottomView.xib */,
+				BCF61BDA280417100000ACFE /* MyStyleVideoView.h */,
+				BCF61BDB280417100000ACFE /* MyStyleVideoView.m */,
+				BCF61BDD280417190000ACFE /* MyStyleVideoView.xib */,
+				BCF61BE5280425DA0000ACFE /* InstrumentChooseCell.h */,
+				BCF61BE6280425DA0000ACFE /* InstrumentChooseCell.m */,
+				BCF61BE7280425DA0000ACFE /* InstrumentChooseCell.xib */,
+				BCC03F85280460C000461B7C /* InstrumentHeaderView.h */,
+				BCC03F86280460C000461B7C /* InstrumentHeaderView.m */,
+				BCC03F87280460C000461B7C /* InstrumentHeaderView.xib */,
+				BCF61BED28042F9B0000ACFE /* InstrumentChooseBottonView.h */,
+				BCF61BEE28042F9B0000ACFE /* InstrumentChooseBottonView.m */,
+				BCF61BF028042FA90000ACFE /* InstrumentChooseBottonView.xib */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
 		BCA9CE1827FD5EBF00D558C6 /* LiveCourse */ = {
 			isa = PBXGroup;
 			children = (
@@ -3508,6 +3629,9 @@
 				BCA9CE4D27FD954800D558C6 /* AccompanyRemarkCell.h */,
 				BCA9CE4E27FD954800D558C6 /* AccompanyRemarkCell.m */,
 				BCA9CE4F27FD954800D558C6 /* AccompanyRemarkCell.xib */,
+				BC5EB5A72803D85300B4A3B0 /* AccompanyAlertView.h */,
+				BC5EB5A82803D85300B4A3B0 /* AccompanyAlertView.m */,
+				BC5EB5AA2803D86500B4A3B0 /* AccompanyAlertView.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -4115,6 +4239,7 @@
 				275B173127EB27960081FDEF /* GroupCreateView.xib in Resources */,
 				BCC9F43227F69BD200647449 /* class_stop.mp3 in Resources */,
 				2755C08E27ED5DB2007D9070 /* GroupApplyChooseCell.xib in Resources */,
+				BCF61BE9280425DA0000ACFE /* InstrumentChooseCell.xib in Resources */,
 				277931CE27E30FC20010E277 /* KSPremissionAlert.xib in Resources */,
 				275E3DFC27F46B440010EC30 /* KSBeautySettingView.xib in Resources */,
 				2779335627E316DD0010E277 /* WMPlayer.bundle in Resources */,
@@ -4125,6 +4250,7 @@
 				275E8A7227E18F2300DD3F6E /* Main.storyboard in Resources */,
 				2780C92927E490CA00A95A4F /* VefiBodyView.xib in Resources */,
 				BCA9CE4427FD947C00D558C6 /* AccompanyArrangeCell.xib in Resources */,
+				BCF61BF128042FA90000ACFE /* InstrumentChooseBottonView.xib in Resources */,
 				277D433027E9A50800107DB7 /* PhoneChangeBodyView.xib in Resources */,
 				27A54CEE27E9B986007309A3 /* ModifyNameBodyView.xib in Resources */,
 				2708565E27EDA83100EC8E72 /* GroupMemberListCell.xib in Resources */,
@@ -4137,6 +4263,7 @@
 				27BC3B2B27F2DB9600D81E30 /* MusicUploadView.xib in Resources */,
 				BCE6A09B27F83E8E00C97704 /* MinePageVideoCell.xib in Resources */,
 				2723B68E27F1686100E0B90B /* HomeNavView.xib in Resources */,
+				BC5EB5C62804087700B4A3B0 /* MyStyleBottomView.xib in Resources */,
 				275E3DE927F4679E0010EC30 /* LiveRoomHeadView.xib in Resources */,
 				27D83F4E27F3EC2100062476 /* CreateLiveBodyView.xib in Resources */,
 				27F9030827E86CCB00C08A19 /* DeviceCheckView.xib in Resources */,
@@ -4147,6 +4274,7 @@
 				27BC3B3027F2FC7200D81E30 /* VideoCourseCell.xib in Resources */,
 				2779362227E334470010E277 /* KSUpdateAlert.xib in Resources */,
 				277D433127E9A50800107DB7 /* PhoneCheckBodyView.xib in Resources */,
+				BC5EB5C12804085500B4A3B0 /* MyStyleVideoCell.xib in Resources */,
 				BCF1BA5627F5CBA100FA36C4 /* LiveSeatApplyView.xib in Resources */,
 				2708565927ED961900EC8E72 /* ApplyBottomView.xib in Resources */,
 				BCB399AE27F946AA00AFF376 /* CourseNavView.xib in Resources */,
@@ -4158,12 +4286,14 @@
 				BCA9CE4927FD950C00D558C6 /* AccompnayHomeworkCell.xib in Resources */,
 				BCE6A0A527F8517900C97704 /* MineVideoCell.xib in Resources */,
 				BCC9F40727F69BD200647449 /* SealClass.strings in Resources */,
+				BC5EB5AB2803D86500B4A3B0 /* AccompanyAlertView.xib in Resources */,
 				BCE6A08C27F823A300C97704 /* AccompanyCourseCell.xib in Resources */,
 				BCE6A08727F81B4D00C97704 /* MinePageSubmitView.xib in Resources */,
 				27A54CF927E9BD8B007309A3 /* FeedbackBodyView.xib in Resources */,
 				BCB6340527F6A2F000ACFDCF /* tock.wav in Resources */,
 				BCB6340627F6A2F000ACFDCF /* tick.wav in Resources */,
 				2755C07127EC7F21007D9070 /* ChatComplainBodyView.xib in Resources */,
+				BC5EB5B7280402CB00B4A3B0 /* MyStyleInstrumentCell.xib in Resources */,
 				BCA9CE1727FD339D00D558C6 /* AuthDisplayView.xib in Resources */,
 				BCF1BA5B27F5CF3C00FA36C4 /* LiveSeatApplyCell.xib in Resources */,
 				2780C92427E4903500A95A4F /* PasswordBodyView.xib in Resources */,
@@ -4183,6 +4313,9 @@
 				2779329A27E30FEB0010E277 /* mss_browseLoading@2x.png in Resources */,
 				27F9CAFC27EC1AF3003E0FE4 /* ContractListCell.xib in Resources */,
 				BCA9CE5127FD954800D558C6 /* AccompanyRemarkCell.xib in Resources */,
+				BCF61BDE280417190000ACFE /* MyStyleVideoView.xib in Resources */,
+				BCC03F89280460C000461B7C /* InstrumentHeaderView.xib in Resources */,
+				BC5EB5BC2804083800B4A3B0 /* MyStyleIntroduceCell.xib in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -4276,6 +4409,7 @@
 				2779324027E30FC30010E277 /* VoNetworking+RequestManager.m in Sources */,
 				2723B68C27F1685600E0B90B /* HomeNavView.m in Sources */,
 				BCB633FB27F6A18200ACFDCF /* ClassVideoListCell.m in Sources */,
+				BCF61BDC280417100000ACFE /* MyStyleVideoView.m in Sources */,
 				27BC3B2927F2DB8600D81E30 /* MusicUploadView.m in Sources */,
 				277931F327E30FC20010E277 /* UIView+Hints.m in Sources */,
 				2779321927E30FC30010E277 /* UITextView_Toolbar.m in Sources */,
@@ -4318,6 +4452,7 @@
 				2779326527E30FD80010E277 /* FSCalendarDelegationFactory.m in Sources */,
 				277931E127E30FC20010E277 /* NSString+zh_SafeAccess.m in Sources */,
 				BCC9F40A27F69BD200647449 /* InputView.m in Sources */,
+				BC5EB5B22804027500B4A3B0 /* MyStyleViewController.m in Sources */,
 				277932F227E310070010E277 /* TZGifPhotoPreviewController.m in Sources */,
 				275B16FD27EB083C0081FDEF /* ChatAddressViewController.m in Sources */,
 				275E8A6F27E18F2300DD3F6E /* ViewController.m in Sources */,
@@ -4354,6 +4489,7 @@
 				BCC9F41827F69BD200647449 /* ClassroomTitleView.m in Sources */,
 				277932EE27E310070010E277 /* TZPhotoPreviewCell.m in Sources */,
 				2780A06927E823C600447CFD /* MineBodyView.m in Sources */,
+				BC5EB5BB2804083800B4A3B0 /* MyStyleIntroduceCell.m in Sources */,
 				277931D627E30FC20010E277 /* UIImage+Property.m in Sources */,
 				2779326727E30FD80010E277 /* FSCalendarStickyHeader.m in Sources */,
 				277931F027E30FC20010E277 /* UIView+AddConstraints.m in Sources */,
@@ -4367,6 +4503,7 @@
 				BCE6A07F27F7FACA00C97704 /* UIView+SubViewExtension.m in Sources */,
 				BCA9CE5027FD954800D558C6 /* AccompanyRemarkCell.m in Sources */,
 				2779321B27E30FC30010E277 /* SearchView.m in Sources */,
+				BC5EB5A92803D85300B4A3B0 /* AccompanyAlertView.m in Sources */,
 				2708565227ED8B8C00EC8E72 /* GroupApplyChooseAllCell.m in Sources */,
 				277932BC27E30FFE0010E277 /* TAAbstractDotView.m in Sources */,
 				277931D927E30FC20010E277 /* NSObject+AutoProperty.m in Sources */,
@@ -4380,10 +4517,12 @@
 				2779322427E30FC30010E277 /* ShopButton.m in Sources */,
 				277932EC27E310070010E277 /* TZImageManager.m in Sources */,
 				BCE6A0A927F852CD00C97704 /* MineFansGroupCell.m in Sources */,
+				BCC03F88280460C000461B7C /* InstrumentHeaderView.m in Sources */,
 				2779323727E30FC30010E277 /* LLFileManager.m in Sources */,
 				27F902F127E8614D00C08A19 /* SettingViewController.m in Sources */,
 				BCB633FF27F6A18200ACFDCF /* MainToolView.m in Sources */,
 				277932F027E310070010E277 /* TZImagePickerController.m in Sources */,
+				BCF61BE128041FC90000ACFE /* UIView+ExtensionForDotLine.m in Sources */,
 				BCC9F42F27F69BD200647449 /* HTTPUtility.m in Sources */,
 				275FA1A327E7311700CFEA2E /* KSRCIMDataSource.m in Sources */,
 				275B171727EB1B930081FDEF /* KSSearchHistoryMessageController.m in Sources */,
@@ -4524,6 +4663,7 @@
 				2779331627E310AA0010E277 /* UIView+ShowProgress.m in Sources */,
 				BCC9F42727F69BD200647449 /* KSWhiteboardControl.m in Sources */,
 				277935E527E328C00010E277 /* CustomNavViewController.m in Sources */,
+				BC5EB5C42804087000B4A3B0 /* MyStyleBottomView.m in Sources */,
 				275E3DE027F467410010EC30 /* KSChatEmojiBoardView.m in Sources */,
 				BCC9F44927F69BD200647449 /* ClassroomService.m in Sources */,
 				277931CC27E30FC20010E277 /* KSGifRefreshFooter.m in Sources */,
@@ -4544,6 +4684,7 @@
 				275FA1A027E7250700CFEA2E /* KSAccompanyWebViewController.m in Sources */,
 				2755C07727EC945D007D9070 /* GroupMemberViewController.m in Sources */,
 				2773205227EDB75B008FAECA /* GroupNoticeCell.m in Sources */,
+				BC5EB5B6280402CB00B4A3B0 /* MyStyleInstrumentCell.m in Sources */,
 				277931C527E30FC20010E277 /* NSObject+KSSwizzling.m in Sources */,
 				27A54CF727E9BD7C007309A3 /* FeedbackBodyView.m in Sources */,
 				277932BD27E30FFE0010E277 /* SDQWMaskCustomView.m in Sources */,
@@ -4574,6 +4715,7 @@
 				277932ED27E310070010E277 /* TZPhotoPickerController.m in Sources */,
 				277932E227E310070010E277 /* TZImageCropManager.m in Sources */,
 				277932B327E30FFE0010E277 /* QWdynamicModel.m in Sources */,
+				BCF61BE8280425DA0000ACFE /* InstrumentChooseCell.m in Sources */,
 				2779329627E30FEB0010E277 /* MSSBrowseZoomScrollView.m in Sources */,
 				BCB635B927F722E800ACFDCF /* KSDocumentViewController.m in Sources */,
 				275E3DE727F4677F0010EC30 /* LiveRoomHeadView.m in Sources */,
@@ -4599,6 +4741,7 @@
 				277931EA27E30FC20010E277 /* UIAlertController+Extend.m in Sources */,
 				BCC9F41627F69BD200647449 /* TimeStampMessage.m in Sources */,
 				2779326C27E30FD80010E277 /* FSCalendarExtensions.m in Sources */,
+				BCF61BEC28042D1A0000ACFE /* InstrumentMessageModel.m in Sources */,
 				27D5D5D127EDBA9400B4720C /* NoticeEditBodyView.m in Sources */,
 				BCC9F42D27F69BD200647449 /* UIView+MBProgressHUD.m in Sources */,
 				2779322927E30FC30010E277 /* sortButton.m in Sources */,
@@ -4620,6 +4763,7 @@
 				2779322027E30FC30010E277 /* GRScanManager.m in Sources */,
 				27F902F427E863B600C08A19 /* NetworkingCheckController.m in Sources */,
 				2779362327E334470010E277 /* KSUpdateAlert.m in Sources */,
+				BC5EB5C02804085500B4A3B0 /* MyStyleVideoCell.m in Sources */,
 				BCC9F44A27F69BD200647449 /* RTCService.m in Sources */,
 				BCC9F40E27F69BD200647449 /* TimeStampCell.m in Sources */,
 				277932BB27E30FFE0010E277 /* TAAnimatedDotView.m in Sources */,
@@ -4632,6 +4776,7 @@
 				BCC9F40F27F69BD200647449 /* TextMessageCell.m in Sources */,
 				2708564E27ED6B7800EC8E72 /* ApplyMemberModel.m in Sources */,
 				BCB6340227F6A27100ACFDCF /* OnlineClassManager.m in Sources */,
+				BCF61BEF28042F9B0000ACFE /* InstrumentChooseBottonView.m in Sources */,
 				2780C91927E4852500A95A4F /* UINavigationController+KSNavigationBar.m in Sources */,
 				277931E327E30FC20010E277 /* UITextView+ZWPlaceHolder.m in Sources */,
 				BCC9F40B27F69BD200647449 /* CREmojiCollectionCell.m in Sources */,
@@ -4642,6 +4787,7 @@
 				BCC9F43027F69BD200647449 /* HTTPResult.m in Sources */,
 				BCB635BE27F7256B00ACFDCF /* KSICloudManager.m in Sources */,
 				277931E527E30FC20010E277 /* NSMutableAttributedString+CZHExtention.m in Sources */,
+				BCF61BE42804248F0000ACFE /* InstrumentChooseViewController.m in Sources */,
 				27A54CFC27E9BDB3007309A3 /* AboutUsBodyView.m in Sources */,
 				277931CF27E30FC20010E277 /* UIView+XIBView.m in Sources */,
 				27F9CB0427EC5446003E0FE4 /* GroupSettingViewController.m in Sources */,

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>KulexiuForTeacher.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>6</integer>
+			<integer>26</integer>
 		</dict>
 	</dict>
 </dict>

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


+ 48 - 0
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -68,5 +68,53 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "EF97B2C4-B2A4-4B2A-AA57-4EAB20556FA4"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Mine/CreateStyle/Controller/InstrumentChooseViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "243"
+            endingLineNumber = "243"
+            landmarkName = "-chooseInstrumentAction"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "503586AF-08CB-4771-BD50-9F7FA7E200FE"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Mine/CreateStyle/Controller/MyStyleViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "151"
+            endingLineNumber = "151"
+            landmarkName = "-chooseInstrumentWithArray:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "38791F65-5E40-494F-A5B4-597E6F9463A6"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Mine/CreateStyle/Controller/MyStyleViewController.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "109"
+            endingLineNumber = "109"
+            landmarkName = "-submitMyStyle"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 6 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/Contents.json

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

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/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
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/choose_instrument.imageset/choose_instrument@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/choose_instrument.imageset/choose_instrument@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/image_upload.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/image_upload.imageset/image_upload@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/image_upload.imageset/image_upload@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_instrument.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_instrument.imageset/myStyle_instrument@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_instrument.imageset/myStyle_instrument@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_introduce.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_introduce.imageset/myStyle_introduce@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_introduce.imageset/myStyle_introduce@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_video.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_video.imageset/myStyle_video@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/myStyle_video.imageset/myStyle_video@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/playVideo_image.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/playVideo_image.imageset/playVideo_image@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/playVideo_image.imageset/playVideo_image@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/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
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/unChoose_instrument.imageset/unChoose_instrument@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/unChoose_instrument.imageset/unChoose_instrument@3x.png


+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/video_delete.imageset/Contents.json

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

BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/video_delete.imageset/video_delete@2x.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Assets.xcassets/Mine/Style/video_delete.imageset/video_delete@3x.png


+ 27 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h

@@ -231,6 +231,8 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)queryTeacherInfoRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
+// /teacher-server/teacher/querySubject
+
 /// 修改用户信息
 /// @param post post
 /// @param avatal 头像
@@ -240,6 +242,31 @@ NS_ASSUME_NONNULL_BEGIN
 /// @param faliure 失败
 + (void)modifyTeacherMessage:(NSString *)post avatal:(NSString *)avatal gender:(NSString *)gender username:(NSString *)username success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
+// /api-teacher/teacher/queryTeacherStyle
+/// 个人风采查询
+/// @param get get
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryTeacherStyleRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
+// /api-teacher/teacher/saveTeacherStyle
+/// 个人风采设置
+/// @param post post
+/// @param styleVideo 视频
+/// @param subjectId 声部id
+/// @param subjectName 声部名
+/// @param introduction 介绍
+/// @param success 成功
+/// @param faliure 失败
++ (void)saveTeacherStyleRequest:(NSString *)post styleVideo:(NSMutableArray *)styleVideo subjectId:(NSString *)subjectId subjectName:(NSString *)subjectName introduction:(NSString *)introduction success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
+
+// /api-teacher/subject/subjectSelect
+
+/// 获取老师可授课声部列表
+/// @param get get
+/// @param success 成功
+/// @param faliure 失败
++ (void)querySubjectAllRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure;
 
 #pragma mark -------- 群组服务
 // /api-teacher/imUserFriend/queryAll

+ 42 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.m

@@ -628,6 +628,48 @@
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 
+// /api-teacher/teacher/queryTeacherStyle
+/// 个人风采查询
+/// @param get get
+/// @param success 成功
+/// @param faliure 失败
++ (void)queryTeacherStyleRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    NSString *url = [NSString stringWithFormat:@"%@%@",hostURL, @"/api-teacher/teacher/queryTeacherStyle"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [self request:get andWithUrl:url and:parm success:success faliure:faliure];
+}
+
+// /api-teacher/teacher/saveTeacherStyle
+/// 个人风采设置
+/// @param post post
+/// @param styleVideo 视频
+/// @param subjectId 声部id
+/// @param subjectName 声部名
+/// @param introduction 介绍
+/// @param success 成功
+/// @param faliure 失败
++ (void)saveTeacherStyleRequest:(NSString *)post styleVideo:(NSMutableArray *)styleVideo subjectId:(NSString *)subjectId subjectName:(NSString *)subjectName introduction:(NSString *)introduction success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    [self configRequestMethodJSON];
+    NSString *url = [NSString stringWithFormat:@"%@%@",hostURL, @"/api-teacher/teacher/saveTeacherStyle"];
+    NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+    [parm setValue:styleVideo forKey:@"styleVideo"];
+    [parm setValue:subjectId forKey:@"subjectId"];
+    [parm setValue:subjectName forKey:@"subjectName"];
+    [parm setValue:introduction forKey:@"introduction"];
+    [self request:post andWithUrl:url and:parm success:success faliure:faliure];
+}
+
+// /api-teacher/subject/subjectSelect
+
+/// 获取老师可授课声部列表
+/// @param get get
+/// @param success 成功
+/// @param faliure 失败
++ (void)querySubjectAllRequest:(NSString *)get success:(void(^)(NSDictionary *dic))success faliure:(void(^)(NSError *error))faliure {
+    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"/api-teacher/subject/subjectSelect"];
+    [self request:get andWithUrl:url and:nil success:success faliure:faliure];
+}
+
 #pragma mark -------- 群组服务
 // /api-teacher/imUserFriend/queryAll
 

+ 25 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Category/UIView+ExtensionForDotLine.h

@@ -0,0 +1,25 @@
+//
+//  UIView+ExtensionForDotLine.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface UIView (ExtensionForDotLine)
+
+/// 画外框虚线
+/// @param width 虚线宽带
+/// @param length 一条虚线的长度
+/// @param space 虚线艰巨
+/// @param cornerRadius 边框圆角
+/// @param lineColor 线条颜色
+- (void)drawBoardDottedLine:(double)width length:(double)length space:(double)space cornerRadius:(double)cornerRadius lineColor:(UIColor*)lineColor;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 35 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Tools/Category/UIView+ExtensionForDotLine.m

@@ -0,0 +1,35 @@
+//
+//  UIView+ExtensionForDotLine.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "UIView+ExtensionForDotLine.h"
+
+@implementation UIView (ExtensionForDotLine)
+
+/// 画外框虚线
+/// @param width 虚线宽带
+/// @param length 一条虚线的长度
+/// @param space 虚线艰巨
+/// @param cornerRadius 边框圆角
+/// @param lineColor 线条颜色
+- (void)drawBoardDottedLine:(double)width length:(double)length space:(double)space cornerRadius:(double)cornerRadius lineColor:(UIColor*)lineColor {
+    self.layer.cornerRadius = cornerRadius;
+    CAShapeLayer *borderLayer = [CAShapeLayer layer];
+    borderLayer.bounds = self.bounds;
+    borderLayer.position = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
+    borderLayer.path = [UIBezierPath bezierPathWithRoundedRect:borderLayer.bounds cornerRadius:cornerRadius].CGPath;
+    borderLayer.lineWidth = width;
+    //虚线边框---小边框的长度
+    borderLayer.lineDashPattern = @[@(length),@(space)];
+    borderLayer.lineDashPhase = 0.1;
+    //实线边框
+    borderLayer.fillColor = [UIColor clearColor].CGColor;
+    borderLayer.strokeColor = lineColor.CGColor;
+    [self.layer addSublayer :borderLayer];
+    
+}
+
+@end

+ 15 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/Controller/AccompanyDetailViewController.m

@@ -7,6 +7,7 @@
 
 #import "AccompanyDetailViewController.h"
 #import "AccompanyNavView.h"
+#import "AccompanyAlertView.h"
 
 @interface AccompanyDetailViewController ()<UITableViewDelegate,UITableViewDataSource>
 
@@ -33,10 +34,23 @@
         make.left.right.top.mas_equalTo(self);
         make.height.mas_equalTo(height);
     }];
-    
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.mas_equalTo(self.view);
+        make.top.mas_equalTo(self.view.mas_top).offset(kNaviBarHeight);
+        make.bottom.mas_equalTo(self.view.mas_bottom).offset(-iPhoneXSafeBottomMargin);
+    }];
 }
 
 
+#pragma mark --- table data source
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return 6;
+}
+
+//- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+//    
+//}
 
 #pragma mark --- lazying
 

+ 30 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/View/AccompanyAlertView.h

@@ -0,0 +1,30 @@
+//
+//  AccompanyAlertView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef void(^AccompanyAlertCallback)(NSString * _Nonnull content, NSInteger starNum);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface AccompanyAlertView : UIView
+
+@property (weak, nonatomic) IBOutlet UILabel *alertTitle;
+
+@property (weak, nonatomic) IBOutlet UITextView *inputView;
+
+@property (weak, nonatomic) IBOutlet UILabel *tipsLabel;
+
++ (instancetype)shareInstance;
+
+- (void)showInView:(UIView *)displayView showStarView:(BOOL)showStarView;
+
+- (void)sureCallback:(AccompanyAlertCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 101 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/View/AccompanyAlertView.m

@@ -0,0 +1,101 @@
+//
+//  AccompanyAlertView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "AccompanyAlertView.h"
+#import "KSStarView.h"
+
+@interface AccompanyAlertView ()<UITextViewDelegate>
+
+@property (weak, nonatomic) IBOutlet KSStarView *starView;
+
+@property (nonatomic, copy) AccompanyAlertCallback callback;
+
+@end
+
+@implementation AccompanyAlertView
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    self.inputView.delegate = self;
+    self.starView.hidden = YES;
+    self.starView.allowMark = YES;
+}
+
++ (instancetype)shareInstance {
+    AccompanyAlertView *view = [[[NSBundle mainBundle] loadNibNamed:@"AccompanyAlertView" owner:nil options:nil] firstObject];
+    view.frame = CGRectMake(0, 0, kScreen_Width, kScreen_Height);
+    return view;
+}
+- (void)showInView:(UIView *)displayView showStarView:(BOOL)showStarView {
+    if (showStarView) {
+        self.starView.hidden = NO;
+    }
+    [displayView addSubview:self];
+}
+
+- (void)sureCallback:(AccompanyAlertCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (IBAction)cancelAction:(id)sender {
+    [self removeFromSuperview];
+}
+
+- (IBAction)sureAction:(id)sender {
+    NSInteger starNum = self.starView.rate * 5;
+    if (self.callback) {
+        self.callback(self.inputView.text, starNum);
+    }
+    [self removeFromSuperview];
+}
+
+
+#pragma mark ---- text view delegate
+
+- (void)textViewDidBeginEditing:(UITextView *)textView {
+    self.tipsLabel.hidden = YES;
+}
+- (void)textViewDidEndEditing:(UITextView *)textView {
+    if ([NSString isEmptyString:textView.text]) {
+        self.tipsLabel.hidden = NO;
+    }
+}
+
+- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
+    [self endEditing:YES];
+    return YES;
+}
+
+- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
+    [self endEditing:YES];
+}
+
+- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
+    if ([text isEqualToString:@""]) {
+        return YES;
+    }
+    
+    // 输入控制
+    NSString *newString = [textView.text stringByReplacingCharactersInRange:range withString:text];
+    if (newString.length > 200) {
+        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

+ 151 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Course/AccompanyCourse/View/AccompanyAlertView.xib

@@ -0,0 +1,151 @@
+<?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="AccompanyAlertView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kJz-jy-Enw">
+                    <rect key="frame" x="32" y="322" width="350" height="252"/>
+                    <subviews>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="accell_left" translatesAutoresizingMaskIntoConstraints="NO" id="g5U-zt-jhG">
+                            <rect key="frame" x="19" y="27" width="4" height="14"/>
+                        </imageView>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="评价学员" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Biv-dK-fGb">
+                            <rect key="frame" x="29" y="23" width="74" height="22"/>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
+                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sjo-db-uX7">
+                            <rect key="frame" x="310" y="0.0" width="40" height="40"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="40" id="TQQ-uo-INP"/>
+                                <constraint firstAttribute="width" constant="40" id="mp9-0N-gC4"/>
+                            </constraints>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" image="check_cancle"/>
+                            <connections>
+                                <action selector="cancelAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="PIg-Q4-17H"/>
+                            </connections>
+                        </button>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pIM-1F-iXG" customClass="KSStarView">
+                            <rect key="frame" x="111" y="24.5" width="90" height="19"/>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="90" id="VfG-pE-0iO"/>
+                                <constraint firstAttribute="height" constant="19" id="zCf-FD-G74"/>
+                            </constraints>
+                        </view>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="G0I-PQ-FQA">
+                            <rect key="frame" x="26" y="193" width="298" height="44"/>
+                            <color key="backgroundColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="44" id="E0O-u9-1AP"/>
+                            </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="22"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="Dyw-XX-Ggo"/>
+                            </connections>
+                        </button>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MLc-UI-hJt">
+                            <rect key="frame" x="18" y="63" width="314" height="115"/>
+                            <subviews>
+                                <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="7gT-5S-Mnm">
+                                    <rect key="frame" x="0.0" y="0.0" width="314" height="115"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                                </textView>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请输入您对本次课程学员表现的评价" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Yk-u1-WFH">
+                                    <rect key="frame" x="11" y="11" width="229" height="17"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" red="0.96862745098039216" green="0.97254901960784312" blue="0.97647058823529409" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="bottom" secondItem="7gT-5S-Mnm" secondAttribute="bottom" id="43J-6J-HH9"/>
+                                <constraint firstItem="4Yk-u1-WFH" firstAttribute="leading" secondItem="MLc-UI-hJt" secondAttribute="leading" constant="11" id="Coy-Mj-2Xf"/>
+                                <constraint firstItem="4Yk-u1-WFH" firstAttribute="top" secondItem="MLc-UI-hJt" secondAttribute="top" constant="11" id="d9n-1a-LAI"/>
+                                <constraint firstItem="7gT-5S-Mnm" firstAttribute="leading" secondItem="MLc-UI-hJt" secondAttribute="leading" id="e5S-8l-apw"/>
+                                <constraint firstAttribute="trailing" secondItem="7gT-5S-Mnm" secondAttribute="trailing" id="fZD-0W-Y2B"/>
+                                <constraint firstItem="7gT-5S-Mnm" firstAttribute="top" secondItem="MLc-UI-hJt" secondAttribute="top" id="nJo-xj-WnT"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="4"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="sjo-db-uX7" secondAttribute="trailing" id="A3M-Sl-J6R"/>
+                        <constraint firstAttribute="trailing" secondItem="MLc-UI-hJt" secondAttribute="trailing" constant="18" id="CtM-Jg-oJD"/>
+                        <constraint firstItem="G0I-PQ-FQA" firstAttribute="leading" secondItem="kJz-jy-Enw" secondAttribute="leading" constant="26" id="GHy-tP-tdG"/>
+                        <constraint firstItem="Biv-dK-fGb" firstAttribute="centerY" secondItem="g5U-zt-jhG" secondAttribute="centerY" id="Ki2-YG-6lh"/>
+                        <constraint firstAttribute="height" constant="252" id="M9C-HQ-gB4"/>
+                        <constraint firstItem="g5U-zt-jhG" firstAttribute="top" secondItem="kJz-jy-Enw" secondAttribute="top" constant="27" id="OKg-sG-RdM"/>
+                        <constraint firstItem="g5U-zt-jhG" firstAttribute="leading" secondItem="kJz-jy-Enw" secondAttribute="leading" constant="19" id="Pa0-MX-aqP"/>
+                        <constraint firstItem="pIM-1F-iXG" firstAttribute="centerY" secondItem="Biv-dK-fGb" secondAttribute="centerY" id="Syz-BX-BWg"/>
+                        <constraint firstItem="MLc-UI-hJt" firstAttribute="leading" secondItem="kJz-jy-Enw" secondAttribute="leading" constant="18" id="ZBZ-un-Lnm"/>
+                        <constraint firstItem="pIM-1F-iXG" firstAttribute="leading" secondItem="Biv-dK-fGb" secondAttribute="trailing" constant="8" id="ZHm-tN-Tgv"/>
+                        <constraint firstItem="sjo-db-uX7" firstAttribute="top" secondItem="kJz-jy-Enw" secondAttribute="top" id="gHV-ix-oRX"/>
+                        <constraint firstItem="MLc-UI-hJt" firstAttribute="top" secondItem="Biv-dK-fGb" secondAttribute="bottom" constant="18" id="kn9-CM-VIU"/>
+                        <constraint firstAttribute="trailing" secondItem="G0I-PQ-FQA" secondAttribute="trailing" constant="26" id="lga-IR-Xi5"/>
+                        <constraint firstItem="G0I-PQ-FQA" firstAttribute="top" secondItem="MLc-UI-hJt" secondAttribute="bottom" constant="15" id="qfK-wZ-o3X"/>
+                        <constraint firstAttribute="bottom" secondItem="G0I-PQ-FQA" secondAttribute="bottom" constant="15" id="wvD-8g-GL1"/>
+                        <constraint firstItem="Biv-dK-fGb" firstAttribute="leading" secondItem="g5U-zt-jhG" secondAttribute="trailing" constant="6" id="yLW-be-98P"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="8"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="kJz-jy-Enw" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="Yh6-BB-9g3"/>
+                <constraint firstAttribute="trailing" secondItem="kJz-jy-Enw" secondAttribute="trailing" constant="32" id="nGG-8u-ImK"/>
+                <constraint firstItem="kJz-jy-Enw" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="32" id="wiJ-hM-0Kt"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="alertTitle" destination="Biv-dK-fGb" id="JYe-yN-jwF"/>
+                <outlet property="inputView" destination="7gT-5S-Mnm" id="cmg-Lm-Mx1"/>
+                <outlet property="starView" destination="pIM-1F-iXG" id="Ezw-4e-Vew"/>
+                <outlet property="tipsLabel" destination="4Yk-u1-WFH" id="Tbg-vh-eGE"/>
+            </connections>
+            <point key="canvasLocation" x="131.8840579710145" y="75.669642857142847"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="accell_left" width="4" height="14"/>
+        <image name="check_cancle" width="14" height="14"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 3 - 1
KulexiuForTeacher/KulexiuForTeacher/Module/Home/View/HomeHeadView.m

@@ -36,7 +36,7 @@
 }
 
 - (void)configMessage:(TeacherInfo *)infoMessage {
-    if (infoMessage.entryStatus == 2) {
+    if ([infoMessage.entryStatus isEqualToString:@"PASS"]) { // 审核通过
         self.authView.hidden = YES;
         self.descView.hidden = NO;
         [self displayCount:infoMessage.fansNum inView:self.fansCount];
@@ -44,10 +44,12 @@
         [self displayCount:infoMessage.unExpTime inView:self.unfinishCourse];
         self.starView.allowMark = NO;
         self.starView.rate = infoMessage.starGrade / 5.0f;
+        self.tipsButton.hidden = YES;
     }
     else {
         self.authView.hidden = NO;
         self.descView.hidden = YES;
+        self.tipsButton.hidden = NO;
     }
     self.starView.rate = infoMessage.starGrade / 5.0f;
     

+ 11 - 9
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Controller/MineViewController.m

@@ -18,6 +18,7 @@
 #import "CreateLiveViewController.h"
 #import "MinePageViewController.h"
 #import "MyLiveCourseViewController.h"
+#import "MyStyleViewController.h"
 
 @interface MineViewController ()
 
@@ -124,20 +125,21 @@
             break;
         case MINEVIEWTYPE_MIEN: // 个人风采
         {
-            
+            MyStyleViewController *styleCtrl = [[MyStyleViewController alloc] init];
+            [self.navigationController pushViewController:styleCtrl animated:YES];
         }
             break;
         case MINEVIEWTYPE_STARTBOARDCAST: // 开启直播
         {
-//            if (self.mineInfo.liveFlag == 1) {
+            if ([self.mineInfo.liveFlag isEqualToString:@"1"]) {
                 CreateLiveViewController *ctrl = [[CreateLiveViewController alloc] init];
                 [self.navigationController pushViewController:ctrl animated:YES];
-//            }
-//            else { // 开通直播审核
-//                KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
-//                webCtrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/openLive"];
-//                [self.navigationController pushViewController:webCtrl animated:YES];
-//            }
+            }
+            else { // 开通直播审核
+                KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
+                webCtrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/openLive"];
+                [self.navigationController pushViewController:webCtrl animated:YES];
+            }
         }
             break;
         case MINEVIEWTYPE_ORDER: // 商品订单
@@ -147,7 +149,7 @@
             break;
         case MINEVIEWTYPE_ACCOMPANY: // 陪练课设置
         {
-            if (self.mineInfo.entryStatus != 2) { // 跳转老师认证
+            if (![self.mineInfo.entryStatus isEqualToString:@"PASS"]) { // 跳转老师认证
                 KSBaseWKWebViewController *webCtrl = [[KSBaseWKWebViewController alloc] init];
                 webCtrl.url = [NSString stringWithFormat:@"%@%@", WEBHOST, @"/#/teacherCert"];
                 [self.navigationController pushViewController:webCtrl animated:YES];

+ 23 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/InstrumentChooseViewController.h

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

+ 270 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/InstrumentChooseViewController.m

@@ -0,0 +1,270 @@
+//
+//  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);
+    }];
+    [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(self.view.mas_top);
+        make.bottom.mas_equalTo(self.bottomView.mas_top);
+    }];
+}
+
+- (void)requestInstrumentMessage {
+    [self showhud];
+    [KSNetworkingManager querySubjectAllRequest: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];
+                        if (self.preChooseArray.count && [self judgePreChooseInstrument:model.internalBaseClassIdentifier]) {
+                            model.isChoose = YES;
+                            [self.chooseArray addObject:model];
+                        }
+                        [subjectModelArray addObject:model];
+                    }
+                    [instrumentArray addObject:subjectModelArray];
+                }
+            }
+            self.parentArray = [NSMutableArray arrayWithArray:parentNodeArray];
+            self.instrumentArray = [NSMutableArray arrayWithArray:instrumentArray];
+            dispatch_main_async_safe(^{
+                // 刷新
+                [self refreshView];
+            });
+        });
+    };
+}
+
+- (BOOL)judgePreChooseInstrument:(NSString *)instrumentId {
+    BOOL contain = NO;
+    for (NSDictionary *parm in self.preChooseArray) {
+        if ([[parm valueForKey:@"subjectId"] isEqualToString:instrumentId]) {
+            contain = YES;
+            break;
+        }
+    }
+    return contain;
+}
+
+- (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 == 5) {
+                [self MBPShow:@"最多只能选择5个乐器"];
+                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];
+    }
+    if (self.callback) {
+        self.callback(instrumentArray);
+    }
+    [self backAction];
+}
+
+/*
+#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
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/MyStyleViewController.h

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

+ 203 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Controller/MyStyleViewController.m

@@ -0,0 +1,203 @@
+//
+//  MyStyleViewController.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "MyStyleViewController.h"
+#import "MyStyleInstrumentCell.h"
+#import "MyStyleIntroduceCell.h"
+#import "MyStyleVideoCell.h"
+#import "MyStyleBottomView.h"
+#import "InstrumentChooseViewController.h"
+
+@interface MyStyleViewController ()<UITableViewDelegate,UITableViewDataSource>
+
+@property (nonatomic, strong) NSMutableArray *instrumentArray;
+
+@property (nonatomic, strong) NSMutableArray *videoArray;
+
+@property (nonatomic, strong) NSString *content;
+
+@property (nonatomic, strong) UITableView *tableView;
+
+@property (nonatomic, strong) MyStyleBottomView *bottomView;
+
+@end
+
+@implementation MyStyleViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self allocTitle:@"个人风采"];
+    [self configUI];
+    [self requestMyStyle];
+}
+
+- (void)configUI {
+    [self.scrollView removeFromSuperview];
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.top.right.mas_equalTo(self.view);
+        make.bottom.mas_equalTo(self.view.mas_bottom).offset(-iPhoneXSafeBottomMargin);
+    }];
+    MJWeakSelf;
+    _bottomView = [MyStyleBottomView shareInstance];
+    _bottomView.frame = CGRectMake(0, 0, kScreen_Width, 60);
+    self.tableView.tableFooterView = self.bottomView;
+    [_bottomView saveStyleCallback:^{
+        [weakSelf submitMyStyle];
+    }];
+}
+
+
+- (void)requestMyStyle {
+    [self showhud];
+    [KSNetworkingManager queryTeacherStyleRequest:KS_GET success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+        if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
+            NSDictionary *result = [dic dictionaryValueForKey:@"data"];
+            NSString *subjectIds = [result stringValueForKey:@"subjectId"];
+            NSString *subjectNames = [result stringValueForKey:@"subjectName"];
+            [self configWithSubjectMessage:subjectIds subjectName:subjectNames];
+            
+        }
+        else {
+            [self MBPShow:MESSAGEKEY];
+        }
+        [self.tableView reloadData];
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+- (void)configWithSubjectMessage:(NSString *)subjectId subjectName:(NSString *)subjectName {
+    if (![NSString isEmptyString:subjectId] && ![NSString isEmptyString:subjectName]) {
+        NSArray *subjectIdArray = [subjectId componentsSeparatedByString:@","];
+        NSArray *subjectNameArray = [subjectName componentsSeparatedByString:@","];
+        NSInteger count = subjectNameArray.count > subjectIdArray.count ? subjectIdArray.count : subjectNameArray.count;
+        NSMutableArray *subjectArray = [NSMutableArray array];
+        for (NSInteger i = 0; i < count; i++) {
+            NSMutableDictionary *parm = [NSMutableDictionary dictionary];
+            [parm setValue:subjectIdArray[i] forKey:@"subjectId"];
+            [parm setValue:subjectNameArray[i] forKey:@"subjectName"];
+            [subjectArray addObject:parm];
+        }
+        self.instrumentArray = [NSMutableArray arrayWithArray:subjectArray];
+    }
+}
+
+- (void)submitMyStyle {
+    if (self.instrumentArray.count <= 0) {
+        [self MBPShow:@"至少选择一个可教授乐器"];
+        return;
+    }
+    NSMutableArray *subjectIdArray = [NSMutableArray array];
+    NSMutableArray *subjectNameArray = [NSMutableArray array];
+    
+    for (NSDictionary *parm in self.instrumentArray) {
+        [subjectIdArray addObject:[parm stringValueForKey:@"subjectId"]];
+        [subjectNameArray addObject:[parm stringValueForKey:@"subjectName"]];
+    }
+    NSString *subjectIds = [subjectIdArray componentsJoinedByString:@","];
+    NSString *subjectNames = [subjectNameArray componentsJoinedByString:@","];
+    
+    [self showhud];
+    [KSNetworkingManager saveTeacherStyleRequest:KS_POST styleVideo:self.videoArray subjectId:subjectIds subjectName:subjectNames introduction:self.content success:^(NSDictionary * _Nonnull dic) {
+        [self removehub];
+    } faliure:^(NSError * _Nonnull error) {
+        [self removehub];
+    }];
+}
+
+
+#pragma mark ---- table data source
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    return 3;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    if (indexPath.row == 0) {
+        MyStyleInstrumentCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyStyleInstrumentCell"];
+        MJWeakSelf;
+        [cell configWithSource:self.instrumentArray callback:^(STYLE_INSTRUMENT type, NSMutableArray * _Nullable sourceArray) {
+            if (type == STYLE_INSTRUMENT_CHOOSE) {
+                [weakSelf chooseInstrumentWithArray:sourceArray];
+            }
+            else { // 刷新
+                [weakSelf refreshInstrumentPart:sourceArray];
+            }
+        }];
+        return cell;
+    }
+    else if (indexPath.row == 1) {
+        MyStyleIntroduceCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyStyleIntroduceCell"];
+        return cell;
+    }
+    else {
+        MyStyleVideoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyStyleVideoCell"];
+        [cell configWithSource:self.videoArray];
+        return cell;
+    }
+}
+
+
+- (void)chooseInstrumentWithArray:(NSMutableArray *)instrumentArray {
+    InstrumentChooseViewController *ctrl = [[InstrumentChooseViewController alloc] init];
+    ctrl.preChooseArray = instrumentArray;
+    MJWeakSelf;
+    [ctrl chooseCallback:^(NSMutableArray *chooseArray) {
+        [weakSelf refreshInstrumentPart:chooseArray];
+    }];
+    [self.navigationController pushViewController:ctrl animated:YES];
+}
+
+- (void)refreshInstrumentPart:(NSMutableArray *)chooseArray {
+    self.instrumentArray = [NSMutableArray arrayWithArray:chooseArray];
+    [self.tableView reloadData];
+}
+
+#pragma mark ---- lazying
+- (UITableView *)tableView {
+    if (!_tableView) {
+        _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.backgroundColor = [UIColor clearColor];
+        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.rowHeight = UITableViewAutomaticDimension;
+        _tableView.estimatedRowHeight = 200.0f;
+        [_tableView registerNib:[UINib nibWithNibName:@"MyStyleInstrumentCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"MyStyleInstrumentCell"];
+        [_tableView registerNib:[UINib nibWithNibName:@"MyStyleIntroduceCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"MyStyleIntroduceCell"];
+        [_tableView registerNib:[UINib nibWithNibName:@"MyStyleVideoCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"MyStyleVideoCell"];
+    }
+    return _tableView;
+}
+
+- (NSMutableArray *)instrumentArray {
+    if (!_instrumentArray) {
+        _instrumentArray = [NSMutableArray array];
+    }
+    return _instrumentArray;
+}
+
+- (NSMutableArray *)videoArray {
+    if (!_videoArray) {
+        _videoArray = [NSMutableArray array];
+    }
+    return _videoArray;
+}
+/*
+#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

+ 31 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Model/InstrumentMessageModel.h

@@ -0,0 +1,31 @@
+//
+//  InstrumentMessageModel.h
+//
+//  Created by Steven  on 2022/4/5
+//  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+
+@interface InstrumentMessageModel : NSObject <NSCoding, NSCopying>
+
+@property (nonatomic, assign) id subjects;
+@property (nonatomic, strong) NSString *img;
+@property (nonatomic, assign) BOOL delFlag;
+@property (nonatomic, strong) NSString *internalBaseClassIdentifier;
+@property (nonatomic, strong) NSString *code;
+@property (nonatomic, strong) NSString *updateTime;
+@property (nonatomic, strong) NSString *createTime;
+@property (nonatomic, strong) NSString *name;
+@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;
+- (NSDictionary *)dictionaryRepresentation;
+
+@end

+ 169 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/Model/InstrumentMessageModel.m

@@ -0,0 +1,169 @@
+//
+//  InstrumentMessageModel.m
+//
+//  Created by Steven  on 2022/4/5
+//  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
+//
+
+#import "InstrumentMessageModel.h"
+
+
+NSString *const kInstrumentMessageModelSubjects = @"subjects";
+NSString *const kInstrumentMessageModelImg = @"img";
+NSString *const kInstrumentMessageModelDelFlag = @"delFlag";
+NSString *const kInstrumentMessageModelId = @"id";
+NSString *const kInstrumentMessageModelCode = @"code";
+NSString *const kInstrumentMessageModelUpdateTime = @"updateTime";
+NSString *const kInstrumentMessageModelCreateTime = @"createTime";
+NSString *const kInstrumentMessageModelName = @"name";
+NSString *const kInstrumentMessageModelParentSubjectName = @"parentSubjectName";
+NSString *const kInstrumentMessageModelDesc = @"desc";
+NSString *const kInstrumentMessageModelParentSubjectId = @"parentSubjectId";
+
+
+@interface InstrumentMessageModel ()
+
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
+
+@end
+
+@implementation InstrumentMessageModel
+
+@synthesize subjects = _subjects;
+@synthesize img = _img;
+@synthesize delFlag = _delFlag;
+@synthesize internalBaseClassIdentifier = _internalBaseClassIdentifier;
+@synthesize code = _code;
+@synthesize updateTime = _updateTime;
+@synthesize createTime = _createTime;
+@synthesize name = _name;
+@synthesize parentSubjectName = _parentSubjectName;
+@synthesize desc = _desc;
+@synthesize parentSubjectId = _parentSubjectId;
+
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
+{
+    return [[self alloc] initWithDictionary:dict];
+}
+
+- (instancetype)initWithDictionary:(NSDictionary *)dict
+{
+    self = [super init];
+    
+    // This check serves to make sure that a non-NSDictionary object
+    // passed into the model class doesn't break the parsing.
+    if(self && [dict isKindOfClass:[NSDictionary class]]) {
+            self.subjects = [self objectOrNilForKey:kInstrumentMessageModelSubjects fromDictionary:dict];
+            self.img = [self objectOrNilForKey:kInstrumentMessageModelImg fromDictionary:dict];
+            self.delFlag = [[self objectOrNilForKey:kInstrumentMessageModelDelFlag fromDictionary:dict] boolValue];
+            self.internalBaseClassIdentifier = [self objectOrNilForKey:kInstrumentMessageModelId fromDictionary:dict];
+            self.code = [self objectOrNilForKey:kInstrumentMessageModelCode fromDictionary:dict];
+            self.updateTime = [self objectOrNilForKey:kInstrumentMessageModelUpdateTime fromDictionary:dict];
+            self.createTime = [self objectOrNilForKey:kInstrumentMessageModelCreateTime fromDictionary:dict];
+            self.name = [self objectOrNilForKey:kInstrumentMessageModelName fromDictionary:dict];
+            self.parentSubjectName = [self objectOrNilForKey:kInstrumentMessageModelParentSubjectName fromDictionary:dict];
+            self.desc = [self objectOrNilForKey:kInstrumentMessageModelDesc fromDictionary:dict];
+            self.parentSubjectId = [self objectOrNilForKey:kInstrumentMessageModelParentSubjectId fromDictionary:dict];
+
+    }
+    
+    return self;
+    
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+    [mutableDict setValue:self.subjects forKey:kInstrumentMessageModelSubjects];
+    [mutableDict setValue:self.img forKey:kInstrumentMessageModelImg];
+    [mutableDict setValue:[NSNumber numberWithBool:self.delFlag] forKey:kInstrumentMessageModelDelFlag];
+    [mutableDict setValue:self.internalBaseClassIdentifier forKey:kInstrumentMessageModelId];
+    [mutableDict setValue:self.code forKey:kInstrumentMessageModelCode];
+    [mutableDict setValue:self.updateTime forKey:kInstrumentMessageModelUpdateTime];
+    [mutableDict setValue:self.createTime forKey:kInstrumentMessageModelCreateTime];
+    [mutableDict setValue:self.name forKey:kInstrumentMessageModelName];
+    [mutableDict setValue:self.parentSubjectName forKey:kInstrumentMessageModelParentSubjectName];
+    [mutableDict setValue:self.desc forKey:kInstrumentMessageModelDesc];
+    [mutableDict setValue:self.parentSubjectId forKey:kInstrumentMessageModelParentSubjectId];
+
+    return [NSDictionary dictionaryWithDictionary:mutableDict];
+}
+
+- (NSString *)description 
+{
+    return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
+}
+
+#pragma mark - Helper Method
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
+{
+    id object = [dict objectForKey:aKey];
+    if ([object isKindOfClass:[NSNumber class]]) {
+        NSNumber *number = object;
+        object = [number stringValue];
+    }
+    return [object isEqual:[NSNull null]] ? nil : object;
+}
+
+
+#pragma mark - NSCoding Methods
+
+- (id)initWithCoder:(NSCoder *)aDecoder
+{
+    self = [super init];
+
+    self.subjects = [aDecoder decodeObjectForKey:kInstrumentMessageModelSubjects];
+    self.img = [aDecoder decodeObjectForKey:kInstrumentMessageModelImg];
+    self.delFlag = [aDecoder decodeBoolForKey:kInstrumentMessageModelDelFlag];
+    self.internalBaseClassIdentifier = [aDecoder decodeObjectForKey:kInstrumentMessageModelId];
+    self.code = [aDecoder decodeObjectForKey:kInstrumentMessageModelCode];
+    self.updateTime = [aDecoder decodeObjectForKey:kInstrumentMessageModelUpdateTime];
+    self.createTime = [aDecoder decodeObjectForKey:kInstrumentMessageModelCreateTime];
+    self.name = [aDecoder decodeObjectForKey:kInstrumentMessageModelName];
+    self.parentSubjectName = [aDecoder decodeObjectForKey:kInstrumentMessageModelParentSubjectName];
+    self.desc = [aDecoder decodeObjectForKey:kInstrumentMessageModelDesc];
+    self.parentSubjectId = [aDecoder decodeObjectForKey:kInstrumentMessageModelParentSubjectId];
+    return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+
+    [aCoder encodeObject:_subjects forKey:kInstrumentMessageModelSubjects];
+    [aCoder encodeObject:_img forKey:kInstrumentMessageModelImg];
+    [aCoder encodeBool:_delFlag forKey:kInstrumentMessageModelDelFlag];
+    [aCoder encodeObject:_internalBaseClassIdentifier forKey:kInstrumentMessageModelId];
+    [aCoder encodeObject:_code forKey:kInstrumentMessageModelCode];
+    [aCoder encodeObject:_updateTime forKey:kInstrumentMessageModelUpdateTime];
+    [aCoder encodeObject:_createTime forKey:kInstrumentMessageModelCreateTime];
+    [aCoder encodeObject:_name forKey:kInstrumentMessageModelName];
+    [aCoder encodeObject:_parentSubjectName forKey:kInstrumentMessageModelParentSubjectName];
+    [aCoder encodeObject:_desc forKey:kInstrumentMessageModelDesc];
+    [aCoder encodeObject:_parentSubjectId forKey:kInstrumentMessageModelParentSubjectId];
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    InstrumentMessageModel *copy = [[InstrumentMessageModel alloc] init];
+    
+    if (copy) {
+
+        copy.subjects = [self.subjects copyWithZone:zone];
+        copy.img = [self.img copyWithZone:zone];
+        copy.delFlag = self.delFlag;
+        copy.internalBaseClassIdentifier = [self.internalBaseClassIdentifier copyWithZone:zone];
+        copy.code = [self.code copyWithZone:zone];
+        copy.updateTime = [self.updateTime copyWithZone:zone];
+        copy.createTime = [self.createTime copyWithZone:zone];
+        copy.name = [self.name copyWithZone:zone];
+        copy.parentSubjectName = [self.parentSubjectName copyWithZone:zone];
+        copy.desc = [self.desc copyWithZone:zone];
+        copy.parentSubjectId = [self.parentSubjectId copyWithZone:zone];
+    }
+    
+    return copy;
+}
+
+
+@end

+ 23 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/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
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/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
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/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
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/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
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/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]];
+    NSString *imageName = model.isChoose ? @"choose_instrument" : @"unChoose_instrument";
+    [self.statusImage setImage:[UIImage imageNamed:imageName]];
+}
+
+@end

+ 82 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/InstrumentChooseCell.xib

@@ -0,0 +1,82 @@
+<?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>
+                            <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" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                <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 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 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 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="unChoose_instrument" width="22" height="22"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 18 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/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
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/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
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/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>

+ 20 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleBottomView.h

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

+ 43 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleBottomView.m

@@ -0,0 +1,43 @@
+//
+//  MyStyleBottomView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "MyStyleBottomView.h"
+
+@interface MyStyleBottomView ()
+
+@property (nonatomic, copy) MyStyleSaveCallback callback;
+
+@end
+
+@implementation MyStyleBottomView
+
++ (instancetype)shareInstance {
+    MyStyleBottomView *view = [[[NSBundle mainBundle] loadNibNamed:@"MyStyleBottomView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+- (void)saveStyleCallback:(MyStyleSaveCallback)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

+ 47 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleBottomView.xib

@@ -0,0 +1,47 @@
+<?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="MyStyleBottomView">
+            <rect key="frame" x="0.0" y="0.0" width="414" height="78"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Onp-oJ-PHo">
+                    <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="IYz-ot-SP1"/>
+                    </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="22"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                    <connections>
+                        <action selector="sureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="WPc-xN-hgl"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="Onp-oJ-PHo" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="YId-WS-nBB"/>
+                <constraint firstItem="Onp-oJ-PHo" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="28" id="ccI-vC-H0n"/>
+                <constraint firstAttribute="trailing" secondItem="Onp-oJ-PHo" secondAttribute="trailing" constant="28" id="lfz-Yr-B3T"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="131.8840579710145" y="-39.508928571428569"/>
+        </view>
+    </objects>
+</document>

+ 25 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleInstrumentCell.h

@@ -0,0 +1,25 @@
+//
+//  MyStyleInstrumentCell.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, STYLE_INSTRUMENT) {
+    STYLE_INSTRUMENT_DELETE, // 删除
+    STYLE_INSTRUMENT_CHOOSE, // 选择
+};
+typedef void(^StyleInstrumentCallback)(STYLE_INSTRUMENT type, NSMutableArray * _Nullable sourceArray);
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// 可教授乐器列表
+@interface MyStyleInstrumentCell : UITableViewCell
+
+- (void)configWithSource:(NSMutableArray *)instrumentArray callback:(StyleInstrumentCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 118 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleInstrumentCell.m

@@ -0,0 +1,118 @@
+//
+//  MyStyleInstrumentCell.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "MyStyleInstrumentCell.h"
+
+@interface MyStyleInstrumentCell ()
+
+@property (nonatomic, strong) NSMutableArray *instrumentArray;
+
+@property (nonatomic, copy) StyleInstrumentCallback callback;
+
+@property (weak, nonatomic) IBOutlet UIView *instrumentView;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *instrumentHeight;
+
+@end
+
+@implementation MyStyleInstrumentCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+}
+
+- (void)configWithSource:(NSMutableArray *)instrumentArray callback:(StyleInstrumentCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+    self.instrumentArray = instrumentArray;
+    [self displaySubjectView];
+}
+
+- (void)displaySubjectView {
+    [self.instrumentView removeAllSubViews];
+    CGFloat width = kScreen_Width - 14 * 2 - 11 * 2;
+    CGFloat xSpace = 0.0f;
+    CGFloat yPosition = 0.0f;
+    for (NSInteger i = 0; i < self.instrumentArray.count; i++) {
+        NSDictionary *parm = self.instrumentArray[i];
+        NSString *name = [parm stringValueForKey:@"subjectName"];
+        NSString *tagString = [NSString stringWithFormat:@"%@ ╳",name];
+        CGFloat labelWidth = [self getStringWidthInLabel:tagString font:[UIFont systemFontOfSize:11.0f]];
+        CGFloat viewWidth = labelWidth + 16;
+        if (xSpace + viewWidth > width) {
+            if (xSpace != 0) {
+                xSpace = 0.0f;
+                yPosition += 32;
+            }
+        }
+        CGRect frame = CGRectMake(xSpace, yPosition, viewWidth, 26.0f);
+        [self createTagLabelViewWithName:tagString frame:frame tag:i+1000];
+        xSpace += (viewWidth + 6);
+    }
+    if (yPosition + 32 > self.instrumentHeight.constant) {
+        self.instrumentHeight.constant = yPosition + 32;
+    }
+}
+
+- (void)createTagLabelViewWithName:(NSString *)name frame:(CGRect)frame tag:(NSInteger)tag {
+    UIView *bgView = [[UIView alloc] initWithFrame:frame];
+    bgView.backgroundColor = HexRGB(0xe9fff8);
+    bgView.layer.cornerRadius = 13.0f;
+    bgView.layer.borderWidth = 1.0f;
+    bgView.layer.borderColor = THEMECOLOR.CGColor;
+    [self.instrumentView addSubview:bgView];
+    
+    UILabel *tagLabel = [[UILabel alloc] init];
+    tagLabel.text = name;
+    tagLabel.textColor = THEMECOLOR;
+    tagLabel.font = [UIFont systemFontOfSize:11.0f];
+    tagLabel.textAlignment = NSTextAlignmentCenter;
+    [bgView addSubview:tagLabel];
+    [tagLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(bgView.mas_left).offset(8);
+        make.right.mas_equalTo(bgView.mas_right).offset(-8);
+        make.top.bottom.mas_equalTo(bgView);
+    }];
+    
+    UIButton *actionButton = [UIButton buttonWithType:UIButtonTypeCustom];
+    actionButton.tag = tag;
+    [actionButton addTarget:self action:@selector(removeInstrumentAction:) forControlEvents:UIControlEventTouchUpInside];
+    [bgView addSubview:actionButton];
+    [actionButton mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.top.right.bottom.mas_equalTo(bgView);
+    }];
+}
+
+- (void)removeInstrumentAction:(UIButton *)sender {
+    NSInteger index = sender.tag - 1000;
+    if (self.callback) {
+        [self.instrumentArray removeObjectAtIndex:index];
+        self.callback(STYLE_INSTRUMENT_DELETE, self.instrumentArray);
+    }
+}
+- (CGFloat)getStringWidthInLabel:(NSString *)tagString font:(UIFont *)font {
+    CGFloat width = [tagString boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, 16.0f) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil].size.width+1;
+    return width;
+}
+
+- (IBAction)chooseInstrument:(id)sender {
+    if (self.callback) {
+        self.callback(STYLE_INSTRUMENT_CHOOSE, self.instrumentArray);
+    }
+}
+
+
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 109 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleInstrumentCell.xib

@@ -0,0 +1,109 @@
+<?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"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="130" id="KGk-i7-Jjw" customClass="MyStyleInstrumentCell">
+            <rect key="frame" x="0.0" y="0.0" width="356" height="129"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="356" height="129"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="b6p-PN-fEf">
+                        <rect key="frame" x="14" y="12" width="328" height="105"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="myStyle_instrument" translatesAutoresizingMaskIntoConstraints="NO" id="8oj-h6-MYY">
+                                <rect key="frame" x="11" y="16" width="24" height="24"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="24" id="ONh-3R-qI3"/>
+                                    <constraint firstAttribute="width" constant="24" id="df4-pu-tIl"/>
+                                </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="Mpr-dO-Fb2">
+                                <rect key="frame" x="39" y="13" width="171" height="30"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="HW2-Xa-etb"/>
+                                </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>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dmP-VX-w6i">
+                                <rect key="frame" x="263" y="16" width="54" height="24"/>
+                                <color key="backgroundColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="calibratedRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="24" id="ED6-ZB-iR9"/>
+                                    <constraint firstAttribute="width" constant="54" id="YHs-pv-kiZ"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <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="11"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                                <connections>
+                                    <action selector="chooseInstrument:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="NPr-VN-rdO"/>
+                                </connections>
+                            </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="D0w-Pq-dRu">
+                                <rect key="frame" x="11" y="55" width="306" height="38"/>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="38" id="EDv-EJ-2Bb"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="D0w-Pq-dRu" secondAttribute="trailing" constant="11" id="2sR-wW-e8j"/>
+                            <constraint firstAttribute="bottom" secondItem="D0w-Pq-dRu" secondAttribute="bottom" constant="12" id="3ZZ-BI-vIt"/>
+                            <constraint firstItem="D0w-Pq-dRu" firstAttribute="top" secondItem="8oj-h6-MYY" secondAttribute="bottom" constant="15" id="5pF-80-Ifh"/>
+                            <constraint firstItem="Mpr-dO-Fb2" firstAttribute="centerY" secondItem="8oj-h6-MYY" secondAttribute="centerY" id="6HO-bM-psV"/>
+                            <constraint firstItem="8oj-h6-MYY" firstAttribute="top" secondItem="b6p-PN-fEf" secondAttribute="top" constant="16" id="KUC-UO-lRc"/>
+                            <constraint firstItem="dmP-VX-w6i" firstAttribute="top" secondItem="b6p-PN-fEf" secondAttribute="top" constant="16" id="Pas-tc-Psg"/>
+                            <constraint firstAttribute="trailing" secondItem="dmP-VX-w6i" secondAttribute="trailing" constant="11" id="Tp0-4q-b8T"/>
+                            <constraint firstItem="D0w-Pq-dRu" firstAttribute="leading" secondItem="b6p-PN-fEf" secondAttribute="leading" constant="11" id="gmM-ZC-Bwq"/>
+                            <constraint firstItem="8oj-h6-MYY" firstAttribute="leading" secondItem="b6p-PN-fEf" secondAttribute="leading" constant="11" id="pPR-p8-TRf"/>
+                            <constraint firstItem="Mpr-dO-Fb2" firstAttribute="leading" secondItem="8oj-h6-MYY" secondAttribute="trailing" constant="4" id="qiT-CB-qDU"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                <real key="value" value="10"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                    </view>
+                </subviews>
+                <constraints>
+                    <constraint firstAttribute="trailing" secondItem="b6p-PN-fEf" secondAttribute="trailing" constant="14" id="AOp-uG-uph"/>
+                    <constraint firstItem="b6p-PN-fEf" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="12" id="Cqa-8e-Z10"/>
+                    <constraint firstAttribute="bottom" secondItem="b6p-PN-fEf" secondAttribute="bottom" constant="12" id="TXE-Gq-31c"/>
+                    <constraint firstItem="b6p-PN-fEf" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="Z4n-SF-CnM"/>
+                </constraints>
+            </tableViewCellContentView>
+            <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <connections>
+                <outlet property="instrumentHeight" destination="EDv-EJ-2Bb" id="Vnp-Dq-q4A"/>
+                <outlet property="instrumentView" destination="D0w-Pq-dRu" id="SnQ-uj-uHW"/>
+            </connections>
+            <point key="canvasLocation" x="155.07246376811597" y="96.09375"/>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <image name="myStyle_instrument" width="24" height="24"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 21 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleIntroduceCell.h

@@ -0,0 +1,21 @@
+//
+//  MyStyleIntroduceCell.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import <UIKit/UIKit.h>
+
+
+typedef void(^IntroduceModifyCallback)(NSString *content);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MyStyleIntroduceCell : UITableViewCell
+
+- (void)configWithIntroduceMessage:(NSString *)content modifyCallback:(IntroduceModifyCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 38 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleIntroduceCell.m

@@ -0,0 +1,38 @@
+//
+//  MyStyleIntroduceCell.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "MyStyleIntroduceCell.h"
+
+@interface MyStyleIntroduceCell ()<UITextViewDelegate>
+
+@property (weak, nonatomic) IBOutlet UILabel *countLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *tipsLabel;
+
+@property (weak, nonatomic) IBOutlet UITextView *inputView;
+
+@end
+
+@implementation MyStyleIntroduceCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+}
+
+- (void)configWithIntroduceMessage:(NSString *)content modifyCallback:(IntroduceModifyCallback)callback {
+    
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 123 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleIntroduceCell.xib

@@ -0,0 +1,123 @@
+<?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"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="135" id="KGk-i7-Jjw" customClass="MyStyleIntroduceCell">
+            <rect key="frame" x="0.0" y="0.0" width="370" height="130"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="370" height="130"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qS1-BZ-o8g">
+                        <rect key="frame" x="14" y="0.0" width="342" height="118"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="myStyle_introduce" translatesAutoresizingMaskIntoConstraints="NO" id="DZt-bj-xrs">
+                                <rect key="frame" x="11" y="16" width="24" height="24"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="24" id="24y-Cq-3jT"/>
+                                    <constraint firstAttribute="height" constant="24" id="P95-j1-GvM"/>
+                                </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="p2J-Pm-8GE">
+                                <rect key="frame" x="39" y="13" width="66" height="30"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="Jol-SP-RJE"/>
+                                </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>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0/200" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OFX-4u-Tl4">
+                                <rect key="frame" x="297" y="21" width="34" height="17"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="17" id="fbs-Gx-EXl"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nVp-UN-qho">
+                                <rect key="frame" x="15" y="56" width="312" height="37"/>
+                                <subviews>
+                                    <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="jYT-Z6-r6L">
+                                        <rect key="frame" x="0.0" y="0.0" width="312" height="37"/>
+                                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="37" id="eRZ-VV-6An"/>
+                                        </constraints>
+                                        <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <textInputTraits key="textInputTraits" autocapitalizationType="sentences" returnKeyType="done" enablesReturnKeyAutomatically="YES"/>
+                                    </textView>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请填写个人介绍" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kwG-fk-hq1">
+                                        <rect key="frame" x="8" y="2" width="93" height="16"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <constraints>
+                                    <constraint firstAttribute="trailing" secondItem="jYT-Z6-r6L" secondAttribute="trailing" id="Tn0-N6-Shb"/>
+                                    <constraint firstAttribute="bottom" secondItem="jYT-Z6-r6L" secondAttribute="bottom" id="Wu3-Tq-fUn"/>
+                                    <constraint firstItem="jYT-Z6-r6L" firstAttribute="top" secondItem="nVp-UN-qho" secondAttribute="top" id="X7Y-Yl-ilE"/>
+                                    <constraint firstItem="jYT-Z6-r6L" firstAttribute="leading" secondItem="nVp-UN-qho" secondAttribute="leading" id="gU3-Tt-PXu"/>
+                                    <constraint firstItem="kwG-fk-hq1" firstAttribute="leading" secondItem="nVp-UN-qho" secondAttribute="leading" constant="8" id="qeE-YS-IXh"/>
+                                    <constraint firstItem="kwG-fk-hq1" firstAttribute="top" secondItem="nVp-UN-qho" secondAttribute="top" constant="2" id="zeE-Pu-nWg"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="nVp-UN-qho" firstAttribute="leading" secondItem="qS1-BZ-o8g" secondAttribute="leading" constant="15" id="3mX-aH-Qnk"/>
+                            <constraint firstItem="nVp-UN-qho" firstAttribute="top" secondItem="p2J-Pm-8GE" secondAttribute="bottom" constant="13" id="5Sh-ub-LjC"/>
+                            <constraint firstItem="OFX-4u-Tl4" firstAttribute="top" secondItem="qS1-BZ-o8g" secondAttribute="top" constant="21" id="5mL-B9-ADl"/>
+                            <constraint firstAttribute="trailing" secondItem="OFX-4u-Tl4" secondAttribute="trailing" constant="11" id="Bbq-gc-Whn"/>
+                            <constraint firstItem="p2J-Pm-8GE" firstAttribute="leading" secondItem="DZt-bj-xrs" secondAttribute="trailing" constant="4" id="Ese-zf-KhB"/>
+                            <constraint firstAttribute="trailing" secondItem="nVp-UN-qho" secondAttribute="trailing" constant="15" id="OVH-Ap-N2b"/>
+                            <constraint firstItem="p2J-Pm-8GE" firstAttribute="centerY" secondItem="DZt-bj-xrs" secondAttribute="centerY" id="hVT-pp-bFr"/>
+                            <constraint firstAttribute="bottom" secondItem="nVp-UN-qho" secondAttribute="bottom" constant="25" id="ktN-zw-WRZ"/>
+                            <constraint firstItem="DZt-bj-xrs" firstAttribute="leading" secondItem="qS1-BZ-o8g" secondAttribute="leading" constant="11" id="miM-MG-mwz"/>
+                            <constraint firstItem="DZt-bj-xrs" firstAttribute="top" secondItem="qS1-BZ-o8g" secondAttribute="top" constant="16" id="vKC-tU-lVm"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                <real key="value" value="10"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                    </view>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="qS1-BZ-o8g" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="EHQ-uB-D0r"/>
+                    <constraint firstAttribute="trailing" secondItem="qS1-BZ-o8g" secondAttribute="trailing" constant="14" id="Ua7-KK-i1k"/>
+                    <constraint firstItem="qS1-BZ-o8g" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="aSK-cr-v5R"/>
+                    <constraint firstAttribute="bottom" secondItem="qS1-BZ-o8g" secondAttribute="bottom" constant="12" id="bCD-Au-tpK"/>
+                </constraints>
+            </tableViewCellContentView>
+            <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <connections>
+                <outlet property="countLabel" destination="OFX-4u-Tl4" id="BAv-gK-yuS"/>
+                <outlet property="inputView" destination="jYT-Z6-r6L" id="rgb-Tc-Aer"/>
+                <outlet property="tipsLabel" destination="kwG-fk-hq1" id="bId-HU-WW4"/>
+            </connections>
+            <point key="canvasLocation" x="166.66666666666669" y="110.49107142857143"/>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <image name="myStyle_introduce" width="24" height="24"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 18 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoCell.h

@@ -0,0 +1,18 @@
+//
+//  MyStyleVideoCell.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MyStyleVideoCell : UITableViewCell
+
+- (void)configWithSource:(NSMutableArray *)videoArray;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 40 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoCell.m

@@ -0,0 +1,40 @@
+//
+//  MyStyleVideoCell.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "MyStyleVideoCell.h"
+#import "MyStyleVideoView.h"
+
+@interface MyStyleVideoCell ()
+
+@property (weak, nonatomic) IBOutlet UIView *videoContainer;
+
+
+@end
+
+@implementation MyStyleVideoCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+    self.selectionStyle = UITableViewCellSelectionStyleNone;
+}
+
+- (void)configWithSource:(NSMutableArray *)videoArray {
+    MyStyleVideoView *view = [MyStyleVideoView shareInstance];
+    view.frame = CGRectMake(0, 0, (kScreen_Width - 28) / 2.0f, 128);
+    [self.videoContainer addSubview:view];
+    
+}
+
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 87 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoCell.xib

@@ -0,0 +1,87 @@
+<?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"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="264" id="KGk-i7-Jjw" customClass="MyStyleVideoCell">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="264"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="320" height="264"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Hma-vR-10P">
+                        <rect key="frame" x="14" y="0.0" width="292" height="252"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="myStyle_video" translatesAutoresizingMaskIntoConstraints="NO" id="h8L-9t-fxP">
+                                <rect key="frame" x="12" y="17" width="24" height="24"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="24" id="44c-uB-iFM"/>
+                                    <constraint firstAttribute="width" constant="24" id="pNy-7X-Hgz"/>
+                                </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="vsk-ct-XNk">
+                                <rect key="frame" x="40" y="14" width="66" height="30"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="ZtD-S1-QNK"/>
+                                </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>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uSh-fN-7mG">
+                                <rect key="frame" x="0.0" y="62" width="292" height="172"/>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="172" id="c88-mj-nEn"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="vsk-ct-XNk" firstAttribute="centerY" secondItem="h8L-9t-fxP" secondAttribute="centerY" id="02c-ZC-p3Q"/>
+                            <constraint firstItem="h8L-9t-fxP" firstAttribute="top" secondItem="Hma-vR-10P" secondAttribute="top" constant="17" id="2hA-HO-ltI"/>
+                            <constraint firstAttribute="trailing" secondItem="uSh-fN-7mG" secondAttribute="trailing" id="EJe-zh-u6C"/>
+                            <constraint firstItem="vsk-ct-XNk" firstAttribute="leading" secondItem="h8L-9t-fxP" secondAttribute="trailing" constant="4" id="NTy-4b-UdN"/>
+                            <constraint firstItem="uSh-fN-7mG" firstAttribute="top" secondItem="vsk-ct-XNk" secondAttribute="bottom" constant="18" id="QxL-bD-SSH"/>
+                            <constraint firstItem="h8L-9t-fxP" firstAttribute="leading" secondItem="Hma-vR-10P" secondAttribute="leading" constant="12" id="XSs-yL-FXo"/>
+                            <constraint firstItem="uSh-fN-7mG" firstAttribute="leading" secondItem="Hma-vR-10P" secondAttribute="leading" id="Zcd-xo-xUi"/>
+                            <constraint firstAttribute="bottom" secondItem="uSh-fN-7mG" secondAttribute="bottom" constant="18" id="nqW-i7-Buy"/>
+                        </constraints>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                <real key="value" value="10"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                    </view>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="Hma-vR-10P" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="Sa2-MJ-vFf"/>
+                    <constraint firstAttribute="bottom" secondItem="Hma-vR-10P" secondAttribute="bottom" constant="12" id="TKI-Ga-LoB"/>
+                    <constraint firstAttribute="trailing" secondItem="Hma-vR-10P" secondAttribute="trailing" constant="14" id="cY6-66-zSi"/>
+                    <constraint firstItem="Hma-vR-10P" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="mSA-0X-gFT"/>
+                </constraints>
+            </tableViewCellContentView>
+            <viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <connections>
+                <outlet property="videoContainer" destination="uSh-fN-7mG" id="l7N-7e-Gcj"/>
+            </connections>
+            <point key="canvasLocation" x="131.8840579710145" y="141.29464285714286"/>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <image name="myStyle_video" width="24" height="24"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 32 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoView.h

@@ -0,0 +1,32 @@
+//
+//  MyStyleVideoView.h
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, STYLEVIDEO) {
+    STYLEVIDEO_CHOOSEFILE,  // 选择文件
+    STYLEVIDEO_PLAY,        // 播放
+    STYLEVIDEO_DELETE,      // 删除
+};
+
+typedef void(^StyleVidelCallback)(STYLEVIDEO type);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MyStyleVideoView : UIView
+
+@property (nonatomic, assign) BOOL isPlay;
+
+@property (nonatomic, assign) BOOL hideDeleteButton;
+
++ (instancetype)shareInstance;
+
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 71 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoView.m

@@ -0,0 +1,71 @@
+//
+//  MyStyleVideoView.m
+//  KulexiuForTeacher
+//
+//  Created by 王智 on 2022/4/11.
+//
+
+#import "MyStyleVideoView.h"
+#import "UIView+ExtensionForDotLine.h"
+
+@interface MyStyleVideoView ()
+
+@property (weak, nonatomic) IBOutlet UIView *uploadView;
+
+@property (weak, nonatomic) IBOutlet UIButton *chooseButton;
+
+@property (weak, nonatomic) IBOutlet UIView *playView;
+@property (weak, nonatomic) IBOutlet UIButton *playButton;
+
+@property (weak, nonatomic) IBOutlet UIButton *deleteButton;
+
+@property (nonatomic, assign) BOOL isChoose;
+
+@end
+
+@implementation MyStyleVideoView
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    [self.uploadView drawBoardDottedLine:1.0f length:10 space:2 cornerRadius:8.0f lineColor:HexRGB(0xe3e3e3)];
+    self.isChoose = NO;
+}
+
+
+
++ (instancetype)shareInstance {
+    MyStyleVideoView *view = [[[NSBundle mainBundle] loadNibNamed:@"MyStyleVideoView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+
+- (void)setIsChoose:(BOOL)isChoose {
+    _isChoose = isChoose;
+    if (isChoose) {
+        self.uploadView.hidden = YES;
+        self.chooseButton.userInteractionEnabled = NO;
+        self.playView.hidden = NO;
+        self.playButton.userInteractionEnabled = YES;
+        self.deleteButton.hidden = NO;
+        self.deleteButton.userInteractionEnabled = YES;
+    }
+    else {
+        self.uploadView.hidden = NO;
+        self.chooseButton.userInteractionEnabled = YES;
+        self.playView.hidden = YES;
+        self.playButton.userInteractionEnabled = NO;
+        self.deleteButton.hidden = YES;
+        self.deleteButton.userInteractionEnabled = NO;
+    }
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+
+@end

+ 143 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/CreateStyle/View/MyStyleVideoView.xib

@@ -0,0 +1,143 @@
+<?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="MyStyleVideoView">
+            <rect key="frame" x="0.0" y="0.0" width="189" height="130"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WuF-SO-sA0">
+                    <rect key="frame" x="11" y="11" width="167" height="108"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nhN-pe-JZ8">
+                            <rect key="frame" x="0.0" y="0.0" width="167" height="108"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="image_upload" translatesAutoresizingMaskIntoConstraints="NO" id="OvO-Nc-tG8">
+                                    <rect key="frame" x="68" y="22" width="31" height="25"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="31" id="bxH-IN-RrN"/>
+                                        <constraint firstAttribute="height" constant="25" id="pvK-5Z-W7H"/>
+                                    </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="jQt-bW-xrd">
+                                    <rect key="frame" x="40.5" y="64" width="86" height="17"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kME-v3-6KH">
+                                    <rect key="frame" x="0.0" y="0.0" width="167" height="108"/>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="jQt-bW-xrd" firstAttribute="top" secondItem="OvO-Nc-tG8" secondAttribute="bottom" constant="17" id="3OB-gi-UGZ"/>
+                                <constraint firstItem="kME-v3-6KH" firstAttribute="top" secondItem="nhN-pe-JZ8" secondAttribute="top" id="4mY-av-RH3"/>
+                                <constraint firstAttribute="trailing" secondItem="kME-v3-6KH" secondAttribute="trailing" id="6ff-U9-tQB"/>
+                                <constraint firstItem="jQt-bW-xrd" firstAttribute="centerX" secondItem="nhN-pe-JZ8" secondAttribute="centerX" id="7I3-zo-YLh"/>
+                                <constraint firstAttribute="bottom" secondItem="kME-v3-6KH" secondAttribute="bottom" id="Kho-aa-Y07"/>
+                                <constraint firstItem="kME-v3-6KH" firstAttribute="leading" secondItem="nhN-pe-JZ8" secondAttribute="leading" id="Xdz-O1-pkm"/>
+                                <constraint firstItem="OvO-Nc-tG8" firstAttribute="top" secondItem="nhN-pe-JZ8" secondAttribute="top" constant="22" id="evi-OT-yPq"/>
+                                <constraint firstItem="OvO-Nc-tG8" firstAttribute="centerX" secondItem="nhN-pe-JZ8" secondAttribute="centerX" id="ggo-nh-IXr"/>
+                            </constraints>
+                        </view>
+                        <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yW1-Ft-tPa">
+                            <rect key="frame" x="0.0" y="0.0" width="167" height="108"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="BIR-6B-TMy">
+                                    <rect key="frame" x="0.0" y="0.0" width="167" height="108"/>
+                                </imageView>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OZG-D1-yjf">
+                                    <rect key="frame" x="61.5" y="32" width="44" height="44"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="44" id="53z-Tr-lxo"/>
+                                        <constraint firstAttribute="height" constant="44" id="lwS-lm-DZF"/>
+                                    </constraints>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" image="playVideo_image"/>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <constraints>
+                                <constraint firstItem="OZG-D1-yjf" firstAttribute="centerY" secondItem="yW1-Ft-tPa" secondAttribute="centerY" id="2tI-bB-hqQ"/>
+                                <constraint firstAttribute="bottom" secondItem="BIR-6B-TMy" secondAttribute="bottom" id="Ccy-1N-ZoF"/>
+                                <constraint firstItem="BIR-6B-TMy" firstAttribute="top" secondItem="yW1-Ft-tPa" secondAttribute="top" id="UKh-xX-eOM"/>
+                                <constraint firstItem="OZG-D1-yjf" firstAttribute="centerX" secondItem="yW1-Ft-tPa" secondAttribute="centerX" id="dF4-i4-gfe"/>
+                                <constraint firstAttribute="trailing" secondItem="BIR-6B-TMy" secondAttribute="trailing" id="g1w-vJ-Pko"/>
+                                <constraint firstItem="BIR-6B-TMy" firstAttribute="leading" secondItem="yW1-Ft-tPa" secondAttribute="leading" id="wnO-Lh-PDe"/>
+                            </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 firstAttribute="trailing" secondItem="nhN-pe-JZ8" secondAttribute="trailing" id="3El-8E-RV3"/>
+                        <constraint firstAttribute="bottom" secondItem="yW1-Ft-tPa" secondAttribute="bottom" id="KaP-9q-TvT"/>
+                        <constraint firstAttribute="trailing" secondItem="yW1-Ft-tPa" secondAttribute="trailing" id="LAZ-lo-IGi"/>
+                        <constraint firstItem="nhN-pe-JZ8" firstAttribute="leading" secondItem="WuF-SO-sA0" secondAttribute="leading" id="P5b-JS-JFk"/>
+                        <constraint firstAttribute="bottom" secondItem="nhN-pe-JZ8" secondAttribute="bottom" id="TTT-8k-baQ"/>
+                        <constraint firstItem="nhN-pe-JZ8" firstAttribute="top" secondItem="WuF-SO-sA0" secondAttribute="top" id="Y1y-l5-wYC"/>
+                        <constraint firstItem="yW1-Ft-tPa" firstAttribute="leading" secondItem="WuF-SO-sA0" secondAttribute="leading" id="kjg-Nj-f4K"/>
+                        <constraint firstItem="yW1-Ft-tPa" firstAttribute="top" secondItem="WuF-SO-sA0" secondAttribute="top" id="xlC-QY-yW3"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="10"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eDd-Nb-XT6">
+                    <rect key="frame" x="167" y="0.0" width="22" height="22"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="22" id="6gD-Kf-v5S"/>
+                        <constraint firstAttribute="height" constant="22" id="JAm-IO-VOs"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" image="video_delete"/>
+                </button>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="WuF-SO-sA0" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="11" id="Awj-xd-HkT"/>
+                <constraint firstItem="WuF-SO-sA0" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="11" id="Gpz-wO-fyq"/>
+                <constraint firstItem="eDd-Nb-XT6" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="Zov-67-BYN"/>
+                <constraint firstAttribute="bottom" secondItem="WuF-SO-sA0" secondAttribute="bottom" constant="11" id="krd-z4-r8S"/>
+                <constraint firstAttribute="trailing" secondItem="WuF-SO-sA0" secondAttribute="trailing" constant="11" id="l2u-1T-svm"/>
+                <constraint firstAttribute="trailing" secondItem="eDd-Nb-XT6" secondAttribute="trailing" id="w36-R4-n8C"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="chooseButton" destination="kME-v3-6KH" id="Gtf-i4-a4W"/>
+                <outlet property="deleteButton" destination="eDd-Nb-XT6" id="BRf-MY-RoT"/>
+                <outlet property="playButton" destination="OZG-D1-yjf" id="gCd-ZW-DMs"/>
+                <outlet property="playView" destination="yW1-Ft-tPa" id="NZ8-2i-4pR"/>
+                <outlet property="uploadView" destination="nhN-pe-JZ8" id="aUg-VH-2Fw"/>
+            </connections>
+            <point key="canvasLocation" x="119.56521739130436" y="-185.49107142857142"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="image_upload" width="31" height="25"/>
+        <image name="playVideo_image" width="26" height="26"/>
+        <image name="video_delete" width="22" height="22"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 3 - 3
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/DeviceCheck/DeviceCheckView.xib

@@ -1,9 +1,9 @@
 <?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">
+<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="19519"/>
+        <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>
@@ -167,7 +167,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
             </subviews>
-            <color key="backgroundColor" red="0.31372549019607843" green="0.31372549019607843" blue="0.31372549019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
             <constraints>
                 <constraint firstItem="XwV-vw-cSt" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="chb-iD-Rqq"/>
                 <constraint firstItem="XwV-vw-cSt" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="lBV-U9-msa"/>

+ 7 - 7
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/Controller/MinePageViewController.m

@@ -101,12 +101,12 @@
         id view = self.listViewArray[index];
         if ([view isKindOfClass:[MinePageCourseView class]]) {
             MinePageCourseView *courseView = (MinePageCourseView *)view;
-            courseView.teaherAuth = self.teacherInfo.entryStatus == 2;
-            courseView.musicianAuthStatus = self.teacherInfo.musicianAuthStatus == 2;
+            courseView.teaherAuth = [self.teacherInfo.entryStatus isEqualToString:@"PASS"] ? YES : NO;
+            courseView.musicianAuthStatus = [self.teacherInfo.musicianAuthStatus isEqualToString:@"PASS"] ? YES : NO;
         }
         else if ([view isKindOfClass:[MinePageVideoView class]]) {
             MinePageVideoView *videoCourseView = (MinePageVideoView *)view;
-            videoCourseView.teaherAuth = self.teacherInfo.entryStatus == 2;
+            videoCourseView.teaherAuth = [self.teacherInfo.entryStatus isEqualToString:@"PASS"] ? YES : NO;
         }
     }
 }
@@ -177,7 +177,7 @@
         self.listViewArray[index] = listView;
         listView.selectIndex = index;
         if (self.teacherInfo) {
-            listView.teaherAuth = self.teacherInfo.entryStatus == 2;
+            listView.teaherAuth = [self.teacherInfo.entryStatus isEqualToString:@"PASS"] ? YES : NO;
         }
         else {
             listView.teaherAuth = YES;
@@ -192,7 +192,7 @@
         self.listViewArray[index] = listView;
         listView.selectIndex = index;
         if (self.teacherInfo) {
-            listView.teaherAuth = self.teacherInfo.entryStatus == 2;
+            listView.teaherAuth = [self.teacherInfo.entryStatus isEqualToString:@"PASS"] ? YES : NO;
         }
         else {
             listView.teaherAuth = YES;
@@ -207,7 +207,7 @@
         self.listViewArray[index] = listView;
         listView.selectIndex = index;
         if (self.teacherInfo) {
-            listView.musicianAuthStatus = self.teacherInfo.musicianAuthStatus == 2;
+            listView.musicianAuthStatus = [self.teacherInfo.musicianAuthStatus isEqualToString:@"PASS"] ? YES : NO;
         }
         else {
             listView.musicianAuthStatus = YES;
@@ -222,7 +222,7 @@
         self.listViewArray[index] = listView;
         listView.selectIndex = index;
         if (self.teacherInfo) {
-            listView.teaherAuth = self.teacherInfo.entryStatus == 2;
+            listView.teaherAuth = [self.teacherInfo.entryStatus isEqualToString:@"PASS"] ? YES : NO;
         }
         else {
             listView.teaherAuth = YES;

+ 1 - 50
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MineIntroduceCell.xib

@@ -36,56 +36,7 @@
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sg2-Sp-iC5">
                                 <rect key="frame" x="12" y="61" width="341" height="87"/>
                                 <attributedString key="attributedText">
-                                    <fragment content="毕业于中央音乐学员长笛专业,师从央音长笛系曾获">
-                                        <attributes>
-                                            <color key="NSColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
-                                            <font key="NSFont" size="13" name=".PingFangSC-Regular"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineSpacing="8" tighteningFactorForTruncation="0.0"/>
-                                        </attributes>
-                                    </fragment>
-                                    <fragment content="2016">
-                                        <attributes>
-                                            <color key="NSColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
-                                            <font key="NSFont" metaFont="system"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineSpacing="8" tighteningFactorForTruncation="0.0"/>
-                                        </attributes>
-                                    </fragment>
-                                    <fragment content="年锦绣杯长笛大赛冠军自">
-                                        <attributes>
-                                            <color key="NSColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
-                                            <font key="NSFont" size="13" name=".PingFangSC-Regular"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineSpacing="8" tighteningFactorForTruncation="0.0"/>
-                                        </attributes>
-                                    </fragment>
-                                    <fragment content="2018">
-                                        <attributes>
-                                            <color key="NSColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
-                                            <font key="NSFont" metaFont="system"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineSpacing="8" tighteningFactorForTruncation="0.0"/>
-                                        </attributes>
-                                    </fragment>
-                                    <fragment content="年起研究长笛启蒙、考级到专业考试教育总结出一套适合各个阶段需要的教学方式所教学员考级通过率">
-                                        <attributes>
-                                            <color key="NSColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
-                                            <font key="NSFont" size="13" name=".PingFangSC-Regular"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineSpacing="8" tighteningFactorForTruncation="0.0"/>
-                                        </attributes>
-                                    </fragment>
-                                    <fragment content="100%">
-                                        <attributes>
-                                            <color key="NSColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
-                                            <font key="NSFont" metaFont="system"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineSpacing="8" tighteningFactorForTruncation="0.0"/>
-                                        </attributes>
-                                    </fragment>
-                                    <fragment content=",专业院校复试率">
-                                        <attributes>
-                                            <color key="NSColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
-                                            <font key="NSFont" size="13" name=".PingFangSC-Regular"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" lineSpacing="8" tighteningFactorForTruncation="0.0"/>
-                                        </attributes>
-                                    </fragment>
-                                    <fragment content="92%">
+                                    <fragment content="毕业于中央音乐学员长笛专业,师从央音长笛系曾获2016年锦绣杯长笛大赛冠军自2018年起研究长笛启蒙、考级到专业考试教育总结出一套适合各个阶段需要的教学方式所教学员考级通过率100%,专业院校复试率92%">
                                         <attributes>
                                             <color key="NSColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
                                             <font key="NSFont" metaFont="system"/>

+ 17 - 12
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageVideoCell.xib

@@ -12,29 +12,29 @@
         <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="MinePageVideoCell">
-            <rect key="frame" x="0.0" y="0.0" width="207" height="239"/>
+            <rect key="frame" x="0.0" y="0.0" width="207" height="200"/>
             <autoresizingMask key="autoresizingMask"/>
             <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
-                <rect key="frame" x="0.0" y="0.0" width="207" height="239"/>
+                <rect key="frame" x="0.0" y="0.0" width="207" height="200"/>
                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RA1-Ms-Rdt">
-                        <rect key="frame" x="0.0" y="0.0" width="207" height="239"/>
+                        <rect key="frame" x="0.0" y="0.0" width="207" height="200"/>
                         <subviews>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="video_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="U59-Pt-Ft1">
-                                <rect key="frame" x="0.0" y="0.0" width="207" height="137"/>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="video_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="U59-Pt-Ft1">
+                                <rect key="frame" x="0.0" y="0.0" width="207" height="111"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" secondItem="U59-Pt-Ft1" secondAttribute="height" multiplier="168:111" id="vFb-cQ-HPy"/>
+                                    <constraint firstAttribute="height" constant="111" id="nAv-x7-LNJ"/>
                                 </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="uOk-ia-Vh6">
-                                <rect key="frame" x="11" y="143" width="185" height="17"/>
+                                <rect key="frame" x="11" y="117" width="185" height="17"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                 <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="0.84705882349999995" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥120/4课时" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="W3y-Mv-wxM">
-                                <rect key="frame" x="9" y="187" width="81" height="20"/>
+                                <rect key="frame" x="9" y="164" width="81" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="20" id="e27-SE-MGk"/>
                                 </constraints>
@@ -43,7 +43,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_default_avatal" translatesAutoresizingMaskIntoConstraints="NO" id="yqj-pv-E9y">
-                                <rect key="frame" x="11" y="165" width="20" height="20"/>
+                                <rect key="frame" x="11" y="139" width="20" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="20" id="10h-7R-s14"/>
                                     <constraint firstAttribute="height" constant="20" id="aYV-dF-zgt"/>
@@ -55,13 +55,13 @@
                                 </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="Nwj-Ef-Sig">
-                                <rect key="frame" x="36" y="167.5" width="37" height="15"/>
+                                <rect key="frame" x="36" y="141.5" width="37" height="15"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                 <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="e8Z-Ri-oh9">
-                                <rect key="frame" x="79" y="165" width="118" height="20"/>
+                                <rect key="frame" x="79" y="139" width="118" height="20"/>
                                 <subviews>
                                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="I0Q-VW-orJ">
                                         <rect key="frame" x="0.0" y="4.5" width="1" height="11"/>
@@ -102,7 +102,7 @@
                             <constraint firstItem="U59-Pt-Ft1" firstAttribute="leading" secondItem="RA1-Ms-Rdt" secondAttribute="leading" id="UyZ-0m-Zce"/>
                             <constraint firstItem="e8Z-Ri-oh9" firstAttribute="leading" secondItem="Nwj-Ef-Sig" secondAttribute="trailing" constant="6" id="Y31-jU-l4B"/>
                             <constraint firstAttribute="trailing" secondItem="e8Z-Ri-oh9" secondAttribute="trailing" constant="10" id="ctU-1d-uaS"/>
-                            <constraint firstItem="W3y-Mv-wxM" firstAttribute="top" secondItem="yqj-pv-E9y" secondAttribute="bottom" constant="2" id="e3y-jZ-ZPa"/>
+                            <constraint firstItem="W3y-Mv-wxM" firstAttribute="top" secondItem="yqj-pv-E9y" secondAttribute="bottom" constant="5" id="e3y-jZ-ZPa"/>
                             <constraint firstItem="Nwj-Ef-Sig" firstAttribute="centerY" secondItem="yqj-pv-E9y" secondAttribute="centerY" id="lOz-ZL-BdG"/>
                             <constraint firstItem="e8Z-Ri-oh9" firstAttribute="centerY" secondItem="Nwj-Ef-Sig" secondAttribute="centerY" id="wg1-be-1hH"/>
                             <constraint firstItem="W3y-Mv-wxM" firstAttribute="leading" secondItem="RA1-Ms-Rdt" secondAttribute="leading" constant="9" id="xR2-mV-JFQ"/>
@@ -118,6 +118,11 @@
                 <constraint firstAttribute="trailing" secondItem="RA1-Ms-Rdt" secondAttribute="trailing" id="OE6-Fp-3Fh"/>
             </constraints>
             <size key="customSize" width="207" height="239"/>
+            <userDefinedRuntimeAttributes>
+                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                    <real key="value" value="5"/>
+                </userDefinedRuntimeAttribute>
+            </userDefinedRuntimeAttributes>
             <connections>
                 <outlet property="courseMessage" destination="W3y-Mv-wxM" id="Nsr-uP-v89"/>
                 <outlet property="courseTitle" destination="uOk-ia-Vh6" id="vHO-8t-9sg"/>

+ 2 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/MinePage/View/MinePageVideoView.m

@@ -91,7 +91,7 @@
 }
 
 - (void)requestData {
-    [KSNetworkingManager videoLessonListRequest:KS_POST auditStatus:@"1" pageNo:self.pages pageSize:self.rows success:^(NSDictionary * _Nonnull dic) {
+    [KSNetworkingManager videoLessonListRequest:KS_POST auditStatus:@"PASS" pageNo:self.pages pageSize:self.rows success:^(NSDictionary * _Nonnull dic) {
         [self endRefresh];
         if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
             NSArray *sourceArray = [[dic dictionaryValueForKey:@"data"] arrayValueForKey:@"rows"];
@@ -188,7 +188,7 @@
 }
 
 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
-    return CGSizeMake((kScreenWidth - 28 - 11) / 2.0f, 220);
+    return CGSizeMake((kScreenWidth - 28 - 11) / 2.0f, 200);
 }
 /**
  设置没有数据时的显示

+ 33 - 10
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.h

@@ -1,7 +1,7 @@
 //
 //  TeacherInfo.h
 //
-//  Created by   on 2022/3/23
+//  Created by Steven  on 2022/4/11
 //  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
 //
 
@@ -11,18 +11,41 @@
 
 @interface TeacherInfo : NSObject <NSCoding, NSCopying>
 
-@property (nonatomic, assign) NSInteger unExpTime;
-@property (nonatomic, assign) NSInteger entryStatus;
-@property (nonatomic, strong) NSString *userId;
+@property (nonatomic, strong) NSString *birthdate;
+@property (nonatomic, strong) NSString *graduateSchool;
+@property (nonatomic, strong) NSString *workUnit;
 @property (nonatomic, strong) NSString *heardUrl;
-@property (nonatomic, assign) NSInteger fansNum;
-@property (nonatomic, assign) NSInteger expTime;
-@property (nonatomic, strong) NSString *username;
-@property (nonatomic, assign) NSInteger musicianAuthStatus;
-@property (nonatomic, assign) NSInteger starGrade;
-@property (nonatomic, assign) NSInteger liveFlag;
+@property (nonatomic, strong) NSString *subject;
+@property (nonatomic, strong) NSString *gradCertificate;
+@property (nonatomic, strong) NSString *degreeCertificate;
+@property (nonatomic, strong) NSString *teacherCertificate;
+@property (nonatomic, strong) NSString *musicianAuthStatus;
+@property (nonatomic, strong) NSString *educationBackground;
+@property (nonatomic, strong) NSString *updateTime;
+@property (nonatomic, strong) NSString *musicianDate;
+@property (nonatomic, assign) double isBank;
+@property (nonatomic, strong) NSString *realName;
+@property (nonatomic, strong) NSString *introduction;
+@property (nonatomic, assign) double starGrade;
+@property (nonatomic, assign) double unExpTime;
+@property (nonatomic, strong) NSString *entryStatus;
+@property (nonatomic, strong) NSString *entryAuthDate;
 @property (nonatomic, strong) NSString *subjectId;
+@property (nonatomic, strong) NSString *username;
+@property (nonatomic, strong) NSString *entryFlag;
+@property (nonatomic, assign) double gender;
+@property (nonatomic, assign) double fansNum;
+@property (nonatomic, strong) NSString *musicianFlag;
+@property (nonatomic, strong) NSString * liveFlag;
+@property (nonatomic, strong) NSString *createTime;
+@property (nonatomic, assign) double expTime;
+@property (nonatomic, strong) NSString *technicalTitles;
 @property (nonatomic, strong) NSString *subjectName;
+@property (nonatomic, strong) NSString *phone;
+@property (nonatomic, strong) NSString *memo;
+@property (nonatomic, assign) double isReal;
+@property (nonatomic, strong) NSString *idCardNo;
+@property (nonatomic, strong) NSString *userId;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 225 - 62
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/Model/TeacherInfo.m

@@ -1,25 +1,49 @@
 //
 //  TeacherInfo.m
 //
-//  Created by   on 2022/3/23
+//  Created by Steven  on 2022/4/11
 //  Copyright (c) 2022 __MyCompanyName__. All rights reserved.
 //
 
 #import "TeacherInfo.h"
 
 
-NSString *const kTeacherInfoUnExpTime = @"unExpTime";
-NSString *const kTeacherInfoEntryStatus = @"entryStatus";
-NSString *const kTeacherInfoUserId = @"userId";
+NSString *const kTeacherInfoBirthdate = @"birthdate";
+NSString *const kTeacherInfoGraduateSchool = @"graduateSchool";
+NSString *const kTeacherInfoWorkUnit = @"workUnit";
 NSString *const kTeacherInfoHeardUrl = @"heardUrl";
-NSString *const kTeacherInfoFansNum = @"fansNum";
-NSString *const kTeacherInfoExpTime = @"expTime";
-NSString *const kTeacherInfoUsername = @"username";
+NSString *const kTeacherInfoSubject = @"subject";
+NSString *const kTeacherInfoGradCertificate = @"gradCertificate";
+NSString *const kTeacherInfoDegreeCertificate = @"degreeCertificate";
+NSString *const kTeacherInfoTeacherCertificate = @"teacherCertificate";
 NSString *const kTeacherInfoMusicianAuthStatus = @"musicianAuthStatus";
+NSString *const kTeacherInfoEducationBackground = @"educationBackground";
+NSString *const kTeacherInfoUpdateTime = @"updateTime";
+NSString *const kTeacherInfoMusicianDate = @"musicianDate";
+NSString *const kTeacherInfoIsBank = @"isBank";
+NSString *const kTeacherInfoRealName = @"realName";
+NSString *const kTeacherInfoIntroduction = @"introduction";
 NSString *const kTeacherInfoStarGrade = @"starGrade";
-NSString *const kTeacherInfoLiveFlag = @"liveFlag";
+NSString *const kTeacherInfoUnExpTime = @"unExpTime";
+NSString *const kTeacherInfoEntryStatus = @"entryStatus";
+NSString *const kTeacherInfoEntryAuthDate = @"entryAuthDate";
 NSString *const kTeacherInfoSubjectId = @"subjectId";
+NSString *const kTeacherInfoUsername = @"username";
+NSString *const kTeacherInfoEntryFlag = @"entryFlag";
+NSString *const kTeacherInfoGender = @"gender";
+NSString *const kTeacherInfoFansNum = @"fansNum";
+NSString *const kTeacherInfoMusicianFlag = @"musicianFlag";
+NSString *const kTeacherInfoLiveFlag = @"liveFlag";
+NSString *const kTeacherInfoCreateTime = @"createTime";
+NSString *const kTeacherInfoExpTime = @"expTime";
+NSString *const kTeacherInfoTechnicalTitles = @"technicalTitles";
 NSString *const kTeacherInfoSubjectName = @"subjectName";
+NSString *const kTeacherInfoPhone = @"phone";
+NSString *const kTeacherInfoMemo = @"memo";
+NSString *const kTeacherInfoIsReal = @"isReal";
+NSString *const kTeacherInfoIdCardNo = @"idCardNo";
+NSString *const kTeacherInfoUserId = @"userId";
+
 
 @interface TeacherInfo ()
 
@@ -29,18 +53,42 @@ NSString *const kTeacherInfoSubjectName = @"subjectName";
 
 @implementation TeacherInfo
 
-@synthesize unExpTime = _unExpTime;
-@synthesize entryStatus = _entryStatus;
-@synthesize userId = _userId;
+@synthesize birthdate = _birthdate;
+@synthesize graduateSchool = _graduateSchool;
+@synthesize workUnit = _workUnit;
 @synthesize heardUrl = _heardUrl;
-@synthesize fansNum = _fansNum;
-@synthesize expTime = _expTime;
-@synthesize username = _username;
+@synthesize subject = _subject;
+@synthesize gradCertificate = _gradCertificate;
+@synthesize degreeCertificate = _degreeCertificate;
+@synthesize teacherCertificate = _teacherCertificate;
 @synthesize musicianAuthStatus = _musicianAuthStatus;
+@synthesize educationBackground = _educationBackground;
+@synthesize updateTime = _updateTime;
+@synthesize musicianDate = _musicianDate;
+@synthesize isBank = _isBank;
+@synthesize realName = _realName;
+@synthesize introduction = _introduction;
 @synthesize starGrade = _starGrade;
-@synthesize liveFlag = _liveFlag;
+@synthesize unExpTime = _unExpTime;
+@synthesize entryStatus = _entryStatus;
+@synthesize entryAuthDate = _entryAuthDate;
 @synthesize subjectId = _subjectId;
+@synthesize username = _username;
+@synthesize entryFlag = _entryFlag;
+@synthesize gender = _gender;
+@synthesize fansNum = _fansNum;
+@synthesize musicianFlag = _musicianFlag;
+@synthesize liveFlag = _liveFlag;
+@synthesize createTime = _createTime;
+@synthesize expTime = _expTime;
+@synthesize technicalTitles = _technicalTitles;
 @synthesize subjectName = _subjectName;
+@synthesize phone = _phone;
+@synthesize memo = _memo;
+@synthesize isReal = _isReal;
+@synthesize idCardNo = _idCardNo;
+@synthesize userId = _userId;
+
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -54,18 +102,41 @@ NSString *const kTeacherInfoSubjectName = @"subjectName";
     // This check serves to make sure that a non-NSDictionary object
     // passed into the model class doesn't break the parsing.
     if(self && [dict isKindOfClass:[NSDictionary class]]) {
-            self.unExpTime = [[self objectOrNilForKey:kTeacherInfoUnExpTime fromDictionary:dict] integerValue];
-            self.entryStatus = [[self objectOrNilForKey:kTeacherInfoEntryStatus fromDictionary:dict] integerValue];
-            self.userId = [self objectOrNilForKey:kTeacherInfoUserId fromDictionary:dict];
+            self.birthdate = [self objectOrNilForKey:kTeacherInfoBirthdate fromDictionary:dict];
+            self.graduateSchool = [self objectOrNilForKey:kTeacherInfoGraduateSchool fromDictionary:dict];
+            self.workUnit = [self objectOrNilForKey:kTeacherInfoWorkUnit fromDictionary:dict];
             self.heardUrl = [self objectOrNilForKey:kTeacherInfoHeardUrl fromDictionary:dict];
-            self.fansNum = [[self objectOrNilForKey:kTeacherInfoFansNum fromDictionary:dict] integerValue];
-            self.expTime = [[self objectOrNilForKey:kTeacherInfoExpTime fromDictionary:dict] integerValue];
+            self.subject = [self objectOrNilForKey:kTeacherInfoSubject fromDictionary:dict];
+            self.gradCertificate = [self objectOrNilForKey:kTeacherInfoGradCertificate fromDictionary:dict];
+            self.degreeCertificate = [self objectOrNilForKey:kTeacherInfoDegreeCertificate fromDictionary:dict];
+            self.teacherCertificate = [self objectOrNilForKey:kTeacherInfoTeacherCertificate fromDictionary:dict];
+            self.musicianAuthStatus = [self objectOrNilForKey:kTeacherInfoMusicianAuthStatus fromDictionary:dict];
+            self.educationBackground = [self objectOrNilForKey:kTeacherInfoEducationBackground fromDictionary:dict];
+            self.updateTime = [self objectOrNilForKey:kTeacherInfoUpdateTime fromDictionary:dict];
+            self.musicianDate = [self objectOrNilForKey:kTeacherInfoMusicianDate fromDictionary:dict];
+            self.isBank = [[self objectOrNilForKey:kTeacherInfoIsBank fromDictionary:dict] doubleValue];
+            self.realName = [self objectOrNilForKey:kTeacherInfoRealName fromDictionary:dict];
+            self.introduction = [self objectOrNilForKey:kTeacherInfoIntroduction fromDictionary:dict];
+            self.starGrade = [[self objectOrNilForKey:kTeacherInfoStarGrade fromDictionary:dict] doubleValue];
+            self.unExpTime = [[self objectOrNilForKey:kTeacherInfoUnExpTime fromDictionary:dict] doubleValue];
+            self.entryStatus = [self objectOrNilForKey:kTeacherInfoEntryStatus fromDictionary:dict];
+            self.entryAuthDate = [self objectOrNilForKey:kTeacherInfoEntryAuthDate fromDictionary:dict];
+            self.subjectId = [self objectOrNilForKey:kTeacherInfoSubjectId fromDictionary:dict];
             self.username = [self objectOrNilForKey:kTeacherInfoUsername fromDictionary:dict];
-            self.musicianAuthStatus = [[self objectOrNilForKey:kTeacherInfoMusicianAuthStatus fromDictionary:dict] integerValue];
-            self.starGrade = [[self objectOrNilForKey:kTeacherInfoStarGrade fromDictionary:dict] integerValue];
-            self.liveFlag = [[self objectOrNilForKey:kTeacherInfoLiveFlag fromDictionary:dict] integerValue];
-        self.subjectId = [self objectOrNilForKey:kTeacherInfoSubjectId fromDictionary:dict];
-        self.subjectName = [self objectOrNilForKey:kTeacherInfoSubjectName fromDictionary:dict];
+            self.entryFlag = [self objectOrNilForKey:kTeacherInfoEntryFlag fromDictionary:dict];
+            self.gender = [[self objectOrNilForKey:kTeacherInfoGender fromDictionary:dict] doubleValue];
+            self.fansNum = [[self objectOrNilForKey:kTeacherInfoFansNum fromDictionary:dict] doubleValue];
+            self.musicianFlag = [self objectOrNilForKey:kTeacherInfoMusicianFlag fromDictionary:dict];
+            self.liveFlag = [self objectOrNilForKey:kTeacherInfoLiveFlag fromDictionary:dict];
+            self.createTime = [self objectOrNilForKey:kTeacherInfoCreateTime fromDictionary:dict];
+            self.expTime = [[self objectOrNilForKey:kTeacherInfoExpTime fromDictionary:dict] doubleValue];
+            self.technicalTitles = [self objectOrNilForKey:kTeacherInfoTechnicalTitles fromDictionary:dict];
+            self.subjectName = [self objectOrNilForKey:kTeacherInfoSubjectName fromDictionary:dict];
+            self.phone = [self objectOrNilForKey:kTeacherInfoPhone fromDictionary:dict];
+            self.memo = [self objectOrNilForKey:kTeacherInfoMemo fromDictionary:dict];
+            self.isReal = [[self objectOrNilForKey:kTeacherInfoIsReal fromDictionary:dict] doubleValue];
+            self.idCardNo = [self objectOrNilForKey:kTeacherInfoIdCardNo fromDictionary:dict];
+            self.userId = [self objectOrNilForKey:kTeacherInfoUserId fromDictionary:dict];
 
     }
     
@@ -76,22 +147,46 @@ NSString *const kTeacherInfoSubjectName = @"subjectName";
 - (NSDictionary *)dictionaryRepresentation
 {
     NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
-    [mutableDict setValue:[NSNumber numberWithInteger:self.unExpTime] forKey:kTeacherInfoUnExpTime];
-    [mutableDict setValue:[NSNumber numberWithInteger:self.entryStatus] forKey:kTeacherInfoEntryStatus];
-    [mutableDict setValue:self.userId forKey:kTeacherInfoUserId];
+    [mutableDict setValue:self.birthdate forKey:kTeacherInfoBirthdate];
+    [mutableDict setValue:self.graduateSchool forKey:kTeacherInfoGraduateSchool];
+    [mutableDict setValue:self.workUnit forKey:kTeacherInfoWorkUnit];
     [mutableDict setValue:self.heardUrl forKey:kTeacherInfoHeardUrl];
-    [mutableDict setValue:[NSNumber numberWithInteger:self.fansNum] forKey:kTeacherInfoFansNum];
-    [mutableDict setValue:[NSNumber numberWithInteger:self.expTime] forKey:kTeacherInfoExpTime];
-    [mutableDict setValue:self.username forKey:kTeacherInfoUsername];
-    [mutableDict setValue:[NSNumber numberWithInteger:self.musicianAuthStatus] forKey:kTeacherInfoMusicianAuthStatus];
-    [mutableDict setValue:[NSNumber numberWithInteger:self.starGrade] forKey:kTeacherInfoStarGrade];
-    [mutableDict setValue:[NSNumber numberWithInteger:self.liveFlag] forKey:kTeacherInfoLiveFlag];
+    [mutableDict setValue:self.subject forKey:kTeacherInfoSubject];
+    [mutableDict setValue:self.gradCertificate forKey:kTeacherInfoGradCertificate];
+    [mutableDict setValue:self.degreeCertificate forKey:kTeacherInfoDegreeCertificate];
+    [mutableDict setValue:self.teacherCertificate forKey:kTeacherInfoTeacherCertificate];
+    [mutableDict setValue:self.musicianAuthStatus forKey:kTeacherInfoMusicianAuthStatus];
+    [mutableDict setValue:self.educationBackground forKey:kTeacherInfoEducationBackground];
+    [mutableDict setValue:self.updateTime forKey:kTeacherInfoUpdateTime];
+    [mutableDict setValue:self.musicianDate forKey:kTeacherInfoMusicianDate];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.isBank] forKey:kTeacherInfoIsBank];
+    [mutableDict setValue:self.realName forKey:kTeacherInfoRealName];
+    [mutableDict setValue:self.introduction forKey:kTeacherInfoIntroduction];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.starGrade] forKey:kTeacherInfoStarGrade];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.unExpTime] forKey:kTeacherInfoUnExpTime];
+    [mutableDict setValue:self.entryStatus forKey:kTeacherInfoEntryStatus];
+    [mutableDict setValue:self.entryAuthDate forKey:kTeacherInfoEntryAuthDate];
     [mutableDict setValue:self.subjectId forKey:kTeacherInfoSubjectId];
+    [mutableDict setValue:self.username forKey:kTeacherInfoUsername];
+    [mutableDict setValue:self.entryFlag forKey:kTeacherInfoEntryFlag];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.gender] forKey:kTeacherInfoGender];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.fansNum] forKey:kTeacherInfoFansNum];
+    [mutableDict setValue:self.musicianFlag forKey:kTeacherInfoMusicianFlag];
+    [mutableDict setValue:self.liveFlag forKey:kTeacherInfoLiveFlag];
+    [mutableDict setValue:self.createTime forKey:kTeacherInfoCreateTime];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.expTime] forKey:kTeacherInfoExpTime];
+    [mutableDict setValue:self.technicalTitles forKey:kTeacherInfoTechnicalTitles];
     [mutableDict setValue:self.subjectName forKey:kTeacherInfoSubjectName];
+    [mutableDict setValue:self.phone forKey:kTeacherInfoPhone];
+    [mutableDict setValue:self.memo forKey:kTeacherInfoMemo];
+    [mutableDict setValue:[NSNumber numberWithDouble:self.isReal] forKey:kTeacherInfoIsReal];
+    [mutableDict setValue:self.idCardNo forKey:kTeacherInfoIdCardNo];
+    [mutableDict setValue:self.userId forKey:kTeacherInfoUserId];
+
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
-- (NSString *)description
+- (NSString *)description 
 {
     return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
 }
@@ -114,36 +209,82 @@ NSString *const kTeacherInfoSubjectName = @"subjectName";
 {
     self = [super init];
 
-    self.unExpTime = [aDecoder decodeIntegerForKey:kTeacherInfoUnExpTime];
-    self.entryStatus = [aDecoder decodeIntegerForKey:kTeacherInfoEntryStatus];
-    self.userId = [aDecoder decodeObjectForKey:kTeacherInfoUserId];
+    self.birthdate = [aDecoder decodeObjectForKey:kTeacherInfoBirthdate];
+    self.graduateSchool = [aDecoder decodeObjectForKey:kTeacherInfoGraduateSchool];
+    self.workUnit = [aDecoder decodeObjectForKey:kTeacherInfoWorkUnit];
     self.heardUrl = [aDecoder decodeObjectForKey:kTeacherInfoHeardUrl];
-    self.fansNum = [aDecoder decodeIntegerForKey:kTeacherInfoFansNum];
-    self.expTime = [aDecoder decodeIntegerForKey:kTeacherInfoExpTime];
-    self.username = [aDecoder decodeObjectForKey:kTeacherInfoUsername];
-    self.musicianAuthStatus = [aDecoder decodeIntegerForKey:kTeacherInfoMusicianAuthStatus];
-    self.starGrade = [aDecoder decodeIntegerForKey:kTeacherInfoStarGrade];
-    self.liveFlag = [aDecoder decodeIntegerForKey:kTeacherInfoLiveFlag];
+    self.subject = [aDecoder decodeObjectForKey:kTeacherInfoSubject];
+    self.gradCertificate = [aDecoder decodeObjectForKey:kTeacherInfoGradCertificate];
+    self.degreeCertificate = [aDecoder decodeObjectForKey:kTeacherInfoDegreeCertificate];
+    self.teacherCertificate = [aDecoder decodeObjectForKey:kTeacherInfoTeacherCertificate];
+    self.musicianAuthStatus = [aDecoder decodeObjectForKey:kTeacherInfoMusicianAuthStatus];
+    self.educationBackground = [aDecoder decodeObjectForKey:kTeacherInfoEducationBackground];
+    self.updateTime = [aDecoder decodeObjectForKey:kTeacherInfoUpdateTime];
+    self.musicianDate = [aDecoder decodeObjectForKey:kTeacherInfoMusicianDate];
+    self.isBank = [aDecoder decodeDoubleForKey:kTeacherInfoIsBank];
+    self.realName = [aDecoder decodeObjectForKey:kTeacherInfoRealName];
+    self.introduction = [aDecoder decodeObjectForKey:kTeacherInfoIntroduction];
+    self.starGrade = [aDecoder decodeDoubleForKey:kTeacherInfoStarGrade];
+    self.unExpTime = [aDecoder decodeDoubleForKey:kTeacherInfoUnExpTime];
+    self.entryStatus = [aDecoder decodeObjectForKey:kTeacherInfoEntryStatus];
+    self.entryAuthDate = [aDecoder decodeObjectForKey:kTeacherInfoEntryAuthDate];
     self.subjectId = [aDecoder decodeObjectForKey:kTeacherInfoSubjectId];
+    self.username = [aDecoder decodeObjectForKey:kTeacherInfoUsername];
+    self.entryFlag = [aDecoder decodeObjectForKey:kTeacherInfoEntryFlag];
+    self.gender = [aDecoder decodeDoubleForKey:kTeacherInfoGender];
+    self.fansNum = [aDecoder decodeDoubleForKey:kTeacherInfoFansNum];
+    self.musicianFlag = [aDecoder decodeObjectForKey:kTeacherInfoMusicianFlag];
+    self.liveFlag = [aDecoder decodeObjectForKey:kTeacherInfoLiveFlag];
+    self.createTime = [aDecoder decodeObjectForKey:kTeacherInfoCreateTime];
+    self.expTime = [aDecoder decodeDoubleForKey:kTeacherInfoExpTime];
+    self.technicalTitles = [aDecoder decodeObjectForKey:kTeacherInfoTechnicalTitles];
     self.subjectName = [aDecoder decodeObjectForKey:kTeacherInfoSubjectName];
+    self.phone = [aDecoder decodeObjectForKey:kTeacherInfoPhone];
+    self.memo = [aDecoder decodeObjectForKey:kTeacherInfoMemo];
+    self.isReal = [aDecoder decodeDoubleForKey:kTeacherInfoIsReal];
+    self.idCardNo = [aDecoder decodeObjectForKey:kTeacherInfoIdCardNo];
+    self.userId = [aDecoder decodeObjectForKey:kTeacherInfoUserId];
     return self;
 }
 
 - (void)encodeWithCoder:(NSCoder *)aCoder
 {
 
-    [aCoder encodeInteger:_unExpTime forKey:kTeacherInfoUnExpTime];
-    [aCoder encodeInteger:_entryStatus forKey:kTeacherInfoEntryStatus];
-    [aCoder encodeObject:_userId forKey:kTeacherInfoUserId];
+    [aCoder encodeObject:_birthdate forKey:kTeacherInfoBirthdate];
+    [aCoder encodeObject:_graduateSchool forKey:kTeacherInfoGraduateSchool];
+    [aCoder encodeObject:_workUnit forKey:kTeacherInfoWorkUnit];
     [aCoder encodeObject:_heardUrl forKey:kTeacherInfoHeardUrl];
-    [aCoder encodeInteger:_fansNum forKey:kTeacherInfoFansNum];
-    [aCoder encodeInteger:_expTime forKey:kTeacherInfoExpTime];
-    [aCoder encodeObject:_username forKey:kTeacherInfoUsername];
-    [aCoder encodeInteger:_musicianAuthStatus forKey:kTeacherInfoMusicianAuthStatus];
-    [aCoder encodeInteger:_starGrade forKey:kTeacherInfoStarGrade];
-    [aCoder encodeInteger:_liveFlag forKey:kTeacherInfoLiveFlag];
+    [aCoder encodeObject:_subject forKey:kTeacherInfoSubject];
+    [aCoder encodeObject:_gradCertificate forKey:kTeacherInfoGradCertificate];
+    [aCoder encodeObject:_degreeCertificate forKey:kTeacherInfoDegreeCertificate];
+    [aCoder encodeObject:_teacherCertificate forKey:kTeacherInfoTeacherCertificate];
+    [aCoder encodeObject:_musicianAuthStatus forKey:kTeacherInfoMusicianAuthStatus];
+    [aCoder encodeObject:_educationBackground forKey:kTeacherInfoEducationBackground];
+    [aCoder encodeObject:_updateTime forKey:kTeacherInfoUpdateTime];
+    [aCoder encodeObject:_musicianDate forKey:kTeacherInfoMusicianDate];
+    [aCoder encodeDouble:_isBank forKey:kTeacherInfoIsBank];
+    [aCoder encodeObject:_realName forKey:kTeacherInfoRealName];
+    [aCoder encodeObject:_introduction forKey:kTeacherInfoIntroduction];
+    [aCoder encodeDouble:_starGrade forKey:kTeacherInfoStarGrade];
+    [aCoder encodeDouble:_unExpTime forKey:kTeacherInfoUnExpTime];
+    [aCoder encodeObject:_entryStatus forKey:kTeacherInfoEntryStatus];
+    [aCoder encodeObject:_entryAuthDate forKey:kTeacherInfoEntryAuthDate];
     [aCoder encodeObject:_subjectId forKey:kTeacherInfoSubjectId];
+    [aCoder encodeObject:_username forKey:kTeacherInfoUsername];
+    [aCoder encodeObject:_entryFlag forKey:kTeacherInfoEntryFlag];
+    [aCoder encodeDouble:_gender forKey:kTeacherInfoGender];
+    [aCoder encodeDouble:_fansNum forKey:kTeacherInfoFansNum];
+    [aCoder encodeObject:_musicianFlag forKey:kTeacherInfoMusicianFlag];
+    [aCoder encodeObject:_liveFlag forKey:kTeacherInfoLiveFlag];
+    [aCoder encodeObject:_createTime forKey:kTeacherInfoCreateTime];
+    [aCoder encodeDouble:_expTime forKey:kTeacherInfoExpTime];
+    [aCoder encodeObject:_technicalTitles forKey:kTeacherInfoTechnicalTitles];
     [aCoder encodeObject:_subjectName forKey:kTeacherInfoSubjectName];
+    [aCoder encodeObject:_phone forKey:kTeacherInfoPhone];
+    [aCoder encodeObject:_memo forKey:kTeacherInfoMemo];
+    [aCoder encodeDouble:_isReal forKey:kTeacherInfoIsReal];
+    [aCoder encodeObject:_idCardNo forKey:kTeacherInfoIdCardNo];
+    [aCoder encodeObject:_userId forKey:kTeacherInfoUserId];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -152,18 +293,41 @@ NSString *const kTeacherInfoSubjectName = @"subjectName";
     
     if (copy) {
 
-        copy.unExpTime = self.unExpTime;
-        copy.entryStatus = self.entryStatus;
-        copy.userId = [self.userId copyWithZone:zone];
+        copy.birthdate = [self.birthdate copyWithZone:zone];
+        copy.graduateSchool = [self.graduateSchool copyWithZone:zone];
+        copy.workUnit = [self.workUnit copyWithZone:zone];
         copy.heardUrl = [self.heardUrl copyWithZone:zone];
-        copy.fansNum = self.fansNum;
-        copy.expTime = self.expTime;
-        copy.username = [self.username copyWithZone:zone];
-        copy.musicianAuthStatus = self.musicianAuthStatus;
+        copy.subject = [self.subject copyWithZone:zone];
+        copy.gradCertificate = [self.gradCertificate copyWithZone:zone];
+        copy.degreeCertificate = [self.degreeCertificate copyWithZone:zone];
+        copy.teacherCertificate = [self.teacherCertificate copyWithZone:zone];
+        copy.musicianAuthStatus = [self.musicianAuthStatus copyWithZone:zone];
+        copy.educationBackground = [self.educationBackground copyWithZone:zone];
+        copy.updateTime = [self.updateTime copyWithZone:zone];
+        copy.musicianDate = [self.musicianDate copyWithZone:zone];
+        copy.isBank = self.isBank;
+        copy.realName = [self.realName copyWithZone:zone];
+        copy.introduction = [self.introduction copyWithZone:zone];
         copy.starGrade = self.starGrade;
-        copy.liveFlag = self.liveFlag;
+        copy.unExpTime = self.unExpTime;
+        copy.entryStatus = [self.entryStatus copyWithZone:zone];
+        copy.entryAuthDate = [self.entryAuthDate copyWithZone:zone];
         copy.subjectId = [self.subjectId copyWithZone:zone];
+        copy.username = [self.username copyWithZone:zone];
+        copy.entryFlag = [self.entryFlag copyWithZone:zone];
+        copy.gender = self.gender;
+        copy.fansNum = self.fansNum;
+        copy.musicianFlag = [self.musicianFlag copyWithZone:zone];
+        copy.liveFlag = [self.liveFlag copyWithZone:zone];
+        copy.createTime = [self.createTime copyWithZone:zone];
+        copy.expTime = self.expTime;
+        copy.technicalTitles = [self.technicalTitles copyWithZone:zone];
         copy.subjectName = [self.subjectName copyWithZone:zone];
+        copy.phone = [self.phone copyWithZone:zone];
+        copy.memo = [self.memo copyWithZone:zone];
+        copy.isReal = self.isReal;
+        copy.idCardNo = [self.idCardNo copyWithZone:zone];
+        copy.userId = [self.userId copyWithZone:zone];
     }
     
     return copy;
@@ -171,4 +335,3 @@ NSString *const kTeacherInfoSubjectName = @"subjectName";
 
 
 @end
-

+ 3 - 7
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/Controller/VideoCourseViewController.m

@@ -28,7 +28,7 @@
     [super viewDidLoad];
     // Do any additional setup after loading the view.
     [self allocTitle:@"视频课"];
-    _titles = @[@"已上架",@"审核中"];
+    _titles = @[@"已上架",@"审核中",@"审核失败"];
     [self configUI];
 }
 
@@ -118,11 +118,7 @@
     listView.naviController = self.navigationController;
     [self.listViewArray replaceObjectAtIndex:index withObject:listView];
     self.listViewArray[index] = listView;
-    if (index == 0) {
-        listView.selectIndex = 0;
-    }else if (index == 1) {
-        listView.selectIndex = 1;
-    }
+    listView.selectIndex = index;
     [listView beginFirstRefresh];
     return listView;
 }
@@ -146,7 +142,7 @@
 
 - (NSMutableArray *)listViewArray {
     if (!_listViewArray) {
-        _listViewArray = [NSMutableArray arrayWithArray:@[@"",@""]];
+        _listViewArray = [NSMutableArray arrayWithArray:@[@"",@"",@""]];
     }
     return _listViewArray;
 }

+ 14 - 9
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/View/VideoCourseCell.xib

@@ -1,9 +1,9 @@
 <?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" useSafeAreas="YES" colorMatched="YES">
+<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="19519"/>
+        <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"/>
@@ -12,19 +12,19 @@
         <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="VideoCourseCell">
-            <rect key="frame" x="0.0" y="0.0" width="168" height="193"/>
+            <rect key="frame" x="0.0" y="0.0" width="168" height="200"/>
             <autoresizingMask key="autoresizingMask"/>
             <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
-                <rect key="frame" x="0.0" y="0.0" width="168" height="193"/>
+                <rect key="frame" x="0.0" y="0.0" width="168" height="200"/>
                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                 <subviews>
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZgA-i1-RHm">
-                        <rect key="frame" x="0.0" y="0.0" width="168" height="193"/>
+                        <rect key="frame" x="0.0" y="0.0" width="168" height="200"/>
                         <subviews>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="video_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="G9V-fH-gog">
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="video_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="G9V-fH-gog">
                                 <rect key="frame" x="0.0" y="0.0" width="168" height="111"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" secondItem="G9V-fH-gog" secondAttribute="height" multiplier="168:111" id="sJI-SG-5zu"/>
+                                    <constraint firstAttribute="height" constant="111" id="6CZ-fO-O3c"/>
                                 </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="yCS-l4-WAt">
@@ -34,7 +34,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥120/4课时" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yib-mA-6Ou">
-                                <rect key="frame" x="9" y="161" width="81" height="20"/>
+                                <rect key="frame" x="9" y="164" width="81" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="20" id="fo4-3I-tde"/>
                                 </constraints>
@@ -100,7 +100,7 @@
                             <constraint firstAttribute="trailing" secondItem="yCS-l4-WAt" secondAttribute="trailing" constant="11" id="N8r-qo-ZmS"/>
                             <constraint firstItem="3il-XM-fqj" firstAttribute="leading" secondItem="ZgA-i1-RHm" secondAttribute="leading" constant="11" id="P7e-LF-pGN"/>
                             <constraint firstItem="wbK-Jo-ZbH" firstAttribute="centerY" secondItem="3il-XM-fqj" secondAttribute="centerY" id="TWM-PS-Pnk"/>
-                            <constraint firstItem="Yib-mA-6Ou" firstAttribute="top" secondItem="3il-XM-fqj" secondAttribute="bottom" constant="2" id="TeL-Vw-ZDm"/>
+                            <constraint firstItem="Yib-mA-6Ou" firstAttribute="top" secondItem="3il-XM-fqj" secondAttribute="bottom" constant="5" id="TeL-Vw-ZDm"/>
                             <constraint firstItem="wbK-Jo-ZbH" firstAttribute="leading" secondItem="3il-XM-fqj" secondAttribute="trailing" constant="5" id="gE4-f5-Im6"/>
                             <constraint firstItem="bIp-3Q-l9m" firstAttribute="leading" secondItem="wbK-Jo-ZbH" secondAttribute="trailing" constant="6" id="ort-Rw-FuH"/>
                             <constraint firstAttribute="trailing" secondItem="bIp-3Q-l9m" secondAttribute="trailing" constant="10" id="rAH-2L-iRc"/>
@@ -118,6 +118,11 @@
                 <constraint firstAttribute="trailing" secondItem="ZgA-i1-RHm" secondAttribute="trailing" id="jjA-3j-GiE"/>
             </constraints>
             <size key="customSize" width="229" height="243"/>
+            <userDefinedRuntimeAttributes>
+                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                    <real key="value" value="5"/>
+                </userDefinedRuntimeAttribute>
+            </userDefinedRuntimeAttributes>
             <connections>
                 <outlet property="courseMessage" destination="Yib-mA-6Ou" id="hPM-ZS-6ZL"/>
                 <outlet property="courseTitle" destination="yCS-l4-WAt" id="1Wb-8W-iHt"/>

+ 17 - 6
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/VideoCourse/View/VideoListBodyView.m

@@ -8,6 +8,7 @@
 #import "VideoListBodyView.h"
 #import "VideoCourseCell.h"
 #import "VideoCourseModel.h"
+#import "KSBaseWKWebViewController.h"
 
 @interface VideoListBodyView ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
 
@@ -78,13 +79,13 @@
     self.pages = 1;
     self.rows = 10;
     if (self.selectIndex == 0) { // 已上架
-        self.audioStatus = @"1";
+        self.audioStatus = @"PASS";
     }
     else if (self.selectIndex == 1) { // 审核中
-        self.audioStatus = @"0";
+        self.audioStatus = @"DOING";
     }
     else if (self.selectIndex == 2) { // 审核失败
-        self.audioStatus = @"2";
+        self.audioStatus = @"UNPASS";
     }
     self.dataArray = [NSMutableArray array];
     [self.collectionView.mj_footer resetNoMoreData];
@@ -170,17 +171,27 @@
     VideoCourseCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"VideoCourseCell" forIndexPath:indexPath];
     
     VideoCourseModel *model = [self.dataArray objectAtIndex:indexPath.row];
-    BOOL isCheck = self.selectIndex == 1;
+    BOOL isCheck = self.selectIndex != 0;
     [cell configSourceModel:model isInCheck:isCheck];
     return cell;
 }
 
 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
-    
+    VideoCourseModel *model = [self.dataArray objectAtIndex:indexPath.row];
+    NSString *url = @"";
+    if (self.selectIndex == 2) {
+        url = [NSString stringWithFormat:@"%@%@%.0f", WEBHOST, @"/#/videoCreate?groupId=",model.internalBaseClassIdentifier];
+    }
+    else {
+        url = [NSString stringWithFormat:@"%@%@%.0f", WEBHOST, @"/#/videoDetail?groupId=",model.internalBaseClassIdentifier];
+    }
+    KSBaseWKWebViewController *ctrl = [[KSBaseWKWebViewController alloc] init];
+    ctrl.url = url;
+    [self.naviController pushViewController:ctrl animated:YES];
 }
 
 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
-    return CGSizeMake((kScreenWidth - 28 - 11) / 2.0f, 190);
+    return CGSizeMake((kScreenWidth - 28 - 11) / 2.0f, 200);
 }
 /**
  设置没有数据时的显示

+ 2 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineBodyView.h

@@ -30,6 +30,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface MineBodyView : UIView
 
+@property (nonatomic, assign) BOOL isShowTips;
+
 + (instancetype)shareInstance;
 
 - (void)operationCallback:(MineViewCallback)callback;

+ 12 - 4
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineBodyView.m

@@ -25,6 +25,7 @@
 @property (weak, nonatomic) IBOutlet UIView *starBgView;
 
 @property (weak, nonatomic) IBOutlet KSStarView *starView;
+@property (weak, nonatomic) IBOutlet UIButton *tipsButton;
 
 @property (nonatomic, copy) MineViewCallback callback;
 
@@ -50,17 +51,19 @@
 }
 
 - (void)configMessage:(TeacherInfo *)infoMessage {
-    if (infoMessage.entryStatus == 2) {
+    if ([infoMessage.entryStatus isEqualToString:@"PASS"]) {
         self.authView.hidden = YES;
         self.descView.hidden = NO;
         [self displayCount:infoMessage.fansNum inView:self.fansCount];
         [self displayCount:infoMessage.expTime inView:self.finishCourse];
         [self displayCount:infoMessage.unExpTime inView:self.unfinishCourse];
         self.starView.rate = infoMessage.starGrade / 5.0f;
+        self.tipsButton.hidden = YES;
     }
     else {
         self.authView.hidden = NO;
         self.descView.hidden = YES;
+        self.tipsButton.hidden = NO;
     }
     self.starView.rate = infoMessage.starGrade / 5.0f;
     if (![NSString isEmptyString:infoMessage.heardUrl]) {
@@ -70,13 +73,13 @@
         [self.userAvatal setImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
     }
     self.userName.text = [NSString returnNoNullStringWithString:infoMessage.username];
-    if (infoMessage.musicianAuthStatus == 1) {
+    if ([infoMessage.musicianAuthStatus isEqualToString:@"DOING"]) {
         self.musicianStatusLabel.text = @"审核中";
     }
-    else if (infoMessage.musicianAuthStatus == 2) {
+    else if ([infoMessage.musicianAuthStatus isEqualToString:@"PASS"]) {
         self.musicianStatusLabel.text = @"已认证";
     }
-    else if (infoMessage.musicianAuthStatus == 3) {
+    else if ([infoMessage.musicianAuthStatus isEqualToString:@"UNPASS"]) {
         self.musicianStatusLabel.text = @"审核失败";
     }
 }
@@ -102,6 +105,11 @@
 - (CGFloat)getViewHeight {
     return 90 + 15 + 190 + 15 + 250;
 }
+
+- (IBAction)hideTipsButton:(id)sender {
+    self.tipsButton.hidden = YES;
+}
+
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 6 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Mine/View/MineBodyView.xib

@@ -1,9 +1,9 @@
 <?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">
+<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="19519"/>
+        <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>
@@ -235,6 +235,9 @@
                                     </constraints>
                                     <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                     <state key="normal" image="auth_tips"/>
+                                    <connections>
+                                        <action selector="hideTipsButton:" destination="iN0-l3-epB" eventType="touchUpInside" id="T1T-gY-9FY"/>
+                                    </connections>
                                 </button>
                             </subviews>
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
@@ -854,6 +857,7 @@
                 <outlet property="musicianStatusLabel" destination="2lR-LA-fG9" id="wrq-5A-Auq"/>
                 <outlet property="starBgView" destination="kb3-97-shC" id="PuF-MY-igO"/>
                 <outlet property="starView" destination="U6R-K3-xDh" id="9Sg-aI-0Vf"/>
+                <outlet property="tipsButton" destination="H79-R9-H51" id="gwJ-hU-eCe"/>
                 <outlet property="unfinishCourse" destination="1mV-1f-bkA" id="1Zw-EG-WAH"/>
                 <outlet property="userAvatal" destination="L8h-ZO-2iV" id="nc8-ng-TZt"/>
                 <outlet property="userName" destination="dbv-tC-djl" id="ehT-78-jMF"/>

+ 3 - 3
KulexiuForTeacher/Podfile

@@ -33,10 +33,10 @@
   pod 'RongCloudIM/IMLib',  '~> 5.2.0'
   pod 'RongCloudIM/IMKit',  '~> 5.2.0'
   pod 'RongCloudIM/Sight',  '~> 5.2.0'
-  pod 'RongCloudRTC/RongRTCLib','~> 5.2.0'
-  pod 'RongCloudRTC/RongFaceBeautifier','~> 5.2.0'
+  pod 'RongCloudRTC/RongRTCLib','~> 5.2.1'
+  pod 'RongCloudRTC/RongFaceBeautifier','~> 5.2.1'
 #
-  # Pods for KulexiuForTeacher
+  # Pods for KulexiuForTeacher b
 
 
 end

+ 8 - 8
KulexiuForTeacher/Podfile.lock

@@ -49,9 +49,9 @@ PODS:
     - RongCloudIM/IMLibCore
   - RongCloudIM/Sight (5.2.0.1):
     - RongCloudIM/IMKit
-  - RongCloudRTC/RongFaceBeautifier (5.2.0):
+  - RongCloudRTC/RongFaceBeautifier (5.2.1):
     - RongCloudRTC/RongRTCLib
-  - RongCloudRTC/RongRTCLib (5.2.0):
+  - RongCloudRTC/RongRTCLib (5.2.1):
     - RongCloudIM/IMLibCore (>= 5.1.3)
   - RSKImageCropper (3.0.2)
   - SDWebImage (3.8.3):
@@ -104,8 +104,8 @@ DEPENDENCIES:
   - RongCloudIM/IMKit (~> 5.2.0)
   - RongCloudIM/IMLib (~> 5.2.0)
   - RongCloudIM/Sight (~> 5.2.0)
-  - RongCloudRTC/RongFaceBeautifier (~> 5.2.0)
-  - RongCloudRTC/RongRTCLib (~> 5.2.0)
+  - RongCloudRTC/RongFaceBeautifier (~> 5.2.1)
+  - RongCloudRTC/RongRTCLib (~> 5.2.1)
   - RSKImageCropper
   - SDWebImage (~> 3.8.2)
   - SocketRocket
@@ -147,7 +147,7 @@ SPEC CHECKSUMS:
   Bugly: afe841bba2ea6de6d432a3c125240a5e75949c55
   dsBridge: 48b62ee8a411ad601a88d6f6c8cf6cb634b206b7
   IQKeyboardManager: 241cc94ccabc9deb8f8bd7d12f00d73288d13ecc
-  JCore: b7c28cfc056f83ab8fb0208ef50e3b91103bcdc5
+  JCore: b9d49b2e5364cce65dec86056c60b1b72825893a
   JPush: 88d6361fbec4be7c8b55b20b7fe1c292228f6bc2
   JXCategoryView: 2ef9ecfd3735158d009ce02d1f29811aa822da65
   JXPagingView: 90924b364a2ff7e94db534fad1fa50925ff69ee4
@@ -157,7 +157,7 @@ SPEC CHECKSUMS:
   MJRefresh: ee5b68f639775462faba4db0fd243baf4d42c2cf
   Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
   RongCloudIM: 92b53cd215a397fba7413220411b49179043022d
-  RongCloudRTC: d68b5b91a51d378036d7de0b5fe836e1a93ede9f
+  RongCloudRTC: 0bda17440186a6174fe5871ba30030466cc19c3a
   RSKImageCropper: 1ac71e9a82e3f41eea3eedfff8eacb0d3821c9ec
   SDWebImage: a72e880a8fe0f7fc31efe15aaed443c074d2a80c
   SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
@@ -168,6 +168,6 @@ SPEC CHECKSUMS:
   Whiteboard: 16568e7e14f7f451d2aad2536f5fab9c06119934
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
 
-PODFILE CHECKSUM: f6853b6be87d0acc3bcb49d0f8bc0e26f9f664f2
+PODFILE CHECKSUM: 3866589e12e93bb01ab1d093c5dee8044b5b80f1
 
-COCOAPODS: 1.11.2
+COCOAPODS: 1.11.3

BIN
KulexiuForTeacher/Pods/JCore/libjcore-noidfa-ios-2.6.2.a


+ 8 - 8
KulexiuForTeacher/Pods/Manifest.lock

@@ -49,9 +49,9 @@ PODS:
     - RongCloudIM/IMLibCore
   - RongCloudIM/Sight (5.2.0.1):
     - RongCloudIM/IMKit
-  - RongCloudRTC/RongFaceBeautifier (5.2.0):
+  - RongCloudRTC/RongFaceBeautifier (5.2.1):
     - RongCloudRTC/RongRTCLib
-  - RongCloudRTC/RongRTCLib (5.2.0):
+  - RongCloudRTC/RongRTCLib (5.2.1):
     - RongCloudIM/IMLibCore (>= 5.1.3)
   - RSKImageCropper (3.0.2)
   - SDWebImage (3.8.3):
@@ -104,8 +104,8 @@ DEPENDENCIES:
   - RongCloudIM/IMKit (~> 5.2.0)
   - RongCloudIM/IMLib (~> 5.2.0)
   - RongCloudIM/Sight (~> 5.2.0)
-  - RongCloudRTC/RongFaceBeautifier (~> 5.2.0)
-  - RongCloudRTC/RongRTCLib (~> 5.2.0)
+  - RongCloudRTC/RongFaceBeautifier (~> 5.2.1)
+  - RongCloudRTC/RongRTCLib (~> 5.2.1)
   - RSKImageCropper
   - SDWebImage (~> 3.8.2)
   - SocketRocket
@@ -147,7 +147,7 @@ SPEC CHECKSUMS:
   Bugly: afe841bba2ea6de6d432a3c125240a5e75949c55
   dsBridge: 48b62ee8a411ad601a88d6f6c8cf6cb634b206b7
   IQKeyboardManager: 241cc94ccabc9deb8f8bd7d12f00d73288d13ecc
-  JCore: b7c28cfc056f83ab8fb0208ef50e3b91103bcdc5
+  JCore: b9d49b2e5364cce65dec86056c60b1b72825893a
   JPush: 88d6361fbec4be7c8b55b20b7fe1c292228f6bc2
   JXCategoryView: 2ef9ecfd3735158d009ce02d1f29811aa822da65
   JXPagingView: 90924b364a2ff7e94db534fad1fa50925ff69ee4
@@ -157,7 +157,7 @@ SPEC CHECKSUMS:
   MJRefresh: ee5b68f639775462faba4db0fd243baf4d42c2cf
   Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
   RongCloudIM: 92b53cd215a397fba7413220411b49179043022d
-  RongCloudRTC: d68b5b91a51d378036d7de0b5fe836e1a93ede9f
+  RongCloudRTC: 0bda17440186a6174fe5871ba30030466cc19c3a
   RSKImageCropper: 1ac71e9a82e3f41eea3eedfff8eacb0d3821c9ec
   SDWebImage: a72e880a8fe0f7fc31efe15aaed443c074d2a80c
   SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
@@ -168,6 +168,6 @@ SPEC CHECKSUMS:
   Whiteboard: 16568e7e14f7f451d2aad2536f5fab9c06119934
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
 
-PODFILE CHECKSUM: f6853b6be87d0acc3bcb49d0f8bc0e26f9f664f2
+PODFILE CHECKSUM: 3866589e12e93bb01ab1d093c5dee8044b5b80f1
 
-COCOAPODS: 1.11.2
+COCOAPODS: 1.11.3

+ 10 - 10
KulexiuForTeacher/Pods/Pods.xcodeproj/project.pbxproj

@@ -833,7 +833,6 @@
 		0D50691FE288B5DFC210C9D523771E09 /* IQUIView+Hierarchy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "IQUIView+Hierarchy.h"; path = "IQKeyboardManager/Categories/IQUIView+Hierarchy.h"; sourceTree = "<group>"; };
 		0E138E15352E962A4A89EC94BE8599C4 /* SRHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRHash.h; path = SocketRocket/Internal/Utilities/SRHash.h; sourceTree = "<group>"; };
 		0E47185B8128B4C91AFE82C4ED877505 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = "<group>"; };
-		0E5A6B1A755D8B2737FD66BD0EB81FAD /* libjcore-noidfa-ios-2.6.2.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; path = "libjcore-noidfa-ios-2.6.2.a"; sourceTree = "<group>"; };
 		0E66E8603962F896723903EF142B4776 /* JXCategoryImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageView.m; path = Sources/Image/JXCategoryImageView.m; sourceTree = "<group>"; };
 		0EA5B07F720981667A710285227FED54 /* RongSight.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; name = RongSight.xcframework; path = RongCloudIM/RongSight.xcframework; sourceTree = "<group>"; };
 		0EAE5A92902D39FFD5C57168340A95DE /* JXCategoryFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryFactory.m; path = Sources/Common/JXCategoryFactory.m; sourceTree = "<group>"; };
@@ -1064,6 +1063,7 @@
 		6857ADA4DCAA7D35903AD9D4AB8BEF9F /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = "<group>"; };
 		688BAC7C647319BCA9F29B0AA70E8F5E /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = "<group>"; };
 		68B2B3FEC3EFA3E6AA0337C435F4D7EA /* JXPagerListRefreshView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerListRefreshView.h; path = Sources/JXPagerView/JXPagerListRefreshView.h; sourceTree = "<group>"; };
+		69FFB86438E7A07B2F4EA90CDFC33097 /* libjcore-noidfa-ios-2.7.1.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; path = "libjcore-noidfa-ios-2.7.1.a"; sourceTree = "<group>"; };
 		6A7D82A0A216EC9A141E2A7676419707 /* SSZipArchive-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SSZipArchive-prefix.pch"; sourceTree = "<group>"; };
 		6AA9AB5F4C8A598522C6E1F94AF93390 /* JPush.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JPush.release.xcconfig; sourceTree = "<group>"; };
 		6B1ABCE52C95B339CA9D3385B4AD0149 /* JXCategoryBaseCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseCellModel.h; path = Sources/Base/JXCategoryBaseCellModel.h; sourceTree = "<group>"; };
@@ -2404,6 +2404,14 @@
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
+		84CFD72E4B12991E33361009BA9943AD /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				69FFB86438E7A07B2F4EA90CDFC33097 /* libjcore-noidfa-ios-2.7.1.a */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
 		85FBDFA9134B39E39DA235CC94F70D6F /* AFNetworking */ = {
 			isa = PBXGroup;
 			children = (
@@ -2465,7 +2473,7 @@
 		917F8313E8D593F8557BA6C4A6CBE708 /* JCore */ = {
 			isa = PBXGroup;
 			children = (
-				F2DDAB49714FD6227BB02259F8D7733F /* Frameworks */,
+				84CFD72E4B12991E33361009BA9943AD /* Frameworks */,
 				14EF0FBA26D136B9C45CC0ECC373DB9B /* Support Files */,
 			);
 			name = JCore;
@@ -2984,14 +2992,6 @@
 			name = Resources;
 			sourceTree = "<group>";
 		};
-		F2DDAB49714FD6227BB02259F8D7733F /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				0E5A6B1A755D8B2737FD66BD0EB81FAD /* libjcore-noidfa-ios-2.6.2.a */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
 		F69687E169CE19BDA918B3F0723A0B80 /* Bugly */ = {
 			isa = PBXGroup;
 			children = (

+ 105 - 51
KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -4,136 +4,190 @@
 <dict>
 	<key>SchemeUserState</key>
 	<dict>
-		<key>AFNetworking.xcscheme_^#shared#^_</key>
+		<key>AFNetworking.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>9</integer>
+			<integer>0</integer>
 		</dict>
-		<key>Bugly.xcscheme_^#shared#^_</key>
+		<key>Bugly.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>5</integer>
+			<integer>1</integer>
 		</dict>
-		<key>IQKeyboardManager.xcscheme_^#shared#^_</key>
+		<key>IQKeyboardManager.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>25</integer>
+			<integer>3</integer>
 		</dict>
-		<key>JCore.xcscheme_^#shared#^_</key>
+		<key>JCore.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>15</integer>
+			<integer>4</integer>
 		</dict>
-		<key>JPush.xcscheme_^#shared#^_</key>
+		<key>JPush.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>1</integer>
+			<integer>5</integer>
 		</dict>
-		<key>JXCategoryView.xcscheme_^#shared#^_</key>
+		<key>JXCategoryView.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>21</integer>
+			<integer>6</integer>
 		</dict>
-		<key>JXPagingView.xcscheme_^#shared#^_</key>
+		<key>JXPagingView.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>17</integer>
+			<integer>7</integer>
 		</dict>
-		<key>MBProgressHUD.xcscheme_^#shared#^_</key>
+		<key>MBProgressHUD.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>10</integer>
+			<integer>9</integer>
 		</dict>
-		<key>MJExtension.xcscheme_^#shared#^_</key>
+		<key>MJExtension.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>7</integer>
+			<integer>10</integer>
 		</dict>
-		<key>MJRefresh.xcscheme_^#shared#^_</key>
+		<key>MJRefresh.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>13</integer>
+			<integer>11</integer>
 		</dict>
-		<key>Masonry.xcscheme_^#shared#^_</key>
+		<key>Masonry.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>19</integer>
+			<integer>8</integer>
 		</dict>
-		<key>Pods-KulexiuForTeacher.xcscheme_^#shared#^_</key>
+		<key>Pods-KulexiuForTeacher.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>22</integer>
+			<integer>12</integer>
 		</dict>
-		<key>RSKImageCropper.xcscheme_^#shared#^_</key>
+		<key>RSKImageCropper.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>12</integer>
+			<integer>16</integer>
 		</dict>
-		<key>Reachability.xcscheme_^#shared#^_</key>
+		<key>Reachability.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>4</integer>
+			<integer>13</integer>
 		</dict>
-		<key>RongCloudIM.xcscheme_^#shared#^_</key>
+		<key>RongCloudIM.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>24</integer>
+			<integer>14</integer>
 		</dict>
-		<key>RongCloudRTC.xcscheme_^#shared#^_</key>
+		<key>RongCloudRTC.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>16</integer>
+			<integer>15</integer>
 		</dict>
-		<key>SDWebImage.xcscheme_^#shared#^_</key>
+		<key>SDWebImage.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>8</integer>
+			<integer>17</integer>
 		</dict>
-		<key>SSZipArchive.xcscheme_^#shared#^_</key>
+		<key>SSZipArchive.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>11</integer>
+			<integer>19</integer>
 		</dict>
-		<key>SocketRocket.xcscheme_^#shared#^_</key>
+		<key>SocketRocket.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
 			<integer>18</integer>
 		</dict>
-		<key>UMAPM.xcscheme_^#shared#^_</key>
+		<key>UMAPM.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>0</integer>
+			<integer>20</integer>
 		</dict>
-		<key>UMCommon.xcscheme_^#shared#^_</key>
+		<key>UMCommon.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>20</integer>
+			<integer>21</integer>
 		</dict>
-		<key>UMDevice.xcscheme_^#shared#^_</key>
+		<key>UMDevice.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>23</integer>
+			<integer>22</integer>
 		</dict>
-		<key>Whiteboard-Whiteboard.xcscheme_^#shared#^_</key>
+		<key>Whiteboard-Whiteboard.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>2</integer>
+			<integer>24</integer>
 		</dict>
-		<key>Whiteboard.xcscheme_^#shared#^_</key>
+		<key>Whiteboard.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>26</integer>
+			<integer>23</integer>
 		</dict>
-		<key>YYModel.xcscheme_^#shared#^_</key>
+		<key>YYModel.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>3</integer>
+			<integer>25</integer>
 		</dict>
-		<key>dsBridge.xcscheme_^#shared#^_</key>
+		<key>dsBridge.xcscheme</key>
 		<dict>
+			<key>isShown</key>
+			<false/>
 			<key>orderHint</key>
-			<integer>14</integer>
+			<integer>2</integer>
 		</dict>
 	</dict>
+	<key>SuppressBuildableAutocreation</key>
+	<dict/>
 </dict>
 </plist>

BIN
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-arm64_armv7/RongFaceBeautifier.framework/Info.plist


BIN
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-arm64_armv7/RongFaceBeautifier.framework/RongFaceBeautifier


+ 1 - 1
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-arm64_armv7/RongFaceBeautifier.framework/_CodeSignature/CodeResources

@@ -22,7 +22,7 @@
 		</data>
 		<key>Info.plist</key>
 		<data>
-		b3iBo2axs6Qd+I2H4xp+aX9L3Fs=
+		xYjcCq6JxPUwhNtMDh6+O9sIcFs=
 		</data>
 		<key>Modules/module.modulemap</key>
 		<data>

BIN
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-x86_64-simulator/RongFaceBeautifier.framework/Info.plist


BIN
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-x86_64-simulator/RongFaceBeautifier.framework/RongFaceBeautifier


+ 1 - 1
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongFaceBeautifier.xcframework/ios-x86_64-simulator/RongFaceBeautifier.framework/_CodeSignature/CodeResources

@@ -22,7 +22,7 @@
 		</data>
 		<key>Info.plist</key>
 		<data>
-		kYwOc8C9krU3oevi/9r9IDrwfkg=
+		4d0AOPH/FM/OZIL2NHJ+jnogb5w=
 		</data>
 		<key>Modules/module.modulemap</key>
 		<data>

+ 7 - 7
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/Info.plist

@@ -6,30 +6,30 @@
 	<array>
 		<dict>
 			<key>LibraryIdentifier</key>
-			<string>ios-x86_64-simulator</string>
+			<string>ios-arm64_armv7</string>
 			<key>LibraryPath</key>
 			<string>RongRTCLib.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
-				<string>x86_64</string>
+				<string>arm64</string>
+				<string>armv7</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
-			<key>SupportedPlatformVariant</key>
-			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_armv7</string>
+			<string>ios-x86_64-simulator</string>
 			<key>LibraryPath</key>
 			<string>RongRTCLib.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
-				<string>arm64</string>
-				<string>armv7</string>
+				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
 		</dict>
 	</array>
 	<key>CFBundlePackageType</key>

+ 4 - 4
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-arm64_armv7/RongRTCLib.framework/Headers/RCRTCLocalUser.h

@@ -283,7 +283,7 @@ NS_ASSUME_NONNULL_BEGIN
  
  @param inviteeRoomId 被邀请人所在房间号
  @param inviteeUserId 被邀请人userId
- @param autoMix 是否将邀请人音视频资源发送到被邀请人房间中合流
+ @param autoMix 是否将被邀请人音视频资源合流到邀请人房间中
  @param extra 附加信息, 可随消息发送给被邀请人
  @param completion 完成的回调
  @discussion
@@ -302,7 +302,7 @@ NS_ASSUME_NONNULL_BEGIN
  
  @param inviteeRoomId 被邀请人所在房间号
  @param inviteeUserId 被邀请人userId
- @param autoMix 是否将邀请人音视频资源发送到被邀请人房间中合流
+ @param autoMix 是否将被邀请人音视频资源合流到邀请人房间中
  @param extra 附加信息, 可随消息发送给被邀请人
  @param completion 完成的回调
  @discussion
@@ -356,7 +356,7 @@ NS_ASSUME_NONNULL_BEGIN
  @param inviterRoomId 邀请人所在的房间号
  @param inviterUserId 邀请人userId
  @param agree 是否同意加入副房间
- @param autoMix 是否将被邀请人音视频资源发送到邀请人房间中合流
+ @param autoMix 是否将邀请人音视频资源合流到被邀请人(响应邀请的人)房间中
  @param extra 附加信息, 可随消息发送给邀请人
  @param completion 完成的回调
  @discussion
@@ -377,7 +377,7 @@ NS_ASSUME_NONNULL_BEGIN
  @param inviterRoomId 邀请人所在的房间号
  @param inviterUserId 邀请人userId
  @param agree 是否同意加入副房间
- @param autoMix 是否将被邀请人音视频资源发送到邀请人房间中合流
+ @param autoMix 是否将邀请人音视频资源合流到被邀请人(响应邀请的人)房间中
  @param extra 附加信息, 可随消息发送给邀请人
  @param completion 完成的回调
  @discussion

BIN
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-arm64_armv7/RongRTCLib.framework/Info.plist


BIN
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-arm64_armv7/RongRTCLib.framework/RongRTCLib


+ 4 - 4
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-arm64_armv7/RongRTCLib.framework/_CodeSignature/CodeResources

@@ -106,7 +106,7 @@
 		</data>
 		<key>Headers/RCRTCLocalUser.h</key>
 		<data>
-		eeARQ+eAF+NjCgK5RLu9c9nCoZI=
+		V07gqERBiW4MPIvcwZJKJyrpboU=
 		</data>
 		<key>Headers/RCRTCLocalVideoView.h</key>
 		<data>
@@ -246,7 +246,7 @@
 		</data>
 		<key>Info.plist</key>
 		<data>
-		VWKBhaPYqsG4AXHsh5ZVULyiHPI=
+		9i3znfKB1CrQjld4q6mkWjzhWjQ=
 		</data>
 		<key>Modules/module.modulemap</key>
 		<data>
@@ -534,11 +534,11 @@
 		<dict>
 			<key>hash</key>
 			<data>
-			eeARQ+eAF+NjCgK5RLu9c9nCoZI=
+			V07gqERBiW4MPIvcwZJKJyrpboU=
 			</data>
 			<key>hash2</key>
 			<data>
-			hR0ZatH0x0wLiTWNLts01Yq70YRDIrBr3GoywXDjy0U=
+			5WBg6Wc7ObbRvCtLmiw6ndqVbeNNHjAvB92/8mqmDDI=
 			</data>
 		</dict>
 		<key>Headers/RCRTCLocalVideoView.h</key>

+ 4 - 4
KulexiuForTeacher/Pods/RongCloudRTC/RongCloudRTC/RongRTCLib.xcframework/ios-x86_64-simulator/RongRTCLib.framework/Headers/RCRTCLocalUser.h

@@ -283,7 +283,7 @@ NS_ASSUME_NONNULL_BEGIN
  
  @param inviteeRoomId 被邀请人所在房间号
  @param inviteeUserId 被邀请人userId
- @param autoMix 是否将邀请人音视频资源发送到被邀请人房间中合流
+ @param autoMix 是否将被邀请人音视频资源合流到邀请人房间中
  @param extra 附加信息, 可随消息发送给被邀请人
  @param completion 完成的回调
  @discussion
@@ -302,7 +302,7 @@ NS_ASSUME_NONNULL_BEGIN
  
  @param inviteeRoomId 被邀请人所在房间号
  @param inviteeUserId 被邀请人userId
- @param autoMix 是否将邀请人音视频资源发送到被邀请人房间中合流
+ @param autoMix 是否将被邀请人音视频资源合流到邀请人房间中
  @param extra 附加信息, 可随消息发送给被邀请人
  @param completion 完成的回调
  @discussion
@@ -356,7 +356,7 @@ NS_ASSUME_NONNULL_BEGIN
  @param inviterRoomId 邀请人所在的房间号
  @param inviterUserId 邀请人userId
  @param agree 是否同意加入副房间
- @param autoMix 是否将被邀请人音视频资源发送到邀请人房间中合流
+ @param autoMix 是否将邀请人音视频资源合流到被邀请人(响应邀请的人)房间中
  @param extra 附加信息, 可随消息发送给邀请人
  @param completion 完成的回调
  @discussion
@@ -377,7 +377,7 @@ NS_ASSUME_NONNULL_BEGIN
  @param inviterRoomId 邀请人所在的房间号
  @param inviterUserId 邀请人userId
  @param agree 是否同意加入副房间
- @param autoMix 是否将被邀请人音视频资源发送到邀请人房间中合流
+ @param autoMix 是否将邀请人音视频资源合流到被邀请人(响应邀请的人)房间中
  @param extra 附加信息, 可随消息发送给邀请人
  @param completion 完成的回调
  @discussion

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels