Browse Source

动效功能

Steven 2 years ago
parent
commit
3b5f900c22
68 changed files with 3211 additions and 1964 deletions
  1. 221 5
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate
  3. 28 12
      KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 32 24
      KulexiuForTeacher/KulexiuForTeacher/AppDelegate.m
  5. 1 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h
  6. 26 1
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSTabBarViewController.m
  7. 22 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/AnimationHelper.h
  8. 37 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/AnimationHelper.m
  9. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar1.json
  10. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar2.json
  11. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar3.json
  12. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar4.json
  13. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar5.json
  14. 14 14
      KulexiuForTeacher/KulexiuForTeacher/Common/Define/PrefixHeader.pch
  15. 97 38
      KulexiuForTeacher/KulexiuForTeacher/Common/Tools/GifRefresh/KSGifRefreshFooter.m
  16. 92 24
      KulexiuForTeacher/KulexiuForTeacher/Common/Tools/GifRefresh/KSGifRefreshHeader.m
  17. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Common/Tools/GifRefresh/teacher_refresh.json
  18. 1 1
      KulexiuForTeacher/KulexiuForTeacher/KulexiuForTeacher.entitlements
  19. 20 0
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Controller/LaunchAnimationViewController.h
  20. 78 0
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Controller/LaunchAnimationViewController.m
  21. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_0.png
  22. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_1.png
  23. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_10.png
  24. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_11.png
  25. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_12.png
  26. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_13.png
  27. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_14.png
  28. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_15.png
  29. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_16.png
  30. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_17.png
  31. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_18.png
  32. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_19.png
  33. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_2.png
  34. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_20.png
  35. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_21.png
  36. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_22.png
  37. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_23.png
  38. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_24.png
  39. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_25.png
  40. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_26.png
  41. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_27.png
  42. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_28.png
  43. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_29.png
  44. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_3.png
  45. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_30.png
  46. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_31.png
  47. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_4.png
  48. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_5.png
  49. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_6.png
  50. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_7.png
  51. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_8.png
  52. BIN
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_9.png
  53. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/launchAni.json
  54. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/Controller/KSShareChooseViewController.h
  55. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/Controller/KSShareChooseViewController.m
  56. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/Controller/KSShareGroupViewController.h
  57. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/Controller/KSShareGroupViewController.m
  58. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/View/ShareChooseMainView.h
  59. 0 0
      KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/View/ShareChooseMainView.m
  60. 3 1
      KulexiuForTeacher/Podfile
  61. 5 1
      KulexiuForTeacher/Podfile.lock
  62. 5 1
      KulexiuForTeacher/Pods/Manifest.lock
  63. 2104 1833
      KulexiuForTeacher/Pods/Pods.xcodeproj/project.pbxproj
  64. 5 0
      KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist
  65. 205 0
      KulexiuForTeacher/Pods/Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher-acknowledgements.markdown
  66. 211 0
      KulexiuForTeacher/Pods/Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher-acknowledgements.plist
  67. 2 4
      KulexiuForTeacher/Pods/Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher.debug.xcconfig
  68. 2 4
      KulexiuForTeacher/Pods/Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher.release.xcconfig

+ 221 - 5
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -553,6 +553,47 @@
 		BC60E3C0287D447F00B05441 /* DeleteAccountBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC60E3BF287D447F00B05441 /* DeleteAccountBodyView.m */; };
 		BC60E3C2287D448600B05441 /* DeleteAccountBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC60E3C1287D448600B05441 /* DeleteAccountBodyView.xib */; };
 		BC6C303A27F586A60044BC0F /* KSRCMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC6C303927F586A60044BC0F /* KSRCMessageModel.m */; };
+		BC71D1332887ADDA0010F14B /* teacher_refresh.json in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1322887ADDA0010F14B /* teacher_refresh.json */; };
+		BC71D1A62887FDAC0010F14B /* LaunchAnimationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC71D1802887FDAB0010F14B /* LaunchAnimationViewController.m */; };
+		BC71D1EA2887FDD40010F14B /* img_10.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1C92887FDD40010F14B /* img_10.png */; };
+		BC71D1EB2887FDD40010F14B /* img_1.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1CA2887FDD40010F14B /* img_1.png */; };
+		BC71D1EC2887FDD40010F14B /* img_0.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1CB2887FDD40010F14B /* img_0.png */; };
+		BC71D1ED2887FDD40010F14B /* img_11.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1CC2887FDD40010F14B /* img_11.png */; };
+		BC71D1EE2887FDD40010F14B /* img_13.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1CD2887FDD40010F14B /* img_13.png */; };
+		BC71D1EF2887FDD40010F14B /* img_2.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1CE2887FDD40010F14B /* img_2.png */; };
+		BC71D1F02887FDD40010F14B /* img_3.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1CF2887FDD40010F14B /* img_3.png */; };
+		BC71D1F12887FDD40010F14B /* img_12.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D02887FDD40010F14B /* img_12.png */; };
+		BC71D1F22887FDD40010F14B /* img_16.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D12887FDD40010F14B /* img_16.png */; };
+		BC71D1F32887FDD40010F14B /* img_7.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D22887FDD40010F14B /* img_7.png */; };
+		BC71D1F42887FDD40010F14B /* img_6.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D32887FDD40010F14B /* img_6.png */; };
+		BC71D1F52887FDD40010F14B /* img_17.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D42887FDD40010F14B /* img_17.png */; };
+		BC71D1F62887FDD40010F14B /* img_29.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D52887FDD40010F14B /* img_29.png */; };
+		BC71D1F72887FDD40010F14B /* img_15.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D62887FDD40010F14B /* img_15.png */; };
+		BC71D1F82887FDD40010F14B /* img_4.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D72887FDD40010F14B /* img_4.png */; };
+		BC71D1F92887FDD40010F14B /* img_5.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D82887FDD40010F14B /* img_5.png */; };
+		BC71D1FA2887FDD40010F14B /* img_14.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1D92887FDD40010F14B /* img_14.png */; };
+		BC71D1FB2887FDD40010F14B /* img_28.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1DA2887FDD40010F14B /* img_28.png */; };
+		BC71D1FC2887FDD40010F14B /* img_25.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1DB2887FDD40010F14B /* img_25.png */; };
+		BC71D1FD2887FDD40010F14B /* img_31.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1DC2887FDD40010F14B /* img_31.png */; };
+		BC71D1FE2887FDD40010F14B /* img_19.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1DD2887FDD40010F14B /* img_19.png */; };
+		BC71D1FF2887FDD40010F14B /* img_8.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1DE2887FDD40010F14B /* img_8.png */; };
+		BC71D2002887FDD40010F14B /* img_9.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1DF2887FDD40010F14B /* img_9.png */; };
+		BC71D2012887FDD40010F14B /* img_18.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E02887FDD40010F14B /* img_18.png */; };
+		BC71D2022887FDD40010F14B /* img_30.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E12887FDD40010F14B /* img_30.png */; };
+		BC71D2032887FDD40010F14B /* img_24.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E22887FDD40010F14B /* img_24.png */; };
+		BC71D2042887FDD40010F14B /* img_26.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E32887FDD40010F14B /* img_26.png */; };
+		BC71D2052887FDD40010F14B /* img_27.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E42887FDD40010F14B /* img_27.png */; };
+		BC71D2062887FDD40010F14B /* img_23.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E52887FDD40010F14B /* img_23.png */; };
+		BC71D2072887FDD40010F14B /* img_22.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E62887FDD40010F14B /* img_22.png */; };
+		BC71D2082887FDD40010F14B /* img_20.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E72887FDD40010F14B /* img_20.png */; };
+		BC71D2092887FDD40010F14B /* img_21.png in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E82887FDD40010F14B /* img_21.png */; };
+		BC71D20A2887FDD40010F14B /* launchAni.json in Resources */ = {isa = PBXBuildFile; fileRef = BC71D1E92887FDD40010F14B /* launchAni.json */; };
+		BC71D292288811BF0010F14B /* tabbar1.json in Resources */ = {isa = PBXBuildFile; fileRef = BC71D28B288811BF0010F14B /* tabbar1.json */; };
+		BC71D293288811BF0010F14B /* AnimationHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = BC71D28C288811BF0010F14B /* AnimationHelper.m */; };
+		BC71D294288811BF0010F14B /* tabbar5.json in Resources */ = {isa = PBXBuildFile; fileRef = BC71D28D288811BF0010F14B /* tabbar5.json */; };
+		BC71D295288811BF0010F14B /* tabbar4.json in Resources */ = {isa = PBXBuildFile; fileRef = BC71D28E288811BF0010F14B /* tabbar4.json */; };
+		BC71D296288811BF0010F14B /* tabbar3.json in Resources */ = {isa = PBXBuildFile; fileRef = BC71D28F288811BF0010F14B /* tabbar3.json */; };
+		BC71D297288811BF0010F14B /* tabbar2.json in Resources */ = {isa = PBXBuildFile; fileRef = BC71D290288811BF0010F14B /* tabbar2.json */; };
 		BC73A1F42809693F00FA8F6F /* EvaluateSortView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC73A1F32809693F00FA8F6F /* EvaluateSortView.xib */; };
 		BC76146A280D4F670080FD1F /* HomeworkDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC761468280D4F660080FD1F /* HomeworkDetailModel.m */; };
 		BC76146D280D571B0080FD1F /* HomeworkVideoView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC76146C280D571B0080FD1F /* HomeworkVideoView.m */; };
@@ -1873,6 +1914,49 @@
 		BC60E3C1287D448600B05441 /* DeleteAccountBodyView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DeleteAccountBodyView.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>"; };
+		BC71D1322887ADDA0010F14B /* teacher_refresh.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = teacher_refresh.json; sourceTree = "<group>"; };
+		BC71D1802887FDAB0010F14B /* LaunchAnimationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LaunchAnimationViewController.m; sourceTree = "<group>"; };
+		BC71D1812887FDAB0010F14B /* LaunchAnimationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LaunchAnimationViewController.h; sourceTree = "<group>"; };
+		BC71D1C92887FDD40010F14B /* img_10.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_10.png; sourceTree = "<group>"; };
+		BC71D1CA2887FDD40010F14B /* img_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_1.png; sourceTree = "<group>"; };
+		BC71D1CB2887FDD40010F14B /* img_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_0.png; sourceTree = "<group>"; };
+		BC71D1CC2887FDD40010F14B /* img_11.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_11.png; sourceTree = "<group>"; };
+		BC71D1CD2887FDD40010F14B /* img_13.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_13.png; sourceTree = "<group>"; };
+		BC71D1CE2887FDD40010F14B /* img_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_2.png; sourceTree = "<group>"; };
+		BC71D1CF2887FDD40010F14B /* img_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_3.png; sourceTree = "<group>"; };
+		BC71D1D02887FDD40010F14B /* img_12.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_12.png; sourceTree = "<group>"; };
+		BC71D1D12887FDD40010F14B /* img_16.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_16.png; sourceTree = "<group>"; };
+		BC71D1D22887FDD40010F14B /* img_7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_7.png; sourceTree = "<group>"; };
+		BC71D1D32887FDD40010F14B /* img_6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_6.png; sourceTree = "<group>"; };
+		BC71D1D42887FDD40010F14B /* img_17.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_17.png; sourceTree = "<group>"; };
+		BC71D1D52887FDD40010F14B /* img_29.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_29.png; sourceTree = "<group>"; };
+		BC71D1D62887FDD40010F14B /* img_15.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_15.png; sourceTree = "<group>"; };
+		BC71D1D72887FDD40010F14B /* img_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_4.png; sourceTree = "<group>"; };
+		BC71D1D82887FDD40010F14B /* img_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_5.png; sourceTree = "<group>"; };
+		BC71D1D92887FDD40010F14B /* img_14.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_14.png; sourceTree = "<group>"; };
+		BC71D1DA2887FDD40010F14B /* img_28.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_28.png; sourceTree = "<group>"; };
+		BC71D1DB2887FDD40010F14B /* img_25.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_25.png; sourceTree = "<group>"; };
+		BC71D1DC2887FDD40010F14B /* img_31.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_31.png; sourceTree = "<group>"; };
+		BC71D1DD2887FDD40010F14B /* img_19.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_19.png; sourceTree = "<group>"; };
+		BC71D1DE2887FDD40010F14B /* img_8.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_8.png; sourceTree = "<group>"; };
+		BC71D1DF2887FDD40010F14B /* img_9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_9.png; sourceTree = "<group>"; };
+		BC71D1E02887FDD40010F14B /* img_18.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_18.png; sourceTree = "<group>"; };
+		BC71D1E12887FDD40010F14B /* img_30.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_30.png; sourceTree = "<group>"; };
+		BC71D1E22887FDD40010F14B /* img_24.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_24.png; sourceTree = "<group>"; };
+		BC71D1E32887FDD40010F14B /* img_26.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_26.png; sourceTree = "<group>"; };
+		BC71D1E42887FDD40010F14B /* img_27.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_27.png; sourceTree = "<group>"; };
+		BC71D1E52887FDD40010F14B /* img_23.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_23.png; sourceTree = "<group>"; };
+		BC71D1E62887FDD40010F14B /* img_22.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_22.png; sourceTree = "<group>"; };
+		BC71D1E72887FDD40010F14B /* img_20.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_20.png; sourceTree = "<group>"; };
+		BC71D1E82887FDD40010F14B /* img_21.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_21.png; sourceTree = "<group>"; };
+		BC71D1E92887FDD40010F14B /* launchAni.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = launchAni.json; sourceTree = "<group>"; };
+		BC71D28B288811BF0010F14B /* tabbar1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = tabbar1.json; sourceTree = "<group>"; };
+		BC71D28C288811BF0010F14B /* AnimationHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnimationHelper.m; sourceTree = "<group>"; };
+		BC71D28D288811BF0010F14B /* tabbar5.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = tabbar5.json; sourceTree = "<group>"; };
+		BC71D28E288811BF0010F14B /* tabbar4.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = tabbar4.json; sourceTree = "<group>"; };
+		BC71D28F288811BF0010F14B /* tabbar3.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = tabbar3.json; sourceTree = "<group>"; };
+		BC71D290288811BF0010F14B /* tabbar2.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = tabbar2.json; sourceTree = "<group>"; };
+		BC71D291288811BF0010F14B /* AnimationHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationHelper.h; sourceTree = "<group>"; };
 		BC73A1F32809693F00FA8F6F /* EvaluateSortView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EvaluateSortView.xib; sourceTree = "<group>"; };
 		BC761468280D4F660080FD1F /* HomeworkDetailModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeworkDetailModel.m; sourceTree = "<group>"; };
 		BC761469280D4F660080FD1F /* HomeworkDetailModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeworkDetailModel.h; sourceTree = "<group>"; };
@@ -2811,6 +2895,7 @@
 		2779309627E30F2D0010E277 /* Base */ = {
 			isa = PBXGroup;
 			children = (
+				BC71D28A288811BF0010F14B /* TabbarAnimation */,
 				BC023801286594EA005560CA /* KSTipsAlert.h */,
 				BC023800286594EA005560CA /* KSTipsAlert.m */,
 				BC0237FF286594EA005560CA /* KSTipsAlert.xib */,
@@ -2994,10 +3079,11 @@
 		277930BC27E30FBC0010E277 /* GifRefresh */ = {
 			isa = PBXGroup;
 			children = (
-				277930BD27E30FBC0010E277 /* KSGifRefreshHeader.m */,
-				277930BE27E30FBC0010E277 /* KSGifRefreshFooter.m */,
+				BC71D1322887ADDA0010F14B /* teacher_refresh.json */,
 				277930BF27E30FBC0010E277 /* KSGifRefreshFooter.h */,
+				277930BE27E30FBC0010E277 /* KSGifRefreshFooter.m */,
 				277930C027E30FBC0010E277 /* KSGifRefreshHeader.h */,
+				277930BD27E30FBC0010E277 /* KSGifRefreshHeader.m */,
 			);
 			path = GifRefresh;
 			sourceTree = "<group>";
@@ -3546,10 +3632,10 @@
 		277935D927E325B90010E277 /* Module */ = {
 			isa = PBXGroup;
 			children = (
+				BC71D17E2887FDAB0010F14B /* AnimationLaunch */,
 				BC24570E286C437D00D1F7C0 /* SoundFontFile */,
 				BC245708286C436E00D1F7C0 /* beat */,
 				BC2456FB286C434800D1F7C0 /* MidiPlayer */,
-				BCB908FE2851BE8700F5FF69 /* ShareInChat */,
 				BCB633D527F6A18100ACFDCF /* Classroom */,
 				BCC9F35A27F69BD100647449 /* SealClass */,
 				27D83F4327F3EBAA00062476 /* Live */,
@@ -4544,6 +4630,7 @@
 		BC2456FB286C434800D1F7C0 /* MidiPlayer */ = {
 			isa = PBXGroup;
 			children = (
+				BCB908FE2851BE8700F5FF69 /* ShareInChat */,
 				BC245703286C434800D1F7C0 /* CAudioUnit.h */,
 				BC2456FF286C434800D1F7C0 /* CAudioUnit.m */,
 				BC2456FE286C434800D1F7C0 /* CoreAudioUtils.c */,
@@ -4828,6 +4915,94 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		BC71D17E2887FDAB0010F14B /* AnimationLaunch */ = {
+			isa = PBXGroup;
+			children = (
+				BC71D17F2887FDAB0010F14B /* Controller */,
+				BC71D1822887FDAB0010F14B /* Model */,
+				BC71D1A52887FDAB0010F14B /* View */,
+			);
+			path = AnimationLaunch;
+			sourceTree = "<group>";
+		};
+		BC71D17F2887FDAB0010F14B /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+				BC71D1802887FDAB0010F14B /* LaunchAnimationViewController.m */,
+				BC71D1812887FDAB0010F14B /* LaunchAnimationViewController.h */,
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
+		BC71D1822887FDAB0010F14B /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				BC71D1E92887FDD40010F14B /* launchAni.json */,
+				BC71D1C82887FDD40010F14B /* images */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		BC71D1A52887FDAB0010F14B /* View */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		BC71D1C82887FDD40010F14B /* images */ = {
+			isa = PBXGroup;
+			children = (
+				BC71D1C92887FDD40010F14B /* img_10.png */,
+				BC71D1CA2887FDD40010F14B /* img_1.png */,
+				BC71D1CB2887FDD40010F14B /* img_0.png */,
+				BC71D1CC2887FDD40010F14B /* img_11.png */,
+				BC71D1CD2887FDD40010F14B /* img_13.png */,
+				BC71D1CE2887FDD40010F14B /* img_2.png */,
+				BC71D1CF2887FDD40010F14B /* img_3.png */,
+				BC71D1D02887FDD40010F14B /* img_12.png */,
+				BC71D1D12887FDD40010F14B /* img_16.png */,
+				BC71D1D22887FDD40010F14B /* img_7.png */,
+				BC71D1D32887FDD40010F14B /* img_6.png */,
+				BC71D1D42887FDD40010F14B /* img_17.png */,
+				BC71D1D52887FDD40010F14B /* img_29.png */,
+				BC71D1D62887FDD40010F14B /* img_15.png */,
+				BC71D1D72887FDD40010F14B /* img_4.png */,
+				BC71D1D82887FDD40010F14B /* img_5.png */,
+				BC71D1D92887FDD40010F14B /* img_14.png */,
+				BC71D1DA2887FDD40010F14B /* img_28.png */,
+				BC71D1DB2887FDD40010F14B /* img_25.png */,
+				BC71D1DC2887FDD40010F14B /* img_31.png */,
+				BC71D1DD2887FDD40010F14B /* img_19.png */,
+				BC71D1DE2887FDD40010F14B /* img_8.png */,
+				BC71D1DF2887FDD40010F14B /* img_9.png */,
+				BC71D1E02887FDD40010F14B /* img_18.png */,
+				BC71D1E12887FDD40010F14B /* img_30.png */,
+				BC71D1E22887FDD40010F14B /* img_24.png */,
+				BC71D1E32887FDD40010F14B /* img_26.png */,
+				BC71D1E42887FDD40010F14B /* img_27.png */,
+				BC71D1E52887FDD40010F14B /* img_23.png */,
+				BC71D1E62887FDD40010F14B /* img_22.png */,
+				BC71D1E72887FDD40010F14B /* img_20.png */,
+				BC71D1E82887FDD40010F14B /* img_21.png */,
+			);
+			path = images;
+			sourceTree = "<group>";
+		};
+		BC71D28A288811BF0010F14B /* TabbarAnimation */ = {
+			isa = PBXGroup;
+			children = (
+				BC71D291288811BF0010F14B /* AnimationHelper.h */,
+				BC71D28C288811BF0010F14B /* AnimationHelper.m */,
+				BC71D28B288811BF0010F14B /* tabbar1.json */,
+				BC71D290288811BF0010F14B /* tabbar2.json */,
+				BC71D28F288811BF0010F14B /* tabbar3.json */,
+				BC71D28E288811BF0010F14B /* tabbar4.json */,
+				BC71D28D288811BF0010F14B /* tabbar5.json */,
+			);
+			path = TabbarAnimation;
+			sourceTree = "<group>";
+		};
 		BC7CFF992817CBC400CAEB21 /* WithDraw */ = {
 			isa = PBXGroup;
 			children = (
@@ -6171,6 +6346,8 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				BC71D2002887FDD40010F14B /* img_9.png in Resources */,
+				BC71D292288811BF0010F14B /* tabbar1.json in Resources */,
 				BCE6A0A027F84E4500C97704 /* MineIntroduceCell.xib in Resources */,
 				2728086C27E6C12900DB71EA /* FirstSettingBodyView.xib in Resources */,
 				275E8A7727E18F2800DD3F6E /* LaunchScreen.storyboard in Resources */,
@@ -6180,6 +6357,7 @@
 				275B172B27EB269F0081FDEF /* ChatAddressHeaderView.xib in Resources */,
 				BC41104F280678ED00800BD9 /* HomeworkSortView.xib in Resources */,
 				275FA56427F31AEE00EB6240 /* MinePageHeadView.xib in Resources */,
+				BC71D294288811BF0010F14B /* tabbar5.json in Resources */,
 				275B173127EB27960081FDEF /* GroupCreateView.xib in Resources */,
 				BCB908F82850C6EF00F5FF69 /* MusicChooseCell.xib in Resources */,
 				BC24570C286C436E00D1F7C0 /* KSCloudBeatView.xib in Resources */,
@@ -6188,6 +6366,7 @@
 				2755C08E27ED5DB2007D9070 /* GroupApplyChooseCell.xib in Resources */,
 				BCF61BE9280425DA0000ACFE /* InstrumentChooseCell.xib in Resources */,
 				BC76146F280D57220080FD1F /* HomeworkVideoView.xib in Resources */,
+				BC71D1FD2887FDD40010F14B /* img_31.png in Resources */,
 				277931CE27E30FC20010E277 /* KSPremissionAlert.xib in Resources */,
 				BC4058942863028C00111BC5 /* NotiferNavView.xib in Resources */,
 				BCA353CF2858A86200377661 /* MusicRoomCourseCell.xib in Resources */,
@@ -6197,6 +6376,7 @@
 				275E8A7427E18F2800DD3F6E /* Assets.xcassets in Resources */,
 				BC0A22AB284751F80065C1AB /* FullVideoCell.xib in Resources */,
 				2755C06927EC71C8007D9070 /* GroupSettingBodyView.xib in Resources */,
+				BC71D1EF2887FDD40010F14B /* img_2.png in Resources */,
 				BC48C3B028292FBE00EE65C5 /* ReceiveHeaderView.xib in Resources */,
 				BC8B6DBA285327EE00866917 /* MusicShareDisplayView.xib in Resources */,
 				BC58E7D5281B9637004B0893 /* PublicNoticeView.xib in Resources */,
@@ -6212,6 +6392,9 @@
 				BCA9CE4427FD947C00D558C6 /* AccompanyArrangeCell.xib in Resources */,
 				BCF61BF128042FA90000ACFE /* InstrumentChooseBottonView.xib in Resources */,
 				277D433027E9A50800107DB7 /* PhoneChangeBodyView.xib in Resources */,
+				BC71D1EC2887FDD40010F14B /* img_0.png in Resources */,
+				BC71D1EA2887FDD40010F14B /* img_10.png in Resources */,
+				BC71D2052887FDD40010F14B /* img_27.png in Resources */,
 				BC542E3828406F8000633781 /* UserAuthBodyView.xib in Resources */,
 				27A54CEE27E9B986007309A3 /* ModifyNameBodyView.xib in Resources */,
 				2708565E27EDA83100EC8E72 /* GroupMemberListCell.xib in Resources */,
@@ -6223,6 +6406,7 @@
 				BCB399B327F94B5A00AFF376 /* LTSCalendarBottomView.xib in Resources */,
 				2708565327ED8B8C00EC8E72 /* GroupApplyChooseAllCell.xib in Resources */,
 				275E3DEE27F467BF0010EC30 /* LiveRoomBottomView.xib in Resources */,
+				BC71D1FF2887FDD40010F14B /* img_8.png in Resources */,
 				BC023802286594EA005560CA /* KSTipsAlert.xib in Resources */,
 				BC4BCE6D28239EEB00522C8B /* MyAddressListCell.xib in Resources */,
 				27BC3B2B27F2DB9600D81E30 /* MusicUploadView.xib in Resources */,
@@ -6230,13 +6414,16 @@
 				BC2456F4286BEFDA00D1F7C0 /* MineEmptyVideoCell.xib in Resources */,
 				BCE6A09B27F83E8E00C97704 /* MinePageVideoCell.xib in Resources */,
 				BCE06F2D2818147000234817 /* KSConfirmAlertView.xib in Resources */,
+				BC71D295288811BF0010F14B /* tabbar4.json in Resources */,
 				BCA7C34428476533009D20EC /* KSBoardAddStaffView.xib in Resources */,
 				BCA353E52859797500377661 /* MusicRoomStudentCell.xib in Resources */,
 				BC58E7DF281B96A4004B0893 /* MinePageTopView.xib in Resources */,
 				BCEA75322819336A00886A86 /* WithdrawBodyView.xib in Resources */,
+				BC71D20A2887FDD40010F14B /* launchAni.json in Resources */,
 				BC0A22A5284751F80065C1AB /* AccompanySongCell.xib in Resources */,
 				2723B68E27F1686100E0B90B /* HomeNavView.xib in Resources */,
 				BC5EB5C62804087700B4A3B0 /* MyStyleBottomView.xib in Resources */,
+				BC71D1F22887FDD40010F14B /* img_16.png in Resources */,
 				BCDB093F2805C0EF00D0BDAD /* NewClassPopCell.xib in Resources */,
 				BCAD01C22872F5560002CC40 /* LiveVideoListView.xib in Resources */,
 				275E3DE927F4679E0010EC30 /* LiveRoomHeadView.xib in Resources */,
@@ -6244,30 +6431,39 @@
 				BCEA75282819103B00886A86 /* UnbindBodyView.xib in Resources */,
 				BC8B6E602856ED0600866917 /* WeiboSDK.bundle in Resources */,
 				27F9030827E86CCB00C08A19 /* DeviceCheckView.xib in Resources */,
+				BC71D1FA2887FDD40010F14B /* img_14.png in Resources */,
 				2723B69327F1806500E0B90B /* HomeHeadView.xib in Resources */,
 				275B16F127EAF9DD0081FDEF /* ChatNavView.xib in Resources */,
 				2773205327EDB75B008FAECA /* GroupNoticeCell.xib in Resources */,
 				2755C08627ED5770007D9070 /* GroupApplyMemberCell.xib in Resources */,
+				BC71D297288811BF0010F14B /* tabbar2.json in Resources */,
 				27BC3B3027F2FC7200D81E30 /* VideoCourseCell.xib in Resources */,
 				BC7CFFB62817E90700CAEB21 /* KSSegView.xib in Resources */,
 				2779362227E334470010E277 /* KSUpdateAlert.xib in Resources */,
+				BC71D2072887FDD40010F14B /* img_22.png in Resources */,
 				277D433127E9A50800107DB7 /* PhoneCheckBodyView.xib in Resources */,
+				BC71D2082887FDD40010F14B /* img_20.png in Resources */,
 				BC7705FF287676DC003EFA7F /* HomeActionView.xib in Resources */,
 				BC5EB5C12804085500B4A3B0 /* MyStyleVideoCell.xib in Resources */,
 				BC4BCE772823AA3F00522C8B /* areainfo.json in Resources */,
+				BC71D1F62887FDD40010F14B /* img_29.png in Resources */,
 				BCF1BA5627F5CBA100FA36C4 /* LiveSeatApplyView.xib in Resources */,
 				BC8B6E562856ED0600866917 /* iOS集成升级必读.pdf in Resources */,
 				BC8B6E6A28575DEE00866917 /* MusicDisplayView.xib in Resources */,
 				BCB9FA21286D53A1005D766B /* ScanNavView.xib in Resources */,
+				BC71D1EB2887FDD40010F14B /* img_1.png in Resources */,
 				BCB9FA4F28717BBD005D766B /* MyMusicSearchView.xib in Resources */,
 				BC483233282A6473005F534C /* HomeRecentCourseView.xib in Resources */,
 				2708565927ED961900EC8E72 /* ApplyBottomView.xib in Resources */,
 				BCB399AE27F946AA00AFF376 /* CourseNavView.xib in Resources */,
 				BC0A22A8284751F80065C1AB /* DownloadStatusCell.xib in Resources */,
+				BC71D1F42887FDD40010F14B /* img_6.png in Resources */,
 				275B170D27EB14AC0081FDEF /* KSChatListSearchView.xib in Resources */,
+				BC71D1332887ADDA0010F14B /* teacher_refresh.json in Resources */,
 				BC7CFFCA2817F2FF00CAEB21 /* CashRecordListCell.xib in Resources */,
 				BCB9FA41286DA337005D766B /* GuideListView.xib in Resources */,
 				BCB908DD2850A71800F5FF69 /* ShareMusicCellContentView.xib in Resources */,
+				BC71D2062887FDD40010F14B /* img_23.png in Resources */,
 				27D83F5927F4225D00062476 /* LivePreviewBodyView.xib in Resources */,
 				BC41104A2806706800800BD9 /* HomeworkListCell.xib in Resources */,
 				BCD457A72863196F0010B493 /* CourseTimeSegView.xib in Resources */,
@@ -6276,12 +6472,14 @@
 				BCB399BD27F9831D00AFF376 /* CourseForLiveCell.xib in Resources */,
 				2723B68927F1643B00E0B90B /* HomeBodyView.xib in Resources */,
 				BCFE541A2817BE0800AD6786 /* IncomeHeaderView.xib in Resources */,
+				BC71D1F32887FDD40010F14B /* img_7.png in Resources */,
 				BCE6A0A527F8517900C97704 /* MineVideoCell.xib in Resources */,
 				BCC9F40727F69BD200647449 /* SealClass.strings in Resources */,
 				BCD6D16C28195FC5009A773E /* CashRecordHeadView.xib in Resources */,
 				BC5EB5AB2803D86500B4A3B0 /* AccompanyAlertView.xib in Resources */,
 				BCE6A08C27F823A300C97704 /* AccompanyCourseCell.xib in Resources */,
 				BC7CFFBA2817E9FC00CAEB21 /* echarts.min.js in Resources */,
+				BC71D2012887FDD40010F14B /* img_18.png in Resources */,
 				BC0A22A0284751F80065C1AB /* KSCloseCourseView.xib in Resources */,
 				BCE6A08727F81B4D00C97704 /* MinePageSubmitView.xib in Resources */,
 				BC73A1F42809693F00FA8F6F /* EvaluateSortView.xib in Resources */,
@@ -6292,6 +6490,7 @@
 				BCC03F9A2805681100461B7C /* MyLessonSearchView.xib in Resources */,
 				BCC03F9F280579A500461B7C /* MyLiveCourseCell.xib in Resources */,
 				BCB6340627F6A2F000ACFDCF /* tick.wav in Resources */,
+				BC71D1FB2887FDD40010F14B /* img_28.png in Resources */,
 				BC8B6E522856ED0600866917 /* UMCommonLog.bundle in Resources */,
 				BCA353EA2859A6FB00377661 /* MusicRoomHomeworkCell.xib in Resources */,
 				2755C07127EC7F21007D9070 /* ChatComplainBodyView.xib in Resources */,
@@ -6300,18 +6499,25 @@
 				BCFE54152817918600AD6786 /* MyIncomeListCell.xib in Resources */,
 				BCA9CE1727FD339D00D558C6 /* AuthDisplayView.xib in Resources */,
 				BC245710286C437D00D1F7C0 /* synthgms.sf2 in Resources */,
+				BC71D1EE2887FDD40010F14B /* img_13.png in Resources */,
 				BCF1BA5B27F5CF3C00FA36C4 /* LiveSeatApplyCell.xib in Resources */,
 				2780C92427E4903500A95A4F /* PasswordBodyView.xib in Resources */,
 				27F902FF27E864AE00C08A19 /* KSNetworkAlert.xib in Resources */,
+				BC71D2092887FDD40010F14B /* img_21.png in Resources */,
 				BC60E3C2287D448600B05441 /* DeleteAccountBodyView.xib in Resources */,
 				BC32E10E286AB326001434DD /* KSPublicAlertView.xib in Resources */,
+				BC71D296288811BF0010F14B /* tabbar3.json in Resources */,
+				BC71D2022887FDD40010F14B /* img_30.png in Resources */,
 				BC7CFFAA2817E3BD00CAEB21 /* IncomeCountTopView.xib in Resources */,
 				BC0A22B82847523E0065C1AB /* MemberListCell.xib in Resources */,
 				BCB9FA632872C8D2005D766B /* UnderwayLiveCell.xib in Resources */,
+				BC71D1ED2887FDD40010F14B /* img_11.png in Resources */,
 				BCA9CE3A27FD93EB00D558C6 /* AccompanyStudentEvaCell.xib in Resources */,
 				BCE6A09627F823DC00C97704 /* MinePageMusicCell.xib in Resources */,
 				BC4BCE722823A03A00522C8B /* AddressBottomView.xib in Resources */,
 				BCA353E0285976CF00377661 /* MusicRoomCourseInfoCell.xib in Resources */,
+				BC71D1F82887FDD40010F14B /* img_4.png in Resources */,
+				BC71D1FE2887FDD40010F14B /* img_19.png in Resources */,
 				277D431F27E999A000107DB7 /* ModifyBodyView.xib in Resources */,
 				BC8B6E5D2856ED0600866917 /* README.txt in Resources */,
 				BC7CFFBB2817E9FC00CAEB21 /* stacked_line_chart.html in Resources */,
@@ -6323,6 +6529,8 @@
 				27BC3B2627F2B76900D81E30 /* MusicMessageCell.xib in Resources */,
 				BC2858302809451B0024697C /* EvaluateCouseCell.xib in Resources */,
 				BC8B6E6D285836B600866917 /* high_staff.png in Resources */,
+				BC71D1F72887FDD40010F14B /* img_15.png in Resources */,
+				BC71D1F92887FDD40010F14B /* img_5.png in Resources */,
 				BCA724002806AEA000DA0D0D /* AccompanyHomeworkCell.xib in Resources */,
 				BC7CFFD22817FF6D00CAEB21 /* CardDisplayView.xib in Resources */,
 				BC2456E5286BE86600D1F7C0 /* MineStyleEmptyView.xib in Resources */,
@@ -6333,17 +6541,23 @@
 				BCA9CE3527FD93C700D558C6 /* AccompanyEvaluateCell.xib in Resources */,
 				27D5D5D227EDBA9400B4720C /* NoticeEditBodyView.xib in Resources */,
 				BC7CFFD7281801B700CAEB21 /* CardBandBodyView.xib in Resources */,
+				BC71D1F02887FDD40010F14B /* img_3.png in Resources */,
 				275E3DE327F467410010EC30 /* BaseEmoji.plist in Resources */,
 				273C75A027E9681700F7C26F /* SettingBodyView.xib in Resources */,
+				BC71D1F12887FDD40010F14B /* img_12.png in Resources */,
 				BC8C2C662824EB9800FBA5D5 /* NotiferHeadView.xib in Resources */,
 				2779329A27E30FEB0010E277 /* mss_browseLoading@2x.png in Resources */,
+				BC71D2042887FDD40010F14B /* img_26.png in Resources */,
 				27F9CAFC27EC1AF3003E0FE4 /* ContractListCell.xib in Resources */,
+				BC71D2032887FDD40010F14B /* img_24.png in Resources */,
+				BC71D1F52887FDD40010F14B /* img_17.png in Resources */,
 				BCA9CE5127FD954800D558C6 /* AccompanyRemarkCell.xib in Resources */,
 				BCB9FA682872C8F0005D766B /* FinishedLiveCell.xib in Resources */,
 				BCF61BDE280417190000ACFE /* MyStyleVideoView.xib in Resources */,
 				BCC03F89280460C000461B7C /* InstrumentHeaderView.xib in Resources */,
 				BCD6D16728195A98009A773E /* WithdrawApplyBodyView.xib in Resources */,
 				BC5EB5BC2804083800B4A3B0 /* MyStyleIntroduceCell.xib in Resources */,
+				BC71D1FC2887FDD40010F14B /* img_25.png in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -6609,6 +6823,7 @@
 				BCC9F41127F69BD200647449 /* MessageCell.m in Sources */,
 				277935E227E327F00010E277 /* KSTabBarViewController.m in Sources */,
 				2779322727E30FC30010E277 /* KSInputView.m in Sources */,
+				BC71D293288811BF0010F14B /* AnimationHelper.m in Sources */,
 				BC60E3C0287D447F00B05441 /* DeleteAccountBodyView.m in Sources */,
 				2779320D27E30FC30010E277 /* ShopMessBtn.m in Sources */,
 				2779323C27E30FC30010E277 /* VoLRUManager.m in Sources */,
@@ -6783,6 +6998,7 @@
 				275E3DE027F467410010EC30 /* KSChatEmojiBoardView.m in Sources */,
 				BC542E4628407B3D00633781 /* UseBodyView.m in Sources */,
 				BCC9F44927F69BD200647449 /* ClassroomService.m in Sources */,
+				BC71D1A62887FDAC0010F14B /* LaunchAnimationViewController.m in Sources */,
 				277931CC27E30FC20010E277 /* KSGifRefreshFooter.m in Sources */,
 				2779321127E30FC30010E277 /* YKMultiLevelTableView.m in Sources */,
 				BCF1BA5127F5C4DD00FA36C4 /* KSLiveChatroomMemberCount.m in Sources */,
@@ -7258,7 +7474,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_ENTITLEMENTS = KulexiuForTeacher/KulexiuForTeacher.entitlements;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1.0.2;
+				CURRENT_PROJECT_VERSION = 1.0.3;
 				DEVELOPMENT_TEAM = B2AP53HHTU;
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -7320,7 +7536,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_ENTITLEMENTS = KulexiuForTeacher/KulexiuForTeacher.entitlements;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1.0.2;
+				CURRENT_PROJECT_VERSION = 1.0.3;
 				DEVELOPMENT_TEAM = B2AP53HHTU;
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (

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


+ 28 - 12
KulexiuForTeacher/KulexiuForTeacher.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -464,7 +464,7 @@
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
             uuid = "8B301842-497E-4618-9DC2-36C235BA6745"
-            shouldBeEnabled = "No"
+            shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "KulexiuForTeacher/Module/Home/Income/Controller/IncomeCountViewController.m"
@@ -745,8 +745,8 @@
             filePath = "KulexiuForTeacher/AppDelegate.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "630"
-            endingLineNumber = "630"
+            startingLineNumber = "639"
+            endingLineNumber = "639"
             landmarkName = "-getVCUserInfoDict:"
             landmarkType = "7">
          </BreakpointContent>
@@ -777,8 +777,8 @@
             filePath = "KulexiuForTeacher/AppDelegate.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "613"
-            endingLineNumber = "613"
+            startingLineNumber = "622"
+            endingLineNumber = "622"
             landmarkName = "-getVCUserInfoDict:"
             landmarkType = "7">
          </BreakpointContent>
@@ -793,8 +793,8 @@
             filePath = "KulexiuForTeacher/AppDelegate.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "570"
-            endingLineNumber = "570"
+            startingLineNumber = "579"
+            endingLineNumber = "579"
             landmarkName = "-jpushNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:"
             landmarkType = "7">
          </BreakpointContent>
@@ -1089,16 +1089,32 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "DC9917E2-27CA-4C2C-9A51-17E4A16A3BA6"
+            uuid = "09850B8F-2D01-4B92-8C57-70A2742814E5"
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KulexiuForTeacher/Module/Mine/MinePage/View/MinePageMienBodyView.m"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "100"
+            endingLineNumber = "100"
+            landmarkName = "-requestTeacherGroup"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "7262111F-38B6-41C3-9BAF-49AE5E5F1820"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForTeacher/AppDelegate.m"
+            filePath = "KulexiuForTeacher/Module/Home/Income/Controller/IncomeCountViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "196"
-            endingLineNumber = "196"
-            landmarkName = "-configUM"
+            startingLineNumber = "136"
+            endingLineNumber = "136"
+            landmarkName = "-requestData"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>

+ 32 - 24
KulexiuForTeacher/KulexiuForTeacher/AppDelegate.m

@@ -39,6 +39,7 @@
 #import "GuideViewController.h"
 #import "MyCourseViewController.h"
 #import "NotiferMessageViewController.h"
+#import "LaunchAnimationViewController.h"
 
 @interface RCNaviDataInfo : NSObject
 
@@ -54,7 +55,7 @@
 
 @end
 
-@interface AppDelegate ()<UITabBarControllerDelegate,RCIMReceiveMessageDelegate,JPUSHRegisterDelegate>
+@interface AppDelegate ()<RCIMReceiveMessageDelegate,JPUSHRegisterDelegate>
 
 @property (nonatomic, assign) BOOL isNeedUpdate;
 
@@ -110,28 +111,12 @@
     [self configJPUSHWithLaunchOptions:launchOptions];
     // 融云相关配置
     [self configIM];
-    
-    BOOL hasLaunchGuide = UserDefaultBoolForKey(FIRST_LOGIN_KEY);
-    if (hasLaunchGuide == NO) {
-        GuideViewController *guideVC = [[GuideViewController alloc] init];
-        CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:guideVC];
-        self.window.rootViewController = navCtrl;
-    }
-    else {
-        NSString *token = UserDefault(TokenKey);
-        NSLog(@"------token  %@",token);
-        if ([NSString isEmptyString:token]) { // 未登录
-            LoginViewController *logonVC = [[LoginViewController alloc] init];
-            CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:logonVC];
-            self.window.rootViewController = navCtrl;
-        }
-        else {
-            [KSNetworkingManager configRequestHeader];
-            [USER_MANAGER queryUserInfoConnectRongCloud:YES];
-            [self initTableBar];
-            self.window.rootViewController=_tabBarController;
-        }
-    }
+    LaunchAnimationViewController *animationVC = [[LaunchAnimationViewController alloc] init];
+    MJWeakSelf;
+    [animationVC launchAnimationFinish:^{
+        [weakSelf configRootVC];
+    }];
+    self.window.rootViewController = animationVC;
     
     [self.window makeKeyAndVisible];
     
@@ -169,6 +154,30 @@
     return YES;
 }
 
+- (void)configRootVC {
+    BOOL hasLaunchGuide = UserDefaultBoolForKey(FIRST_LOGIN_KEY);
+    if (hasLaunchGuide == NO) {
+        GuideViewController *guideVC = [[GuideViewController alloc] init];
+        CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:guideVC];
+        self.window.rootViewController = navCtrl;
+    }
+    else {
+        NSString *token = UserDefault(TokenKey);
+        NSLog(@"------token  %@",token);
+        if ([NSString isEmptyString:token]) { // 未登录
+            LoginViewController *logonVC = [[LoginViewController alloc] init];
+            CustomNavViewController *navCtrl = [[CustomNavViewController alloc] initWithRootViewController:logonVC];
+            self.window.rootViewController = navCtrl;
+        }
+        else {
+            [KSNetworkingManager configRequestHeader];
+            [USER_MANAGER queryUserInfoConnectRongCloud:YES];
+            [self initTableBar];
+            self.window.rootViewController=_tabBarController;
+        }
+    }
+}
+
 - (void)registerSDK {
     [WXApi registerApp:@"wx149a928c415c137a" universalLink:@"https://dev.colexiu.com/teacherApp/"];
 }
@@ -755,7 +764,6 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
     }
 
     self.tabBarController = [[KSTabBarViewController alloc] init];
-    self.tabBarController.delegate = self;
     self.window.rootViewController = self.tabBarController;
     int unreadMsgCount = [[RCIMClient sharedRCIMClient] getUnreadCount:@[ @(ConversationType_PRIVATE),@(ConversationType_APPSERVICE), @(ConversationType_GROUP),@(ConversationType_SYSTEM)
     ]];

+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSNetworkingManager.h

@@ -192,7 +192,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 
 // 注销账号功能
-// /auth-server/user/logoff/{smsCode}
+// /api-auth/user/logoff/{smsCode}
 
 /// 注销账号
 /// @param get get

+ 26 - 1
KulexiuForTeacher/KulexiuForTeacher/Common/Base/KSTabBarViewController.m

@@ -9,8 +9,9 @@
 #import "CustomNavViewController.h"
 #import "KSBaseViewController.h"
 #import "UIImage+Color.h"
+#import "AnimationHelper.h"
 
-@interface KSTabBarViewController ()
+@interface KSTabBarViewController ()<UITabBarControllerDelegate>
 
 @end
 
@@ -19,6 +20,7 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
+    self.delegate = self;
     [self configItems];
 }
 
@@ -95,6 +97,29 @@
     UITabBarItem * tabBarItem = self.tabBar.items[index];
     [tabBarItem setBadgeValue:nil];
 }
+
+#pragma mark ----- UITabBarControllerDelegate
+- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
+    [self setAnaimationWithTabBarController:tabBarController selectViewController:viewController];
+}
+- (void)setAnaimationWithTabBarController:(UITabBarController *)tabBarController selectViewController:(UIViewController *)viewController {
+    //1.
+    NSInteger index = [tabBarController.viewControllers indexOfObject:viewController];
+    __block NSMutableArray <UIView *>*tabBarSwappableImageViews = [NSMutableArray arrayWithCapacity:4];
+    //2.
+    for (UIView *tempView in tabBarController.tabBar.subviews) {
+        if ([tempView isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
+            for (UIImageView *tempImageView in tempView.subviews) {
+                if ([tempImageView isKindOfClass:NSClassFromString(@"UITabBarSwappableImageView")]) {
+                    [tabBarSwappableImageViews addObject:tempImageView];
+                }
+            }
+        }
+    }
+    //3.
+    __block UIView *currentTabBarSwappableImageView = tabBarSwappableImageViews[index];
+    [AnimationHelper lottieAnimation:currentTabBarSwappableImageView index:index];
+}
 /*
 #pragma mark - Navigation
 

+ 22 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/AnimationHelper.h

@@ -0,0 +1,22 @@
+//
+//  AnimationHelper.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/7/20.
+//
+
+#import <Foundation/Foundation.h>
+#import <Lottie/Lottie.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface AnimationHelper : NSObject
+
+/// lottie动画
+/// @param currentAnimationView 当前动画视图
+/// @param index 当前动画视图索引
++ (void)lottieAnimation:(UIView *)currentAnimationView index:(NSInteger)index;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 37 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/AnimationHelper.m

@@ -0,0 +1,37 @@
+//
+//  AnimationHelper.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/7/20.
+//
+
+#import "AnimationHelper.h"
+
+@implementation AnimationHelper
+
+/// lottie动画
+/// @param currentAnimationView 当前动画视图
+/// @param index 当前动画视图索引
++ (void)lottieAnimation:(UIView *)currentAnimationView index:(NSInteger)index {
+    CGRect frame = currentAnimationView.frame;
+    frame.origin.x = 0;
+    frame.origin.y = 0;
+    //__block LOTAnimationView *lottieAnimationView = [self getAnimationViewAtTabbarIndex:index frame:frame];
+    __block LOTAnimationView *lottieAnimationView = [LOTAnimationView animationNamed:[NSString stringWithFormat:@"tabbar%ld",index+1]];
+    lottieAnimationView.frame = frame;
+    lottieAnimationView.contentMode = UIViewContentModeScaleAspectFill;
+    lottieAnimationView.animationSpeed = 1;
+    
+    //self.animationView = animationView;
+    lottieAnimationView.center = currentAnimationView.center;
+    [currentAnimationView.superview addSubview:lottieAnimationView];
+    currentAnimationView.hidden = YES;
+    [lottieAnimationView playFromProgress:0 toProgress:1 withCompletion:^(BOOL animationFinished) {
+        currentAnimationView.hidden = NO;
+        [lottieAnimationView removeFromSuperview];
+        lottieAnimationView = nil;
+    }];
+    
+}
+
+@end

File diff suppressed because it is too large
+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar1.json


File diff suppressed because it is too large
+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar2.json


File diff suppressed because it is too large
+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar3.json


File diff suppressed because it is too large
+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar4.json


File diff suppressed because it is too large
+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Base/TabbarAnimation/tabbar5.json


+ 14 - 14
KulexiuForTeacher/KulexiuForTeacher/Common/Define/PrefixHeader.pch

@@ -116,23 +116,23 @@ shouldPrevent = NO; \
 
 //#ifdef DEBUG
 
-//#define hostURL (@"https://dev.colexiu.com")
-//#define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
-//#define WEBHOST (@"https://dev.colexiu.com/teacher")
-//#define SOCKET_URL (@"wss://dev.colexiu.com/audioAnalysis")
-//#define JSPUSH_ENVIRONMENT (NO)
-//#define RCIM_KEY (@"0vnjpoad0jbdz")
-//#define SUBMIT_UUID (YES)
+#define hostURL (@"https://dev.colexiu.com")
+#define SEALCLASSHOST (@"https://dev.colexiu.com/api-classroom")
+#define WEBHOST (@"https://dev.colexiu.com/teacher")
+#define SOCKET_URL (@"wss://dev.colexiu.com/audioAnalysis")
+#define JSPUSH_ENVIRONMENT (NO)
+#define RCIM_KEY (@"0vnjpoad0jbdz")
+#define SUBMIT_UUID (YES)
 
 //#else
 
-#define hostURL (@"https://online.colexiu.com")
-#define SEALCLASSHOST (@"https://online.colexiu.com/api-classroom")
-#define WEBHOST (@"https://online.colexiu.com/teacher")
-#define SOCKET_URL (@"wss://online.colexiu.com/audioAnalysis")
-#define JSPUSH_ENVIRONMENT (YES)
-#define RCIM_KEY (@"e5t4ouvpe42pa")
-#define SUBMIT_UUID (YES)
+//#define hostURL (@"https://online.colexiu.com")
+//#define SEALCLASSHOST (@"https://online.colexiu.com/api-classroom")
+//#define WEBHOST (@"https://online.colexiu.com/teacher")
+//#define SOCKET_URL (@"wss://online.colexiu.com/audioAnalysis")
+//#define JSPUSH_ENVIRONMENT (YES)
+//#define RCIM_KEY (@"e5t4ouvpe42pa")
+//#define SUBMIT_UUID (YES)
 
 
 //#endif

+ 97 - 38
KulexiuForTeacher/KulexiuForTeacher/Common/Tools/GifRefresh/KSGifRefreshFooter.m

@@ -7,54 +7,113 @@
 //
 
 #import "KSGifRefreshFooter.h"
+#import <Lottie/Lottie.h>
+
+@interface KSGifRefreshFooter ()
+
+@property(nonatomic, strong) LOTAnimationView *loadingView;
+@property(nonatomic, strong) NSString *jsonString;
+
+@end
 
 @implementation KSGifRefreshFooter
 
-#pragma mark - 重写方法
-#pragma mark 基本设置
-- (void)prepare
-{
-    [super prepare];
-    
-    // 设置普通状态的动画图片
-    NSMutableArray *idleImages = [NSMutableArray array];
-    for (NSUInteger i = 1; i<=25; i++) {
-        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%zd", i]];
-        [idleImages addObject:image];
+- (instancetype)init {
+    if (self = [super init]) {
+//        self.stateLabel.hidden = YES;
+        [self setJsonName:@"teacher_refresh.json"];
+    }
+    return self;
+}
+
+- (void)setJsonName:(NSString *)jsonName {
+    self.jsonString = jsonName;
+    [self addSubview:self.loadingView];
+}
+
+- (LOTAnimationView *)loadingView {
+    if(_loadingView == nil) {
+        //1.加载本地json
+        _loadingView = [LOTAnimationView animationNamed:self.jsonString];
+        //2.加载后台给的json(url)
+        _loadingView.frame = CGRectMake(([UIScreen mainScreen].bounds.size.width / 2.0) - 21, 0, 42, 55);
+        _loadingView.loopAnimation = YES;
+        _loadingView.contentMode = UIViewContentModeScaleAspectFill;
+        _loadingView.animationSpeed = 1.0;
+        _loadingView.loopAnimation = YES;
+    }
+    return _loadingView;
+}
+
+#pragma mark - innerMethod
+- (void)endRefreshing {
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        [super endRefreshing];
+    });
+}
+
+#pragma mark - 监听控件的刷新状态
+
+- (void)setState:(MJRefreshState)state {
+    MJRefreshCheckState;
+    if(self.jsonString.length > 0) {
+        switch (state) {
+            case MJRefreshStateIdle: //普通闲置状态
+            {
+                [self.loadingView stop];
+                //self.loadingView.hidden = YES;
+                break;
+            }
+            case MJRefreshStatePulling: //松开就可以进行刷新的状态
+            {
+                //self.loadingView.hidden = NO;
+            }
+                break;
+
+            case MJRefreshStateRefreshing: //正在刷新中的状态
+            {
+                self.loadingView.animationProgress = 0;
+                [self.loadingView play];
+            }
+                break;
+            default:
+                break;
+        }
     }
-    [self setImages:idleImages forState:MJRefreshStateIdle];
-    
-    // 设置即将刷新状态的动画图片(一松开就会刷新的状态)
-    NSMutableArray *refreshingImages = [NSMutableArray array];
-    for (NSUInteger i = 1; i<=67; i++) {
-        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%zd", i]];
-        [refreshingImages addObject:image];
+}
+
+#pragma mark - 实时监听控件 scrollViewContentOffset
+
+- (void)scrollViewContentOffsetDidChange:(NSDictionary *)change {
+    [super scrollViewContentOffsetDidChange:change];
+    if(self.jsonString.length > 0) {
+        CGPoint point;
+        id newVelue = [change valueForKey:NSKeyValueChangeNewKey];
+        [(NSValue *)newVelue getValue:&point];
+        
+        //id newVelue1 = [change objectForKey:NSKeyValueChangeNewKey];
+        //CGPoint point1 = ((NSValue *)newVelue1).CGPointValue;//可以取值
+        
+        //id newVelue2 = [change objectForKey:@"new"];
+        //CGPoint point2 = *((__bridge CGPoint *)(newVelue2));//无法取到值
+        
+        self.loadingView.hidden = !(self.pullingPercent);
+        CGFloat progress = point.y / ([UIScreen mainScreen].bounds.size.height / 3.0);
+        if(self.state != MJRefreshStateRefreshing) {
+            self.loadingView.animationProgress = -progress;
+        }
     }
-    [self setImages:refreshingImages duration:2.0f forState:MJRefreshStatePulling];
-    
-    // 设置正在刷新状态的动画图片
-    [self setImages:refreshingImages duration:1.0f forState:MJRefreshStateRefreshing];
+}
+
+- (void)prepare {
+    [super prepare];
+    // 设置控件的高度
+        self.mj_h = 55;
     // 初始化文字
     [self setTitle:@"" forState:MJRefreshStateIdle];
     [self setTitle:@"" forState:MJRefreshStatePulling];
     [self setTitle:@"" forState:MJRefreshStateRefreshing];
     [self setTitle:[NSBundle mj_localizedStringForKey:MJRefreshBackFooterNoMoreDataText] forState:MJRefreshStateNoMoreData];
-    
-}
-
-- (void)placeSubviews
-{
-    [super placeSubviews];
-    
-    if (self.gifView.constraints.count) return;
-    
-    self.gifView.frame = self.bounds;
-    if (self.stateLabel.hidden || [NSString isEmptyString:self.stateLabel.text]) {
-        self.gifView.contentMode = UIViewContentModeCenter;
-    } else {
-        self.gifView.contentMode = UIViewContentModeRight;
-        self.gifView.mj_w = self.mj_w * 0.5 - self.labelLeftInset - self.stateLabel.mj_textWith * 0.5;
-    }
 }
 
 /*

+ 92 - 24
KulexiuForTeacher/KulexiuForTeacher/Common/Tools/GifRefresh/KSGifRefreshHeader.m

@@ -7,35 +7,103 @@
 //
 
 #import "KSGifRefreshHeader.h"
+#import <Lottie/Lottie.h>
+
+@interface KSGifRefreshHeader ()
+
+@property(nonatomic, strong) LOTAnimationView *loadingView;
+@property(nonatomic, strong) NSString *jsonString;
+
+@end
 
 @implementation KSGifRefreshHeader
 
-#pragma mark - 重写方法
-#pragma mark 基本设置
-- (void)prepare {
-    [super prepare];
-    
-    // 设置普通状态的动画图片
-    NSMutableArray *idleImages = [NSMutableArray array];
-    for (NSUInteger i = 1; i<=3; i++) {
-        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%zd", i]];
-        [idleImages addObject:image];
+- (instancetype)init {
+    if (self = [super init]) {
+        self.lastUpdatedTimeLabel.hidden = YES;
+        self.stateLabel.hidden = YES;
+        [self setJsonName:@"teacher_refresh.json"];
+    }
+    return self;
+}
+
+- (void)setJsonName:(NSString *)jsonName {
+    self.jsonString = jsonName;
+    [self addSubview:self.loadingView];
+}
+
+- (LOTAnimationView *)loadingView {
+    if(_loadingView == nil) {
+        //1.加载本地json
+        _loadingView = [LOTAnimationView animationNamed:self.jsonString];
+        //2.加载后台给的json(url)
+        _loadingView.frame = CGRectMake(([UIScreen mainScreen].bounds.size.width / 2.0) - 21, 0, 42, 55);
+        _loadingView.loopAnimation = YES;
+        _loadingView.contentMode = UIViewContentModeScaleAspectFill;
+        _loadingView.animationSpeed = 1.0;
+        _loadingView.loopAnimation = YES;
     }
-     [self setImages:idleImages forState:MJRefreshStateIdle];
-    
-    // 设置即将刷新状态的动画图片(一松开就会刷新的状态)
-    NSMutableArray *refreshingImages = [NSMutableArray array];
-    for (NSUInteger i = 1; i<=67; i++) {
-        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%zd", i]];
-        [refreshingImages addObject:image];
+    return _loadingView;
+}
+
+#pragma mark - innerMethod
+- (void)endRefreshing {
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        [super endRefreshing];
+    });
+}
+
+#pragma mark - 监听控件的刷新状态
+
+- (void)setState:(MJRefreshState)state {
+    MJRefreshCheckState;
+    if(self.jsonString.length > 0) {
+        switch (state) {
+            case MJRefreshStateIdle: //普通闲置状态
+            {
+                [self.loadingView stop];
+                //self.loadingView.hidden = YES;
+                break;
+            }
+            case MJRefreshStatePulling: //松开就可以进行刷新的状态
+            {
+                //self.loadingView.hidden = NO;
+            }
+                break;
+
+            case MJRefreshStateRefreshing: //正在刷新中的状态
+            {
+                self.loadingView.animationProgress = 0;
+                [self.loadingView play];
+            }
+                break;
+            default:
+                break;
+        }
+    }
+}
+
+#pragma mark - 实时监听控件 scrollViewContentOffset
+
+- (void)scrollViewContentOffsetDidChange:(NSDictionary *)change {
+    [super scrollViewContentOffsetDidChange:change];
+    if(self.jsonString.length > 0) {
+        CGPoint point;
+        id newVelue = [change valueForKey:NSKeyValueChangeNewKey];
+        [(NSValue *)newVelue getValue:&point];
+        
+        //id newVelue1 = [change objectForKey:NSKeyValueChangeNewKey];
+        //CGPoint point1 = ((NSValue *)newVelue1).CGPointValue;//可以取值
+        
+        //id newVelue2 = [change objectForKey:@"new"];
+        //CGPoint point2 = *((__bridge CGPoint *)(newVelue2));//无法取到值
+        
+//        self.loadingView.hidden = !(self.pullingPercent);
+        CGFloat progress = point.y / ([UIScreen mainScreen].bounds.size.height / 3.0);
+        if(self.state != MJRefreshStateRefreshing) {
+            self.loadingView.animationProgress = -progress;
+        }
     }
-    [self setImages:refreshingImages duration:2.0f forState:MJRefreshStatePulling];
-    
-    // 设置正在刷新状态的动画图片
-    [self setImages:refreshingImages duration:1.0f forState:MJRefreshStateRefreshing];
-    
-    self.lastUpdatedTimeLabel.hidden = YES;
-    self.stateLabel.hidden = YES;
 }
 
 /*

File diff suppressed because it is too large
+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Common/Tools/GifRefresh/teacher_refresh.json


+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/KulexiuForTeacher.entitlements

@@ -6,7 +6,7 @@
 	<string>development</string>
 	<key>com.apple.developer.associated-domains</key>
 	<array>
-		<string>applinks:dev.colexiu.com</string>
+		<string>applinks:online.colexiu.com</string>
 	</array>
 	<key>com.apple.developer.icloud-container-identifiers</key>
 	<array>

+ 20 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Controller/LaunchAnimationViewController.h

@@ -0,0 +1,20 @@
+//
+//  LaunchAnimationViewController.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/7/20.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef void(^LaunchFinishCallback)(void);
+NS_ASSUME_NONNULL_BEGIN
+
+@interface LaunchAnimationViewController : UIViewController
+
+// 结束的回调
+- (void)launchAnimationFinish:(LaunchFinishCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 78 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Controller/LaunchAnimationViewController.m

@@ -0,0 +1,78 @@
+//
+//  LaunchAnimationViewController.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/7/20.
+//
+
+#import "LaunchAnimationViewController.h"
+#import <Lottie/Lottie.h>
+
+@interface LaunchAnimationViewController ()
+
+@property (nonatomic, strong) LOTAnimationView *loadingView;
+
+@property (nonatomic, strong) NSString *jsonString;
+
+@property (nonatomic, copy) LaunchFinishCallback callback;
+
+@end
+
+@implementation LaunchAnimationViewController
+- (void)launchAnimationFinish:(LaunchFinishCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    [self configUI];
+}
+
+- (void)configUI {
+    self.view.backgroundColor = [UIColor whiteColor];
+    
+    [self setJsonName:@"launchAni.json"];
+}
+
+- (void)setJsonName:(NSString *)jsonName {
+    self.jsonString = jsonName;
+    [self.view addSubview:self.loadingView];
+    MJWeakSelf;
+    [self.loadingView playWithCompletion:^(BOOL animationFinished) {
+        [weakSelf successBack];
+    }];
+}
+
+- (void)successBack {
+    if (self.callback) {
+        self.callback();
+    }
+}
+
+- (LOTAnimationView *)loadingView {
+    if(_loadingView == nil) {
+        //1.加载本地json
+        _loadingView = [LOTAnimationView animationNamed:self.jsonString];
+        //2.加载后台给的json(url)
+        _loadingView.frame = CGRectMake(0, 0, KPortraitWidth, KPortraitHeight);
+        _loadingView.loopAnimation = YES;
+        _loadingView.contentMode = UIViewContentModeScaleAspectFill;
+        _loadingView.animationSpeed = 1.0;
+        _loadingView.loopAnimation = NO;
+    }
+    return _loadingView;
+}
+/*
+#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

BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_0.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_1.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_10.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_11.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_12.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_13.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_14.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_15.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_16.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_17.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_18.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_19.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_2.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_20.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_21.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_22.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_23.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_24.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_25.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_26.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_27.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_28.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_29.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_3.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_30.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_31.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_4.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_5.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_6.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_7.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_8.png


BIN
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/images/img_9.png


File diff suppressed because it is too large
+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/AnimationLaunch/Model/launchAni.json


+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/ShareInChat/Controller/KSShareChooseViewController.h → KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/Controller/KSShareChooseViewController.h


+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/ShareInChat/Controller/KSShareChooseViewController.m → KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/Controller/KSShareChooseViewController.m


+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/ShareInChat/Controller/KSShareGroupViewController.h → KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/Controller/KSShareGroupViewController.h


+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/ShareInChat/Controller/KSShareGroupViewController.m → KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/Controller/KSShareGroupViewController.m


+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/ShareInChat/View/ShareChooseMainView.h → KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/View/ShareChooseMainView.h


+ 0 - 0
KulexiuForTeacher/KulexiuForTeacher/Module/ShareInChat/View/ShareChooseMainView.m → KulexiuForTeacher/KulexiuForTeacher/Module/MidiPlayer/ShareInChat/View/ShareChooseMainView.m


+ 3 - 1
KulexiuForTeacher/Podfile

@@ -24,7 +24,9 @@
   pod 'Whiteboard'
   pod 'RSKImageCropper'
   pod 'TYCyclePagerView'
-
+  
+  #lottie 动画库
+  pod 'lottie-ios', '~> 2.5'
 #  友盟
 #  pod 'UMCommon'
 #  pod 'UMDevice'

+ 5 - 1
KulexiuForTeacher/Podfile.lock

@@ -23,6 +23,7 @@ PODS:
     - JCore (< 3.0.0, >= 2.0.0)
   - JXCategoryView (1.5.9)
   - JXPagingView/Pager (2.1.2)
+  - lottie-ios (2.5.3)
   - Masonry (1.1.0)
   - MBProgressHUD (1.2.0)
   - MJExtension (3.3.0)
@@ -97,6 +98,7 @@ DEPENDENCIES:
   - JPush (= 4.3.0)
   - JXCategoryView
   - JXPagingView/Pager
+  - lottie-ios (~> 2.5)
   - Masonry (~> 1.1.0)
   - MBProgressHUD (~> 1.2.0)
   - MJExtension (~> 3.3.0)
@@ -125,6 +127,7 @@ SPEC REPOS:
     - JPush
     - JXCategoryView
     - JXPagingView
+    - lottie-ios
     - Masonry
     - MBProgressHUD
     - MJExtension
@@ -151,6 +154,7 @@ SPEC CHECKSUMS:
   JPush: 88d6361fbec4be7c8b55b20b7fe1c292228f6bc2
   JXCategoryView: 2ef9ecfd3735158d009ce02d1f29811aa822da65
   JXPagingView: 90924b364a2ff7e94db534fad1fa50925ff69ee4
+  lottie-ios: a50d5c0160425cd4b01b852bb9578963e6d92d31
   Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
   MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
   MJExtension: 01704cca2b60a214c10761b6491eab74069d68a9
@@ -167,6 +171,6 @@ SPEC CHECKSUMS:
   Whiteboard: dc3d59f1f826e6065bd054bf499650c829753aff
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
 
-PODFILE CHECKSUM: 0caee30b8f6bff6e69eccce77afbaa62f4038a98
+PODFILE CHECKSUM: cf2d25529bb7afc537ba3188b6ef15ad3edac34b
 
 COCOAPODS: 1.11.3

+ 5 - 1
KulexiuForTeacher/Pods/Manifest.lock

@@ -23,6 +23,7 @@ PODS:
     - JCore (< 3.0.0, >= 2.0.0)
   - JXCategoryView (1.5.9)
   - JXPagingView/Pager (2.1.2)
+  - lottie-ios (2.5.3)
   - Masonry (1.1.0)
   - MBProgressHUD (1.2.0)
   - MJExtension (3.3.0)
@@ -97,6 +98,7 @@ DEPENDENCIES:
   - JPush (= 4.3.0)
   - JXCategoryView
   - JXPagingView/Pager
+  - lottie-ios (~> 2.5)
   - Masonry (~> 1.1.0)
   - MBProgressHUD (~> 1.2.0)
   - MJExtension (~> 3.3.0)
@@ -125,6 +127,7 @@ SPEC REPOS:
     - JPush
     - JXCategoryView
     - JXPagingView
+    - lottie-ios
     - Masonry
     - MBProgressHUD
     - MJExtension
@@ -151,6 +154,7 @@ SPEC CHECKSUMS:
   JPush: 88d6361fbec4be7c8b55b20b7fe1c292228f6bc2
   JXCategoryView: 2ef9ecfd3735158d009ce02d1f29811aa822da65
   JXPagingView: 90924b364a2ff7e94db534fad1fa50925ff69ee4
+  lottie-ios: a50d5c0160425cd4b01b852bb9578963e6d92d31
   Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
   MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
   MJExtension: 01704cca2b60a214c10761b6491eab74069d68a9
@@ -167,6 +171,6 @@ SPEC CHECKSUMS:
   Whiteboard: dc3d59f1f826e6065bd054bf499650c829753aff
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
 
-PODFILE CHECKSUM: 0caee30b8f6bff6e69eccce77afbaa62f4038a98
+PODFILE CHECKSUM: cf2d25529bb7afc537ba3188b6ef15ad3edac34b
 
 COCOAPODS: 1.11.3

File diff suppressed because it is too large
+ 2104 - 1833
KulexiuForTeacher/Pods/Pods.xcodeproj/project.pbxproj


+ 5 - 0
KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -134,6 +134,11 @@
 			<key>isShown</key>
 			<false/>
 		</dict>
+		<key>lottie-ios.xcscheme</key>
+		<dict>
+			<key>isShown</key>
+			<false/>
+		</dict>
 	</dict>
 	<key>SuppressBuildableAutocreation</key>
 	<dict/>

+ 205 - 0
KulexiuForTeacher/Pods/Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher-acknowledgements.markdown

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

+ 211 - 0
KulexiuForTeacher/Pods/Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher-acknowledgements.plist

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

File diff suppressed because it is too large
+ 2 - 4
KulexiuForTeacher/Pods/Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher.debug.xcconfig


File diff suppressed because it is too large
+ 2 - 4
KulexiuForTeacher/Pods/Target Support Files/Pods-KulexiuForTeacher/Pods-KulexiuForTeacher.release.xcconfig


Some files were not shown because too many files changed in this diff