소스 검색

login 页面功能 RX 拆解。

openlockPPP 1 년 전
부모
커밋
ca434aba14
39개의 변경된 파일3705개의 추가작업 그리고 1468개의 파일을 삭제
  1. 78 6
      JSJP_Student_sw.xcodeproj/project.pbxproj
  2. 1 1
      JSJP_Student_sw.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist
  3. 1 0
      JSJP_Student_sw/JSJP-Brigding-Header.h
  4. 48 0
      JSJP_Student_sw/Sources/Constants/NYFitReal.swift
  5. 0 0
      JSJP_Student_sw/Sources/Main/Base/BaseCollectionViewController.swift
  6. 132 0
      JSJP_Student_sw/Sources/Main/Base/BaseTableViewController.swift
  7. 4 0
      JSJP_Student_sw/Sources/Main/Base/BaseViewController.swift
  8. 1 1
      JSJP_Student_sw/Sources/Main/MainNavigationController.swift
  9. 23 0
      JSJP_Student_sw/Sources/Main/NYArticleNavBar.swift
  10. 70 0
      JSJP_Student_sw/Sources/Main/NYArticleNavBar.xib
  11. 190 0
      JSJP_Student_sw/Sources/Main/NYArticleViewController.swift
  12. 143 0
      JSJP_Student_sw/Sources/Main/NYWebViewController.swift
  13. 2 3
      JSJP_Student_sw/Sources/Modulars/Home/Views/HomeNavBar.swift
  14. 0 33
      JSJP_Student_sw/Sources/Modulars/Login/Controllers/LoginStoryboard.storyboard
  15. 99 0
      JSJP_Student_sw/Sources/Modulars/Login/Controllers/LoginViewController.swift
  16. 204 0
      JSJP_Student_sw/Sources/Modulars/Login/Controllers/LoginViewController.xib
  17. 26 0
      JSJP_Student_sw/Sources/Modulars/Login/Views/NYAgreementView.swift
  18. 76 0
      JSJP_Student_sw/Sources/Modulars/Login/Views/NYAgreementView.xib
  19. 23 0
      JSJP_Student_sw/Sources/Modulars/Login/Views/NYPasswordView.swift
  20. 78 0
      JSJP_Student_sw/Sources/Modulars/Login/Views/NYPasswordView.xib
  21. 22 0
      JSJP_Student_sw/Sources/Modulars/Login/Views/NYPhoneView.swift
  22. 66 0
      JSJP_Student_sw/Sources/Modulars/Login/Views/NYPhoneView.xib
  23. 4 0
      JSJP_Student_sw/Sources/Modulars/Mine/Controllers/MineParentViewController.swift
  24. 4 0
      JSJP_Student_sw/Sources/Modulars/Timekeep/Controllers/TimeKeepParentViewController.swift
  25. 2 2
      JSJP_Student_sw/Sources/Utils/URLNavigationMap.swift
  26. 3 24
      Podfile
  27. 300 1
      Podfile.lock
  28. 300 1
      Pods/Manifest.lock
  29. 1714 1367
      Pods/Pods.xcodeproj/project.pbxproj
  30. 41 27
      Pods/Pods.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist
  31. 18 0
      Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-acknowledgements.markdown
  32. 24 0
      Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-acknowledgements.plist
  33. 1 0
      Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks-Debug-input-files.xcfilelist
  34. 1 0
      Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks-Debug-output-files.xcfilelist
  35. 1 0
      Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks-Release-input-files.xcfilelist
  36. 1 0
      Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks-Release-output-files.xcfilelist
  37. 2 0
      Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks.sh
  38. 1 1
      Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw.debug.xcconfig
  39. 1 1
      Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw.release.xcconfig

+ 78 - 6
JSJP_Student_sw.xcodeproj/project.pbxproj

@@ -8,13 +8,25 @@
 
 /* Begin PBXBuildFile section */
 		2281B61AEFC76AFFBF9C29DD /* Pods_JSJP_Student_sw.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C45679F20E7108A4E8C08D40 /* Pods_JSJP_Student_sw.framework */; };
+		904B258F2A283883001F7C9C /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 904B258E2A283883001F7C9C /* LoginViewController.xib */; };
+		904B25922A28605B001F7C9C /* NYPhoneView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904B25912A28605B001F7C9C /* NYPhoneView.swift */; };
+		904B25942A286072001F7C9C /* NYPasswordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904B25932A286072001F7C9C /* NYPasswordView.swift */; };
+		904B25962A28608F001F7C9C /* NYAgreementView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904B25952A28608F001F7C9C /* NYAgreementView.swift */; };
+		904B25982A286117001F7C9C /* NYPhoneView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 904B25972A286117001F7C9C /* NYPhoneView.xib */; };
+		904B259A2A286129001F7C9C /* NYPasswordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 904B25992A286129001F7C9C /* NYPasswordView.xib */; };
+		904B259C2A286135001F7C9C /* NYAgreementView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 904B259B2A286135001F7C9C /* NYAgreementView.xib */; };
+		904B259E2A28731B001F7C9C /* NYFitReal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904B259D2A28731A001F7C9C /* NYFitReal.swift */; };
+		904B25A12A289C27001F7C9C /* NYWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904B25A02A289C27001F7C9C /* NYWebViewController.swift */; };
+		904B25A42A289C6E001F7C9C /* BaseTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904B25A32A289C6E001F7C9C /* BaseTableViewController.swift */; };
+		904B25A62A289EE5001F7C9C /* NYArticleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904B25A52A289EE5001F7C9C /* NYArticleViewController.swift */; };
+		904B25A82A289F55001F7C9C /* NYArticleNavBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904B25A72A289F55001F7C9C /* NYArticleNavBar.swift */; };
+		904B25AA2A289F65001F7C9C /* NYArticleNavBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = 904B25A92A289F65001F7C9C /* NYArticleNavBar.xib */; };
 		908E44182A27225100DA2536 /* BaseCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908E44172A27225100DA2536 /* BaseCollectionViewController.swift */; };
 		908E441D2A2749E100DA2536 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908E441C2A2749E100DA2536 /* LoginViewController.swift */; };
 		908E441F2A274AAC00DA2536 /* Exam01_ParentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908E441E2A274AAC00DA2536 /* Exam01_ParentViewController.swift */; };
 		908E44212A274B2A00DA2536 /* Exam02_ParentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908E44202A274B2A00DA2536 /* Exam02_ParentViewController.swift */; };
 		908E44232A274B3700DA2536 /* Exam03_ParentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908E44222A274B3700DA2536 /* Exam03_ParentViewController.swift */; };
 		908E44252A274B4300DA2536 /* Exam04_ParentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908E44242A274B4300DA2536 /* Exam04_ParentViewController.swift */; };
-		908E44272A2753D000DA2536 /* LoginStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 908E44262A2753D000DA2536 /* LoginStoryboard.storyboard */; };
 		90A64B902A25A49500D8BED6 /* URLNavigationMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90A64B8F2A25A49500D8BED6 /* URLNavigationMap.swift */; };
 		90A64B922A25A4DC00D8BED6 /* NYSwRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90A64B912A25A4DC00D8BED6 /* NYSwRouter.swift */; };
 		90A64B972A25A57C00D8BED6 /* NYSwToaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90A64B962A25A57C00D8BED6 /* NYSwToaster.swift */; };
@@ -122,13 +134,25 @@
 
 /* Begin PBXFileReference section */
 		0F56AF3A85733CC3ECD33CC5 /* Pods-JSJP_Student_sw.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JSJP_Student_sw.debug.xcconfig"; path = "Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw.debug.xcconfig"; sourceTree = "<group>"; };
+		904B258E2A283883001F7C9C /* LoginViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; };
+		904B25912A28605B001F7C9C /* NYPhoneView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYPhoneView.swift; sourceTree = "<group>"; };
+		904B25932A286072001F7C9C /* NYPasswordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYPasswordView.swift; sourceTree = "<group>"; };
+		904B25952A28608F001F7C9C /* NYAgreementView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYAgreementView.swift; sourceTree = "<group>"; };
+		904B25972A286117001F7C9C /* NYPhoneView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYPhoneView.xib; sourceTree = "<group>"; };
+		904B25992A286129001F7C9C /* NYPasswordView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYPasswordView.xib; sourceTree = "<group>"; };
+		904B259B2A286135001F7C9C /* NYAgreementView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYAgreementView.xib; sourceTree = "<group>"; };
+		904B259D2A28731A001F7C9C /* NYFitReal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYFitReal.swift; sourceTree = "<group>"; };
+		904B25A02A289C27001F7C9C /* NYWebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYWebViewController.swift; sourceTree = "<group>"; };
+		904B25A32A289C6E001F7C9C /* BaseTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTableViewController.swift; sourceTree = "<group>"; };
+		904B25A52A289EE5001F7C9C /* NYArticleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYArticleViewController.swift; sourceTree = "<group>"; };
+		904B25A72A289F55001F7C9C /* NYArticleNavBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYArticleNavBar.swift; sourceTree = "<group>"; };
+		904B25A92A289F65001F7C9C /* NYArticleNavBar.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYArticleNavBar.xib; sourceTree = "<group>"; };
 		908E44172A27225100DA2536 /* BaseCollectionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCollectionViewController.swift; sourceTree = "<group>"; };
 		908E441C2A2749E100DA2536 /* LoginViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = "<group>"; };
 		908E441E2A274AAC00DA2536 /* Exam01_ParentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Exam01_ParentViewController.swift; sourceTree = "<group>"; };
 		908E44202A274B2A00DA2536 /* Exam02_ParentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Exam02_ParentViewController.swift; sourceTree = "<group>"; };
 		908E44222A274B3700DA2536 /* Exam03_ParentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Exam03_ParentViewController.swift; sourceTree = "<group>"; };
 		908E44242A274B4300DA2536 /* Exam04_ParentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Exam04_ParentViewController.swift; sourceTree = "<group>"; };
-		908E44262A2753D000DA2536 /* LoginStoryboard.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LoginStoryboard.storyboard; sourceTree = "<group>"; };
 		90A64B8F2A25A49500D8BED6 /* URLNavigationMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLNavigationMap.swift; sourceTree = "<group>"; };
 		90A64B912A25A4DC00D8BED6 /* NYSwRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYSwRouter.swift; sourceTree = "<group>"; };
 		90A64B962A25A57C00D8BED6 /* NYSwToaster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYSwToaster.swift; sourceTree = "<group>"; };
@@ -269,6 +293,36 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		904B25902A285FD1001F7C9C /* Views */ = {
+			isa = PBXGroup;
+			children = (
+				904B25912A28605B001F7C9C /* NYPhoneView.swift */,
+				904B25972A286117001F7C9C /* NYPhoneView.xib */,
+				904B25932A286072001F7C9C /* NYPasswordView.swift */,
+				904B25992A286129001F7C9C /* NYPasswordView.xib */,
+				904B25952A28608F001F7C9C /* NYAgreementView.swift */,
+				904B259B2A286135001F7C9C /* NYAgreementView.xib */,
+			);
+			path = Views;
+			sourceTree = "<group>";
+		};
+		904B259F2A28970C001F7C9C /* ViewModel */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = ViewModel;
+			sourceTree = "<group>";
+		};
+		904B25A22A289C4A001F7C9C /* Base */ = {
+			isa = PBXGroup;
+			children = (
+				908E44172A27225100DA2536 /* BaseCollectionViewController.swift */,
+				90A64BB22A25D11800D8BED6 /* BaseViewController.swift */,
+				904B25A32A289C6E001F7C9C /* BaseTableViewController.swift */,
+			);
+			path = Base;
+			sourceTree = "<group>";
+		};
 		908E44192A2746FC00DA2536 /* 考试 */ = {
 			isa = PBXGroup;
 			children = (
@@ -283,6 +337,8 @@
 		908E441A2A27495400DA2536 /* Login */ = {
 			isa = PBXGroup;
 			children = (
+				904B259F2A28970C001F7C9C /* ViewModel */,
+				904B25902A285FD1001F7C9C /* Views */,
 				908E441B2A27496700DA2536 /* Controllers */,
 			);
 			path = Login;
@@ -292,7 +348,7 @@
 			isa = PBXGroup;
 			children = (
 				908E441C2A2749E100DA2536 /* LoginViewController.swift */,
-				908E44262A2753D000DA2536 /* LoginStoryboard.storyboard */,
+				904B258E2A283883001F7C9C /* LoginViewController.xib */,
 			);
 			path = Controllers;
 			sourceTree = "<group>";
@@ -489,11 +545,14 @@
 		B204269C2A1B45A3009FAC45 /* Main */ = {
 			isa = PBXGroup;
 			children = (
+				904B25A22A289C4A001F7C9C /* Base */,
 				90A64B982A25A7F100D8BED6 /* MainNavigationController.swift */,
-				90A64BB22A25D11800D8BED6 /* BaseViewController.swift */,
 				90A64BBC2A25D9D300D8BED6 /* MainTabBarController.swift */,
 				90A64BBE2A25DFDA00D8BED6 /* MainTabBarViewReactor.swift */,
-				908E44172A27225100DA2536 /* BaseCollectionViewController.swift */,
+				904B25A02A289C27001F7C9C /* NYWebViewController.swift */,
+				904B25A52A289EE5001F7C9C /* NYArticleViewController.swift */,
+				904B25A72A289F55001F7C9C /* NYArticleNavBar.swift */,
+				904B25A92A289F65001F7C9C /* NYArticleNavBar.xib */,
 			);
 			path = Main;
 			sourceTree = "<group>";
@@ -720,6 +779,7 @@
 				B204273C2A1B567A009FAC45 /* NYImage.swift */,
 				B204273E2A1B5691009FAC45 /* NYFont.swift */,
 				B20427402A1B56B1009FAC45 /* NYNumber.swift */,
+				904B259D2A28731A001F7C9C /* NYFitReal.swift */,
 			);
 			path = Constants;
 			sourceTree = "<group>";
@@ -815,14 +875,18 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				904B259C2A286135001F7C9C /* NYAgreementView.xib in Resources */,
 				90A64BCE2A2603DD00D8BED6 /* HomeNavBar.xib in Resources */,
 				B20427242A1B4ED2009FAC45 /* SearchBarView.xib in Resources */,
 				B20426782A1B0E52009FAC45 /* LaunchScreen.storyboard in Resources */,
-				908E44272A2753D000DA2536 /* LoginStoryboard.storyboard in Resources */,
 				B20427302A1B4ED2009FAC45 /* PopOverViewCell.xib in Resources */,
+				904B259A2A286129001F7C9C /* NYPasswordView.xib in Resources */,
 				90A64BC82A25E98C00D8BED6 /* Main.storyboard in Resources */,
 				B20426752A1B0E52009FAC45 /* Assets.xcassets in Resources */,
 				B20427252A1B4ED2009FAC45 /* EmptyView.xib in Resources */,
+				904B25AA2A289F65001F7C9C /* NYArticleNavBar.xib in Resources */,
+				904B258F2A283883001F7C9C /* LoginViewController.xib in Resources */,
+				904B25982A286117001F7C9C /* NYPhoneView.xib in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -895,10 +959,12 @@
 				908E44252A274B4300DA2536 /* Exam04_ParentViewController.swift in Sources */,
 				B20427432A1B5846009FAC45 /* Snap.swift in Sources */,
 				B204270F2A1B4ED2009FAC45 /* LWPlayer.swift in Sources */,
+				904B25A42A289C6E001F7C9C /* BaseTableViewController.swift in Sources */,
 				B20427162A1B4ED2009FAC45 /* LWPlayerUtils.swift in Sources */,
 				90A64BB32A25D11800D8BED6 /* BaseViewController.swift in Sources */,
 				B20427362A1B5420009FAC45 /* NetEnvironment.swift in Sources */,
 				90A64B902A25A49500D8BED6 /* URLNavigationMap.swift in Sources */,
+				904B25A12A289C27001F7C9C /* NYWebViewController.swift in Sources */,
 				B204271F2A1B4ED2009FAC45 /* GesConflictCollectionView.swift in Sources */,
 				B20427132A1B4ED2009FAC45 /* LWPlayerSlider.swift in Sources */,
 				90A64BA62A25BD3A00D8BED6 /* Networking.swift in Sources */,
@@ -916,6 +982,7 @@
 				90A64BC12A25E1CF00D8BED6 /* TogetherDataManager.swift in Sources */,
 				B20427312A1B4ED2009FAC45 /* PopOverViewSettings.swift in Sources */,
 				90A64BCC2A2603CB00D8BED6 /* HomeNavBar.swift in Sources */,
+				904B25A62A289EE5001F7C9C /* NYArticleViewController.swift in Sources */,
 				B20426AE2A1B4738009FAC45 /* NotificationCenter+Rx.swift in Sources */,
 				B20426AC2A1B4738009FAC45 /* UIScrollView+Rx.swift in Sources */,
 				B20426D32A1B4DB6009FAC45 /* Array+SectionModel.swift in Sources */,
@@ -924,6 +991,8 @@
 				90A64B9B2A25A91B00D8BED6 /* HomeService.swift in Sources */,
 				B20426D12A1B4DB6009FAC45 /* UIBarButtonItem+FixSpace.swift in Sources */,
 				90A64BB12A25D03700D8BED6 /* SplashViewController.swift in Sources */,
+				904B25962A28608F001F7C9C /* NYAgreementView.swift in Sources */,
+				904B25A82A289F55001F7C9C /* NYArticleNavBar.swift in Sources */,
 				90A64BA02A25AA0900D8BED6 /* SplashModel.swift in Sources */,
 				B20427172A1B4ED2009FAC45 /* LWPlayerDelegate.swift in Sources */,
 				B20426D82A1B4DB6009FAC45 /* VTContentView+Gesture.swift in Sources */,
@@ -935,7 +1004,9 @@
 				B20427382A1B549F009FAC45 /* RequestError.swift in Sources */,
 				B204272E2A1B4ED2009FAC45 /* PopOverView.swift in Sources */,
 				B20426D42A1B4DB6009FAC45 /* UIView+CornerRadius.swift in Sources */,
+				904B25942A286072001F7C9C /* NYPasswordView.swift in Sources */,
 				B20426C92A1B4DB6009FAC45 /* UIColor+Hex.swift in Sources */,
+				904B25922A28605B001F7C9C /* NYPhoneView.swift in Sources */,
 				B20426CD2A1B4DB6009FAC45 /* String+BoundingRect.swift in Sources */,
 				B20426AD2A1B4738009FAC45 /* UILabel+Rx.swift in Sources */,
 				B20426D72A1B4DB6009FAC45 /* NSAttributedString+BoundingRect.swift in Sources */,
@@ -960,6 +1031,7 @@
 				90A64BBD2A25D9D300D8BED6 /* MainTabBarController.swift in Sources */,
 				B20426AB2A1B4738009FAC45 /* Moya+Rx.swift in Sources */,
 				B204266C2A1B0E50009FAC45 /* AppDelegate.swift in Sources */,
+				904B259E2A28731B001F7C9C /* NYFitReal.swift in Sources */,
 				B20427142A1B4ED2009FAC45 /* AVPlayer+LWPlayer.swift in Sources */,
 				B204273D2A1B567A009FAC45 /* NYImage.swift in Sources */,
 				90A64B972A25A57C00D8BED6 /* NYSwToaster.swift in Sources */,

+ 1 - 1
JSJP_Student_sw.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>JSJP_Student_sw.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>43</integer>
+			<integer>45</integer>
 		</dict>
 	</dict>
 </dict>

+ 1 - 0
JSJP_Student_sw/JSJP-Brigding-Header.h

@@ -11,5 +11,6 @@
 //第三方
 #import "GJRatioAutoLayout.h"
 #import "VTMagic.h"
+#import <QMUIKit/QMUIKit.h>
 
 #endif /* JSJP_Brigding_Header_h */

+ 48 - 0
JSJP_Student_sw/Sources/Constants/NYFitReal.swift

@@ -0,0 +1,48 @@
+//
+//  NYFitReal.swift
+//  JSJP_Student_sw
+//
+//  Created by Ning.ge on 2023/6/1.
+//
+
+import UIKit
+
+struct NYFitReal {
+    //以iphone6为基础缩放系数
+    static let screenHeight = UIScreen.main.bounds.height
+    static let screenWidth = UIScreen.main.bounds.width
+    
+    //竖屏
+    static func isPortrait() -> Bool {
+        let orientation = UIDevice.current.orientation
+        return orientation.isPortrait
+    }
+    //横屏
+    static func isLandscape() -> Bool {
+        let orientation = UIDevice.current.orientation
+        return orientation.isLandscape
+    }
+    //根据ip6的屏幕来拉伸宽
+    static func RealValue(x:CGFloat) -> CGFloat{
+        return ((x)*((isPortrait() ? screenWidth : screenHeight)/375.0))
+    }
+    //根据ip6的屏幕来拉伸宽Int
+    static func RealValueInt(x:CGFloat) -> Int{
+        return ((NSInteger)((x)*((isPortrait() ? screenWidth : screenHeight)/375.0)))
+    }
+    //iphone14高拉伸
+    static func RealHeightValue(height:CGFloat) -> CGFloat{
+        return ((height)*((isPortrait() ? kScreenHeight : screenWidth)/812.0))
+    }
+    
+    //iphone6缩放系数
+    static let Ip6ScaleWidth = screenWidth/375.0
+    static let Ip6ScaleHeight = screenHeight/667.0
+
+    
+    //以iphone14为基础缩放系数
+    static let Ip14ScaleWidth = screenWidth/375.0
+    static let Ip14ScaleHeight = screenHeight/812.0
+
+    
+}

+ 0 - 0
JSJP_Student_sw/Sources/Main/BaseCollectionViewController.swift → JSJP_Student_sw/Sources/Main/Base/BaseCollectionViewController.swift


+ 132 - 0
JSJP_Student_sw/Sources/Main/Base/BaseTableViewController.swift

@@ -0,0 +1,132 @@
+//
+//  BaseTableViewController.swift
+//  JSJP_Student_sw
+//
+//  Created by Ning.ge on 2023/6/1.
+//
+
+import UIKit
+
+import RxSwift
+import EmptyKit
+
+class BaseTableViewController: BaseViewController,Refreshable {
+    
+    var isEmptyDisplay: Bool = true
+    
+    let tableView: UITableView = UITableView().then{
+        $0.backgroundColor = .db_gray
+        $0.showsVerticalScrollIndicator = false
+        $0.tableFooterView = UIView()
+    }
+    
+    override func setupConstraints() {
+        tableView.snp.makeConstraints { (make) in
+            make.edges.equalTo(0)
+        }
+    }
+    
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        
+        tableView.ept.dataSource = self
+        tableView.ept.delegate = self
+        
+        view.addSubview(tableView)
+        
+        showLoadAnimation()
+        
+        registerNetErrorNotification()
+        
+    }
+    
+    //MARK: Public Method
+    func startRefresh() {
+        
+        self.tableView.setContentOffset(.zero, animated: true)
+        DispatchQueue.delay(time: 0.3, action: {
+            self.tableView.es.startPullToRefresh()
+        })
+    }
+    
+    func registerNetErrorNotification() {
+        
+        NotificationCenter.default.rx.notification(custom: .netError)
+            .subscribe(onNext: {[unowned self] (_) in
+                
+                self.stopRefresh()
+                
+                self.showNetErrorView()
+                
+            })
+            .disposed(by: disposeBag)
+    }
+    
+    
+    func showNetErrorView() {
+        
+        if totalItems() > 0 { return }
+        
+        self.showAnimationView(self.tableView, animationType: .failure)
+    }
+    
+    func showLoadAnimation() {
+        self.showAnimationView(self.tableView)
+    }
+    
+    func stopRefresh() {
+        
+        guard let isRefreshing = tableView.header?.isRefreshing else { return }
+        
+        if isRefreshing {
+            tableView.es.stopPullToRefresh()
+        }
+    }
+    
+    //MARK: Private Method
+    private func stopLoad() {
+        
+        guard let isLoading = tableView.footer?.isRefreshing else { return }
+        
+        if isLoading {
+            tableView.es.stopLoadingMore()
+        }
+    }
+}
+
+//MARK: Notification
+extension BaseTableViewController {
+    
+    func totalItems() -> Int {
+        
+        var totalItems: Int = 0
+        
+        let sectionCount = self.tableView.numberOfSections
+        
+        for i in 0 ..< sectionCount {
+            
+            let items = self.tableView.numberOfRows(inSection: i)
+            
+            totalItems += items
+        }
+        
+        return totalItems
+    }
+}
+
+extension BaseTableViewController:EmptyDelegate,EmptyDataSource {
+    
+    func customViewForEmpty(in view: UIView) -> UIView? {
+        
+        return EmptyView.loadFromNib()
+    }
+    
+    func emptyShouldAllowScroll(in view: UIView) -> Bool {
+        return true
+    }
+    
+    func emptyShouldDisplay(in view: UIView) -> Bool {
+        return isEmptyDisplay
+    }
+}

+ 4 - 0
JSJP_Student_sw/Sources/Main/BaseViewController.swift → JSJP_Student_sw/Sources/Main/Base/BaseViewController.swift

@@ -30,6 +30,10 @@ class BaseViewController: UIViewController, NetAnimationLoadable {
         super.init(nibName: nil, bundle: nil)
     }
     
+    init(nibName:String) {
+        super.init(nibName: nibName, bundle: nil)
+    }
+
     required convenience init?(coder aDecoder: NSCoder) {
         self.init()
     }

+ 1 - 1
JSJP_Student_sw/Sources/Main/MainNavigationController.swift

@@ -38,4 +38,4 @@ final class MainNavigationController: UINavigationController {
     }
 }
 
-extension MainNavigationController: UIGestureRecognizerDelegate {}
+//extension MainNavigationController: UIGestureRecognizerDelegate {}

+ 23 - 0
JSJP_Student_sw/Sources/Main/NYArticleNavBar.swift

@@ -0,0 +1,23 @@
+//
+//  NYArticleNavBar.swift
+//  JSJP_Student_sw
+//
+//  Created by Ning.ge on 2023/6/1.
+//
+
+import UIKit
+
+final class NYArticleNavBar: UIView,NibLoadable {
+    
+    @IBOutlet weak var backButton: UIButton!
+    @IBOutlet weak var shareButton: UIButton!
+    @IBOutlet weak var applyButton: UIButton!
+    @IBOutlet weak var titleLabel: UILabel!
+    
+    @IBAction func pop(_ sender: UIButton) {
+        
+        
+    }
+    
+
+}

+ 70 - 0
JSJP_Student_sw/Sources/Main/NYArticleNavBar.xib

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="NYArticleNavBar">
+            <rect key="frame" x="0.0" y="0.0" width="636" height="210"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hl4-2O-Meu">
+                    <rect key="frame" x="596" y="90" width="30" height="30"/>
+                </button>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IQO-dK-G2z">
+                    <rect key="frame" x="60" y="105" width="486" height="0.0"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                    <color key="textColor" red="0.2470588235" green="0.2470588235" blue="0.2470588235" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ord-7s-vCm">
+                    <rect key="frame" x="20" y="90" width="30" height="30"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="30" id="1p7-Z5-4nF"/>
+                        <constraint firstAttribute="height" constant="30" id="507-vM-fCl"/>
+                    </constraints>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KDS-ig-Mpg">
+                    <rect key="frame" x="556" y="90" width="30" height="30"/>
+                </button>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="IQO-dK-G2z" secondAttribute="trailing" constant="90" id="8BW-NO-M8E"/>
+                <constraint firstItem="KDS-ig-Mpg" firstAttribute="width" secondItem="Ord-7s-vCm" secondAttribute="width" id="8L5-6U-LXN"/>
+                <constraint firstItem="IQO-dK-G2z" firstAttribute="centerY" secondItem="Ord-7s-vCm" secondAttribute="centerY" id="8hc-WS-9EP"/>
+                <constraint firstItem="KDS-ig-Mpg" firstAttribute="leading" secondItem="IQO-dK-G2z" secondAttribute="trailing" constant="10" id="LV6-Fa-prV"/>
+                <constraint firstItem="Hl4-2O-Meu" firstAttribute="width" secondItem="Ord-7s-vCm" secondAttribute="width" id="Tce-4e-rQv"/>
+                <constraint firstItem="IQO-dK-G2z" firstAttribute="leading" secondItem="Ord-7s-vCm" secondAttribute="trailing" constant="10" id="hXX-if-tra"/>
+                <constraint firstItem="IQO-dK-G2z" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="60" id="i8Q-y3-PYz"/>
+                <constraint firstItem="Hl4-2O-Meu" firstAttribute="height" secondItem="Ord-7s-vCm" secondAttribute="height" id="kLc-ii-7ZF"/>
+                <constraint firstItem="Hl4-2O-Meu" firstAttribute="leading" secondItem="KDS-ig-Mpg" secondAttribute="trailing" constant="10" id="utB-zU-C0m"/>
+                <constraint firstItem="KDS-ig-Mpg" firstAttribute="height" secondItem="Ord-7s-vCm" secondAttribute="height" id="vri-RT-dpc"/>
+                <constraint firstItem="KDS-ig-Mpg" firstAttribute="centerY" secondItem="Ord-7s-vCm" secondAttribute="centerY" id="wvL-SS-46G"/>
+                <constraint firstItem="IQO-dK-G2z" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="x4w-YW-ZE6"/>
+                <constraint firstItem="Hl4-2O-Meu" firstAttribute="centerY" secondItem="Ord-7s-vCm" secondAttribute="centerY" id="ytL-EQ-lTb"/>
+            </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="applyButton" destination="KDS-ig-Mpg" id="PSe-vy-VIC"/>
+                <outlet property="backButton" destination="Ord-7s-vCm" id="frF-sl-q9e"/>
+                <outlet property="shareButton" destination="Hl4-2O-Meu" id="zYI-og-oy0"/>
+                <outlet property="titleLabel" destination="IQO-dK-G2z" id="Pg7-w5-4aN"/>
+            </connections>
+            <point key="canvasLocation" x="42" y="-12"/>
+        </view>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 190 - 0
JSJP_Student_sw/Sources/Main/NYArticleViewController.swift

@@ -0,0 +1,190 @@
+//
+//  NYArticleViewController.swift
+//  JSJP_Student_sw
+//
+//  Created by Ning.ge on 2023/6/1.
+//
+
+import UIKit
+
+import WebKit
+
+final class NYArticleViewController: BaseViewController {
+
+    private var statusBar: UIStatusBarStyle = .default
+    private var link: String
+    private let maxOffest: CGFloat = isIphoneX ? 88 : 64
+    private let minOffest: CGFloat = isIphoneX ? 44 : 32
+    private lazy var webView: WKWebView = {
+        let webView = WKWebView(frame: .zero)
+        webView.scrollView.backgroundColor = UIColor.db_gray
+        return webView
+    }()
+    private lazy var navBar: NYArticleNavBar = {
+        let navBar = NYArticleNavBar.loadFromNib()
+        navBar.backgroundColor = UIColor.db_white
+        navBar.alpha = 0
+        navBar.backButton.setImage(NYImage.Home.back?.with(color: UIColor.db_pink), for: .normal)
+        navBar.shareButton.setImage(NYImage.Article.more?.with(color: UIColor.db_pink), for: .normal)
+        navBar.applyButton.setImage(NYImage.Home.editRcmd?.with(color: UIColor.db_pink), for: .normal)
+        
+        return navBar
+    }()
+    private lazy var backButton: UIButton = {
+        let backButton = UIButton(frame: .zero)
+        backButton.setImage(NYImage.Home.back, for: .normal)
+        return backButton
+    }()
+    private lazy var shareButton: UIButton = {
+        let shareButton = UIButton(frame: .zero)
+        shareButton.setImage(NYImage.Article.more?.with(color: UIColor.db_white), for: .normal)
+        return shareButton
+    }()
+    
+    
+    init(link:String) {
+        
+        self.link = link
+        super.init()
+        
+        log.info(link)
+    }
+    
+    required convenience init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+    
+    override func setupConstraints() {
+        
+        webView.snp.makeConstraints { (make) in
+           make.edges.equalToSuperview()
+        }
+        
+        navBar.snp.makeConstraints { (make) in
+            make.top.left.right.equalToSuperview()
+            make.height.equalTo(maxOffest)
+        }
+        
+        backButton.snp.makeConstraints { (make) in
+            make.width.height.equalTo(30)
+            make.left.equalTo(15)
+            make.centerY.equalTo(navBar.snp.centerY).offset(20)
+        }
+        shareButton.snp.makeConstraints { (make) in
+            make.width.height.equalTo(30)
+            make.right.equalTo(-15)
+            make.centerY.equalTo(navBar.snp.centerY).offset(20)
+        }
+    }
+    
+    override var preferredStatusBarStyle: UIStatusBarStyle {
+        return statusBar
+    }
+    
+    override func viewWillAppear(_ animated: Bool) {
+        super.viewWillAppear(animated)
+        self.navigationController?.setNavigationBarHidden(true, animated: true)
+        
+        statusBar = .default
+        self.setNeedsStatusBarAppearanceUpdate()
+    }
+    
+    override func viewWillDisappear(_ animated: Bool) {
+        super.viewWillDisappear(animated)
+        
+        statusBar = .lightContent
+        self.setNeedsStatusBarAppearanceUpdate()
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        
+        self.view.addSubview(webView)
+        self.view.addSubview(navBar)
+        self.view.addSubview(backButton)
+        self.view.addSubview(shareButton)
+        
+        webView.navigationDelegate = self
+        webView.allowsBackForwardNavigationGestures = true
+        webView.scrollView.delegate = self
+        
+        if #available(iOS 11, *) {
+            webView.scrollView.contentInsetAdjustmentBehavior = .never
+        } else {
+            self.automaticallyAdjustsScrollViewInsets = false
+        }
+        
+        if let linkURL = URL(string: link) {
+            webView.load(URLRequest(url: linkURL))
+        }
+        
+        self.clickEvent()
+        
+    }
+    
+    private func loadProgress() {
+
+        webView.rx.observe(Double.self, "estimatedProgress")
+            .filterNil()
+            .subscribe(onNext: { (_) in
+
+            })
+            .disposed(by: disposeBag)
+    }
+    
+    private func clickEvent() {
+        
+        navBar.backButton.rx.tap
+            .subscribe(onNext: {[unowned self] (_) in
+            
+              self.navigationController?.popViewController(animated: true)
+          })
+            .disposed(by: disposeBag)
+        
+        backButton.rx.tap
+            .subscribe(onNext: {[unowned self] (_) in
+                
+                self.navigationController?.popViewController(animated: true)
+            })
+            .disposed(by: disposeBag)
+    }
+}
+
+extension NYArticleViewController: WKNavigationDelegate {
+    
+    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
+
+        webView.evaluateJavaScript("document.getElementsByClassName(\"top-holder\")[0].hidden = true;", completionHandler: nil)
+    }
+    
+    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
+    }
+    
+    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
+        
+        if navigationAction.targetFrame == nil {
+            webView.load(navigationAction.request)
+        }
+        decisionHandler(.allow)
+    }
+}
+
+extension NYArticleViewController: UIScrollViewDelegate {
+    
+    func scrollViewDidScroll(_ scrollView: UIScrollView) {
+        
+        let offestY = scrollView.contentOffset.y
+        if offestY > 0 {
+            backButton.alpha = 0
+            shareButton.alpha = 0
+            let alpha = (offestY+minOffest)/maxOffest
+            navBar.alpha = alpha
+            navBar.titleLabel.text = webView.title
+            
+        } else {
+            backButton.alpha = 1
+            shareButton.alpha = 1
+            navBar.alpha = 0
+        }
+    }
+}

+ 143 - 0
JSJP_Student_sw/Sources/Main/NYWebViewController.swift

@@ -0,0 +1,143 @@
+//
+//  NYWebViewController.swift
+//  JSJP_Student_sw
+//
+//  Created by Ning.ge on 2023/6/1.
+//
+
+import UIKit
+
+import WebKit
+import RxSwift
+
+final class NYWebViewController: BaseViewController {
+
+    private var link: String
+
+    private lazy var webView: WKWebView = {
+        let webView = WKWebView(frame: .zero)
+        return webView
+    }()
+    
+    init(link:String) {
+        
+        self.link = link
+        super.init()
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+    
+    override func setupConstraints() {
+        
+        webView.snp.makeConstraints { (make) in
+           make.edges.equalToSuperview()
+        }
+        
+    }
+    
+    override func viewWillAppear(_ animated: Bool) {
+        super.viewWillAppear(animated)
+        self.navigationController?.setNavigationBarHidden(false, animated: true)
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    
+        view.addSubview(webView)
+        
+        setupWebView()
+        
+    }
+
+    private func setupWebView() {
+    
+        webView.navigationDelegate = self
+        webView.allowsBackForwardNavigationGestures = true
+        
+        if let linkURL = URL(string: link) {
+            webView.load(URLRequest(url: linkURL))
+           
+        }
+    }
+    
+    private func adjustScrollViewTop() {
+        if #available(iOS 11, *) {
+            webView.scrollView.contentInsetAdjustmentBehavior = .never
+        }else{
+            self.automaticallyAdjustsScrollViewInsets = false
+        }
+    }
+    
+
+    
+}
+
+extension NYWebViewController: WKNavigationDelegate {
+    
+    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
+
+        self.setLeftItems()
+        self.setRightItems()
+        title = webView.title
+            //webView.evaluateJavaScript("document.getElementsByClassName(\"top-holder\")[0].hidden = true;", completionHandler: nil)
+    }
+    
+    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
+        NYSwToaster.show("被禁止访问了???")
+    }
+    
+    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
+        
+        if navigationAction.targetFrame == nil {
+            webView.load(navigationAction.request)
+        }
+        decisionHandler(.allow)
+    }
+
+}
+
+//MARK: - setBarButtonItem
+extension NYWebViewController {
+    
+    private func setLeftItems() {
+        let backItem = UIBarButtonItem(image: NYImage.Home.back?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(back))
+        
+        let closeButton = UIButton(type: .custom)
+        closeButton.setTitle("关闭", for: .normal)
+        closeButton.setTitleColor(UIColor.db_white, for: .normal)
+        closeButton.titleLabel?.font = NYFont.SysFont.sys_16
+        closeButton.rx.tap.subscribe(onNext: {[unowned self] _ in
+            self.close()
+        }).disposed(by: disposeBag)
+        let closeItem = UIBarButtonItem(customView: closeButton)
+        
+        self.navigationItem.leftBarButtonItems = [backItem,closeItem]
+    }
+    
+    private func setRightItems() {
+       
+       let moreImage = NYImage.Home.more?.with(color: UIColor.db_white)
+        
+        let moreItem = UIBarButtonItem(image:moreImage?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(more))
+       self.navigationItem.rightBarButtonItem = moreItem
+    }
+    
+    @objc private func back() {
+        
+        if webView.canGoBack {
+            webView.goBack()
+        }else{
+            self.navigationController?.popViewController(animated: true)
+        }
+    }
+    
+    private func close() {
+        self.navigationController?.popViewController(animated: true)
+    }
+    
+    @objc private func more() {
+       
+    }
+}

+ 2 - 3
JSJP_Student_sw/Sources/Modulars/Home/Views/HomeNavBar.swift

@@ -23,11 +23,10 @@ final class HomeNavBar: UIView,NibLoadable {
         user_Icon_btn.rx.tap.subscribe(onNext:{ [unowned self] (_) in
             
             NSLog("user_Icon_btnuser_Icon_btnuser_Icon_btn")
-//            let loginController = LoginViewController()
-//            navigator.push(loginController)
+            let loginController = LoginViewController(nibName: "LoginViewController")
             
-            let loginController = UIStoryboard(name: "LoginStoryboard", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController")
             navigator.push(loginController)
+
         }).disposed(by: rx.disposeBag)
     }
     

+ 0 - 33
JSJP_Student_sw/Sources/Modulars/Login/Controllers/LoginStoryboard.storyboard

@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
-    <device id="retina5_5" orientation="portrait" appearance="light"/>
-    <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
-        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
-        <capability name="System colors in document resources" minToolsVersion="11.0"/>
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <scenes>
-        <!--Login View Controller-->
-        <scene sceneID="s0d-6b-0kx">
-            <objects>
-                <viewController storyboardIdentifier="LoginViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="Y6W-OH-hqX" customClass="LoginViewController" customModule="JSJP_Student_sw" customModuleProvider="target" sceneMemberID="viewController">
-                    <view key="view" contentMode="scaleToFill" id="5EZ-qb-Rvc">
-                        <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <viewLayoutGuide key="safeArea" id="vDu-zF-Fre"/>
-                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-                    </view>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="24" y="-28"/>
-        </scene>
-    </scenes>
-    <resources>
-        <systemColor name="systemBackgroundColor">
-            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-        </systemColor>
-    </resources>
-</document>

+ 99 - 0
JSJP_Student_sw/Sources/Modulars/Login/Controllers/LoginViewController.swift

@@ -7,5 +7,104 @@
 import UIKit
 
 final class LoginViewController: BaseViewController {
+  
+    
+    // MARK: 私有属性
+  
+    // MARK: UI
+    
+    @IBOutlet weak var welcomeLab: UILabel!
+    //关闭按钮
+    @IBOutlet weak var closeBtn: UIButton!
+    //登录按钮
+    @IBOutlet weak var loginBtn: UIButton!
+    //身份证
+    let phoneView  = NYPhoneView.loadFromNib().then {
+        $0.backgroundColor = UIColor(242, 243, 245)
+        $0.layer.cornerRadius = 20.f
+        $0.layer.masksToBounds = true
+    }
+    //密码
+    let passwordView = NYPasswordView.loadFromNib().then {
+        $0.backgroundColor = UIColor(242, 243, 245)
+        $0.layer.cornerRadius = 20.f
+        $0.layer.masksToBounds = true
+    }
+    //同意
+    let agreementView = NYAgreementView.loadFromNib()
+    
+    override func setupConstraints() {
+        
+        phoneView.snp.makeConstraints { make in
+            make.top.equalTo(welcomeLab.snp_bottomMargin).offset(NYFitReal.RealValue(x: 40.f))
+            make.left.equalToSuperview().offset(NYFitReal.RealValue(x: 23.5))
+            make.right.equalToSuperview().offset(-NYFitReal.RealValue(x: 23.5))
+            make.height.equalTo(40.f)
+        }
+        
+        passwordView.snp.makeConstraints { make in
+            make.top.equalTo(phoneView.snp_bottomMargin).offset(NYFitReal.RealValue(x: 20.f))
+            make.left.equalToSuperview().offset(NYFitReal.RealValue(x: 23.5))
+            make.right.equalToSuperview().offset(-NYFitReal.RealValue(x: 23.5))
+            make.height.equalTo(40.f)
+        }
+        
+        agreementView.snp.makeConstraints { make in
+            make.top.equalTo(passwordView.snp_bottomMargin).offset(NYFitReal.RealValue(x: 20.f))
+            make.left.equalToSuperview().offset(NYFitReal.RealValue(x: 23.5))
+            make.right.equalToSuperview().offset(-NYFitReal.RealValue(x: 23.5))
+            make.height.equalTo(30.f)
+        }
+        
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        
+        NSLog("LoginViewController")
+        //配置 snap
+        configureMagicController()
+        //biand绑定
+        biandViewModel()
+    }
+    // MARK: 私有方法
+    func configureMagicController(){
+     
+        self.view.addSubview(phoneView)
+        self.view.addSubview(passwordView)
+        self.view.addSubview(agreementView)
+        
+    }
+    
+    func biandViewModel(){
+        
+        //验证账号
+        
+        //验证密码
+        
+        //同意
+        agreementView.agreeBtn.rx.tap.subscribe ({ [unowned self] (_)  in
+            self.agreementView.agreeBtn.isSelected = !self.agreementView.agreeBtn.isSelected
+        }).disposed(by: rx.disposeBag)
+        //用户协议
+        agreementView.user_protocol_btn.rx.tap.subscribe ({ [unowned self] (_)  in
+            //跳web
+            navigator.push("https://ys.zzxcx.net/xy_jsjp.html")
+        }).disposed(by: rx.disposeBag)
+        //隐私
+        agreementView.user_privacy_btn.rx.tap.subscribe ({ [unowned self] (_)  in
+            //跳web
+            navigator.push("https://ys.zzxcx.net/xy_jsjp.html")
+        }).disposed(by: rx.disposeBag)
+    }
+    // MARK: 事件
+    
+    @IBAction func actionCloseClickdo(_ sender: UIButton) {
+        self.navigationController?.popViewController(animated: true)
+    }
+    
+    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
+        self.view.endEditing(true)
+    }
     
 }

+ 204 - 0
JSJP_Student_sw/Sources/Modulars/Login/Controllers/LoginViewController.xib

@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina5_9" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="LoginViewController" customModule="JSJP_Student_sw" customModuleProvider="target">
+            <connections>
+                <outlet property="closeBtn" destination="EVl-59-y79" id="vrf-aV-HE4"/>
+                <outlet property="loginBtn" destination="mkk-GL-u9a" id="gNo-sV-KbK"/>
+                <outlet property="view" destination="iN0-l3-epB" id="iRt-3P-IQG"/>
+                <outlet property="welcomeLab" destination="01O-M6-QOe" id="qOc-aI-mrI"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="UIScrollView" customModule="JSJP_Student_sw" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7MN-G5-6uG">
+                    <rect key="frame" x="0.0" y="0.0" width="375" height="778"/>
+                    <subviews>
+                        <button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mkk-GL-u9a">
+                            <rect key="frame" x="24" y="474" width="327" height="40"/>
+                            <color key="backgroundColor" red="0.28627450980392155" green="0.55686274509803924" blue="0.96078431372549022" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="40" id="xcw-eX-L9u"/>
+                            </constraints>
+                            <state key="normal" title="登 录"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="20"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
+                                    <real key="value" value="0.0"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </button>
+                        <button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EVl-59-y79">
+                            <rect key="frame" x="323.66666666666669" y="29.999999999999996" width="36.333333333333314" height="36.666666666666657"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="36.5" id="IQ9-1h-8fA"/>
+                                <constraint firstAttribute="width" constant="36.5" id="RKM-7o-FsD"/>
+                            </constraints>
+                            <state key="normal" image="取消"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                    <integer key="value" value="20"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="actionCloseClickdo:" destination="-1" eventType="touchUpInside" id="6CG-Pl-uDr"/>
+                            </connections>
+                        </button>
+                        <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Bk4-pH-CUe">
+                            <rect key="frame" x="112" y="521" width="66" height="29"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="29" id="gi2-8h-M4p"/>
+                                <constraint firstAttribute="width" constant="66" id="he8-1A-lcp"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <state key="normal" title="账号注册&gt;">
+                                <color key="titleColor" red="0.28627450980000002" green="0.5568627451" blue="0.96078431369999995" alpha="1" colorSpace="deviceRGB"/>
+                            </state>
+                        </button>
+                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="|" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tbu-mA-6Dr">
+                            <rect key="frame" x="186" y="527" width="3" height="17"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="17" id="ufc-PW-Dl8"/>
+                                <constraint firstAttribute="width" constant="3" id="xBg-AO-rmB"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <color key="textColor" red="0.28627450980000002" green="0.5568627451" blue="0.96078431369999995" alpha="1" colorSpace="deviceRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KKk-kv-znM">
+                            <rect key="frame" x="57.000000000000007" y="726.33333333333337" width="84.666666666666686" height="1"/>
+                            <color key="backgroundColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="84.5" id="CLG-8v-j7F"/>
+                                <constraint firstAttribute="height" constant="1" id="J5w-qm-0k6"/>
+                            </constraints>
+                        </view>
+                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="第三方登录" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="auc-NN-gV6">
+                            <rect key="frame" x="151.66666666666666" y="718.33333333333337" width="72" height="17"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="17" id="AyM-35-i51"/>
+                                <constraint firstAttribute="width" constant="72" id="v4Q-jo-KSC"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Tiq-uJ-db5">
+                            <rect key="frame" x="232.99999999999997" y="726.33333333333337" width="84.666666666666657" height="1"/>
+                            <color key="backgroundColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="84.670000000000002" id="94D-Kb-sce"/>
+                                <constraint firstAttribute="height" constant="1" id="SgO-am-Lq5"/>
+                            </constraints>
+                        </view>
+                        <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vRR-5k-il3">
+                            <rect key="frame" x="66.666666666666686" y="745.33333333333337" width="242" height="40"/>
+                            <color key="backgroundColor" red="0.0039215686269999999" green="0.75686274509999996" blue="0.55294117649999996" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="242" id="3Ar-d5-iVZ"/>
+                                <constraint firstAttribute="height" constant="40" id="J3L-1V-Jmh"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                            <inset key="imageEdgeInsets" minX="-6" minY="0.0" maxX="0.0" maxY="0.0"/>
+                            <state key="normal" title="一键微信登录" image="homelogin_weixin"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                    <integer key="value" value="20"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </button>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="欢迎登录" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="01O-M6-QOe">
+                            <rect key="frame" x="30" y="235.66666666666666" width="287" height="28.999999999999972"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="29" id="cIP-r0-nY7"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="24"/>
+                            <color key="textColor" red="0.039215686270000001" green="0.1019607843" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="QXY-Eu-AUw">
+                            <rect key="frame" x="134.66666666666666" y="96.666666666666686" width="105.66666666666666" height="101.33333333333331"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="101.5" id="4fN-Ml-Hmc"/>
+                                <constraint firstAttribute="width" constant="105.5" id="f3I-eI-WjU"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                    <integer key="value" value="10"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </imageView>
+                        <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YrA-SM-spw">
+                            <rect key="frame" x="204" y="521" width="66" height="29"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="29" id="dew-Yn-lgK"/>
+                                <constraint firstAttribute="width" constant="66" id="vNg-vp-0dy"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <state key="normal" title="忘记密码&gt;">
+                                <color key="titleColor" red="0.28627450980000002" green="0.5568627451" blue="0.96078431369999995" alpha="1" colorSpace="deviceRGB"/>
+                            </state>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="Tbu-mA-6Dr" firstAttribute="leading" secondItem="Bk4-pH-CUe" secondAttribute="trailing" constant="8" symbolic="YES" id="4rs-Ig-ntY"/>
+                        <constraint firstItem="mkk-GL-u9a" firstAttribute="top" secondItem="01O-M6-QOe" secondAttribute="bottom" constant="209.5" id="AlW-B2-qDn"/>
+                        <constraint firstItem="KKk-kv-znM" firstAttribute="centerY" secondItem="auc-NN-gV6" secondAttribute="centerY" id="I68-Jb-VtY"/>
+                        <constraint firstItem="QXY-Eu-AUw" firstAttribute="top" secondItem="7MN-G5-6uG" secondAttribute="top" constant="96.5" id="Iq6-gi-rqU"/>
+                        <constraint firstItem="EVl-59-y79" firstAttribute="top" secondItem="7MN-G5-6uG" secondAttribute="top" constant="30" id="LdS-EE-Mg8"/>
+                        <constraint firstItem="vRR-5k-il3" firstAttribute="top" secondItem="auc-NN-gV6" secondAttribute="bottom" constant="10" id="NOQ-WC-eE3"/>
+                        <constraint firstItem="Tbu-mA-6Dr" firstAttribute="bottom" secondItem="mkk-GL-u9a" secondAttribute="bottom" constant="30" id="Nba-Ng-w36"/>
+                        <constraint firstItem="YrA-SM-spw" firstAttribute="leading" secondItem="Tbu-mA-6Dr" secondAttribute="trailing" constant="15" id="RQ1-8P-cVR"/>
+                        <constraint firstItem="01O-M6-QOe" firstAttribute="top" secondItem="QXY-Eu-AUw" secondAttribute="bottom" constant="37.5" id="Yfc-5U-utj"/>
+                        <constraint firstAttribute="trailing" secondItem="KKk-kv-znM" secondAttribute="trailing" constant="233.5" id="Zti-qP-0ft"/>
+                        <constraint firstItem="vRR-5k-il3" firstAttribute="centerX" secondItem="7MN-G5-6uG" secondAttribute="centerX" id="aVG-Ec-mY1"/>
+                        <constraint firstItem="Bk4-pH-CUe" firstAttribute="centerY" secondItem="Tbu-mA-6Dr" secondAttribute="centerY" id="cdw-TA-uQ3"/>
+                        <constraint firstItem="auc-NN-gV6" firstAttribute="centerX" secondItem="7MN-G5-6uG" secondAttribute="centerX" id="dVv-6y-9H2"/>
+                        <constraint firstItem="Tiq-uJ-db5" firstAttribute="leading" secondItem="7MN-G5-6uG" secondAttribute="leading" constant="233" id="e8R-ml-60D"/>
+                        <constraint firstItem="mkk-GL-u9a" firstAttribute="leading" secondItem="7MN-G5-6uG" secondAttribute="leading" constant="24" id="eNz-tN-EFv"/>
+                        <constraint firstItem="Tiq-uJ-db5" firstAttribute="centerY" secondItem="auc-NN-gV6" secondAttribute="centerY" id="hbf-KQ-vrA"/>
+                        <constraint firstAttribute="trailing" secondItem="01O-M6-QOe" secondAttribute="trailing" constant="58" id="hq1-HC-yEP"/>
+                        <constraint firstItem="auc-NN-gV6" firstAttribute="top" secondItem="Bk4-pH-CUe" secondAttribute="bottom" constant="168.33000000000001" id="jA0-Uj-JJu"/>
+                        <constraint firstItem="YrA-SM-spw" firstAttribute="centerY" secondItem="Tbu-mA-6Dr" secondAttribute="centerY" id="ltg-ti-wQG"/>
+                        <constraint firstAttribute="trailing" secondItem="mkk-GL-u9a" secondAttribute="trailing" constant="24" id="nD1-M0-PVI"/>
+                        <constraint firstItem="QXY-Eu-AUw" firstAttribute="centerX" secondItem="7MN-G5-6uG" secondAttribute="centerX" id="quy-Zp-G02"/>
+                        <constraint firstAttribute="trailing" secondItem="EVl-59-y79" secondAttribute="trailing" constant="15" id="qvp-1D-45H"/>
+                        <constraint firstItem="Tbu-mA-6Dr" firstAttribute="centerX" secondItem="7MN-G5-6uG" secondAttribute="centerX" id="wDI-A1-kpd"/>
+                        <constraint firstItem="01O-M6-QOe" firstAttribute="leading" secondItem="7MN-G5-6uG" secondAttribute="leading" constant="30" id="wxH-d7-T1f"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="7MN-G5-6uG" firstAttribute="trailing" secondItem="vUN-kp-3ea" secondAttribute="trailing" id="15R-7K-gOR"/>
+                <constraint firstItem="7MN-G5-6uG" firstAttribute="bottom" secondItem="vUN-kp-3ea" secondAttribute="bottom" id="Pro-SD-dsz"/>
+                <constraint firstItem="7MN-G5-6uG" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="Um4-w4-Yck"/>
+                <constraint firstItem="7MN-G5-6uG" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="WgK-HU-f8c"/>
+            </constraints>
+            <point key="canvasLocation" x="34" y="-12"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="homelogin_weixin" width="32" height="32"/>
+        <image name="logo" width="110.66666412353516" height="114.66666412353516"/>
+        <image name="取消" width="16" height="16"/>
+    </resources>
+</document>

+ 26 - 0
JSJP_Student_sw/Sources/Modulars/Login/Views/NYAgreementView.swift

@@ -0,0 +1,26 @@
+//
+//  NYAgreementView.swift
+//  JSJP_Student_sw
+//
+//  Created by Ning.ge on 2023/6/1.
+//
+
+import UIKit
+
+final class NYAgreementView: UIView,NibLoadable {
+
+    
+    @IBOutlet weak var agreeBtn: UIButton!
+    
+    @IBOutlet weak var user_protocol_btn: UIButton!
+    
+    @IBOutlet weak var user_privacy_btn: UIButton!
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        //bind 绑定
+
+    }
+    
+}

+ 76 - 0
JSJP_Student_sw/Sources/Modulars/Login/Views/NYAgreementView.xib

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="NYAgreementView" customModule="JSJP_Student_sw" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="30"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2mp-Il-g5P">
+                    <rect key="frame" x="0.0" y="0.0" width="30" height="30"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" backgroundImage="选项框"/>
+                    <state key="selected" backgroundImage="已勾选"/>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="leading" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Gd4-hR-tap">
+                    <rect key="frame" x="82" y="1" width="92" height="28"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" title="《用户协议》">
+                        <color key="titleColor" red="0.28627450980000002" green="0.5568627451" blue="0.96078431369999995" alpha="1" colorSpace="deviceRGB"/>
+                    </state>
+                </button>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="和" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="m2D-Bh-JNY">
+                    <rect key="frame" x="174" y="7" width="15.666666666666666" height="16"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
+                    <color key="textColor" red="0.54117647059999996" green="0.56470588239999997" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="已同意" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fK6-q7-2NY">
+                    <rect key="frame" x="36" y="7" width="46" height="16"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
+                    <color key="textColor" red="0.54117647059999996" green="0.56470588239999997" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" verticalHuggingPriority="249" horizontalCompressionResistancePriority="749" verticalCompressionResistancePriority="749" fixedFrame="YES" contentHorizontalAlignment="leading" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="x94-oC-htT">
+                    <rect key="frame" x="189.66666666666666" y="1" width="185.66666666666666" height="28"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" title="《隐私政策》">
+                        <color key="titleColor" red="0.28627450980000002" green="0.5568627451" blue="0.96078431369999995" alpha="1" colorSpace="deviceRGB"/>
+                    </state>
+                </button>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="agreeBtn" destination="2mp-Il-g5P" id="DXQ-jv-kYd"/>
+                <outlet property="user_privacy_btn" destination="x94-oC-htT" id="zgZ-ZH-Ehe"/>
+                <outlet property="user_protocol_btn" destination="Gd4-hR-tap" id="G24-CY-cEu"/>
+            </connections>
+            <point key="canvasLocation" x="61" y="-11"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="已勾选" width="18" height="18"/>
+        <image name="选项框" width="18" height="18"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 23 - 0
JSJP_Student_sw/Sources/Modulars/Login/Views/NYPasswordView.swift

@@ -0,0 +1,23 @@
+//
+//  NYPasswordView.swift
+//  JSJP_Student_sw
+//
+//  Created by Ning.ge on 2023/6/1.
+//
+
+import UIKit
+
+final class NYPasswordView: UIView,NibLoadable {
+
+    
+    @IBOutlet weak var textField: QMUITextField!
+    
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        //bind 绑定
+
+    }
+    
+}

+ 78 - 0
JSJP_Student_sw/Sources/Modulars/Login/Views/NYPasswordView.xib

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="NYPasswordView" customModule="JSJP_Student_sw" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="360" height="40"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <button hidden="YES" opaque="NO" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QBb-dj-gFh">
+                    <rect key="frame" x="340" y="8.6666666666666643" width="20" height="23"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="20" id="FNY-Al-fdL"/>
+                        <constraint firstAttribute="height" constant="23" id="ZZY-PJ-gYZ"/>
+                    </constraints>
+                    <state key="normal" image="passwordEncodeIcon"/>
+                    <state key="selected" image="passwordEncodeIcon"/>
+                </button>
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="密码" translatesAutoresizingMaskIntoConstraints="NO" id="NIs-5Q-b3E">
+                    <rect key="frame" x="16" y="12" width="22" height="16"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="16" id="6S3-tl-f9s"/>
+                        <constraint firstAttribute="width" constant="22" id="fAq-vs-k47"/>
+                    </constraints>
+                </imageView>
+                <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="q4g-SB-Vae" customClass="QMUITextField">
+                    <rect key="frame" x="46" y="8.6666666666666643" width="292" height="23"/>
+                    <color key="tintColor" red="0.28627450980000002" green="0.5568627451" blue="0.96078431369999995" alpha="1" colorSpace="deviceRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="23" id="Sin-j9-9wQ"/>
+                    </constraints>
+                    <color key="textColor" red="0.25882352939999997" green="0.25882352939999997" blue="0.25882352939999997" alpha="1" colorSpace="calibratedRGB"/>
+                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
+                    <textInputTraits key="textInputTraits" keyboardType="numbersAndPunctuation" returnKeyType="done" secureTextEntry="YES" textContentType="password"/>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength">
+                            <integer key="value" value="30"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
+                            <color key="value" red="0.74901960779999999" green="0.74901960779999999" blue="0.74901960779999999" alpha="1" colorSpace="calibratedRGB"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </textField>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <constraints>
+                <constraint firstItem="NIs-5Q-b3E" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="16" id="1nd-90-r4z"/>
+                <constraint firstItem="NIs-5Q-b3E" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="Agv-ql-wUs"/>
+                <constraint firstItem="QBb-dj-gFh" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="DwP-5X-NNn"/>
+                <constraint firstItem="QBb-dj-gFh" firstAttribute="leading" secondItem="q4g-SB-Vae" secondAttribute="trailing" constant="2" id="JQC-Nu-ies"/>
+                <constraint firstItem="q4g-SB-Vae" firstAttribute="leading" secondItem="NIs-5Q-b3E" secondAttribute="trailing" constant="8" symbolic="YES" id="LCc-v6-KQ0"/>
+                <constraint firstItem="q4g-SB-Vae" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="Mah-V5-NIn"/>
+                <constraint firstItem="QBb-dj-gFh" firstAttribute="trailing" secondItem="vUN-kp-3ea" secondAttribute="trailing" id="bWq-as-Hbq"/>
+            </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="textField" destination="q4g-SB-Vae" id="Mqm-FJ-IRg"/>
+            </connections>
+            <point key="canvasLocation" x="61" y="-11"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="passwordEncodeIcon" width="46" height="46"/>
+        <image name="密码" width="22" height="16"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 22 - 0
JSJP_Student_sw/Sources/Modulars/Login/Views/NYPhoneView.swift

@@ -0,0 +1,22 @@
+//
+//  NYPhoneView.swift
+//  JSJP_Student_sw
+//
+//  Created by Ning.ge on 2023/6/1.
+//
+
+import UIKit
+
+final class NYPhoneView: UIView,NibLoadable {
+
+    
+    @IBOutlet weak var textField: QMUITextField!
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        //bind 绑定
+
+    }
+    
+}

+ 66 - 0
JSJP_Student_sw/Sources/Modulars/Login/Views/NYPhoneView.xib

@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="NYPhoneView" customModule="JSJP_Student_sw" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="360" height="40"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="身份证号" translatesAutoresizingMaskIntoConstraints="NO" id="DdI-oZ-4ei">
+                    <rect key="frame" x="16" y="12" width="22" height="16"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="16" id="J3Y-JZ-G1C"/>
+                        <constraint firstAttribute="width" constant="22" id="cCL-Zb-ZqW"/>
+                    </constraints>
+                </imageView>
+                <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入身份证号码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="B5O-CY-aDS" customClass="QMUITextField">
+                    <rect key="frame" x="46" y="0.0" width="298" height="40"/>
+                    <color key="tintColor" red="0.28627450980000002" green="0.5568627451" blue="0.96078431369999995" alpha="1" colorSpace="deviceRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="40" id="jun-2p-0Pl"/>
+                    </constraints>
+                    <color key="textColor" red="0.039215686270000001" green="0.1019607843" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
+                    <textInputTraits key="textInputTraits" keyboardType="numberPad" returnKeyType="next" textContentType="cc-number"/>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
+                            <color key="value" red="0.74901960779999999" green="0.74901960779999999" blue="0.74901960779999999" alpha="1" colorSpace="calibratedRGB"/>
+                        </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength">
+                            <integer key="value" value="30"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </textField>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <constraints>
+                <constraint firstItem="DdI-oZ-4ei" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="16" id="7JF-Pr-w15"/>
+                <constraint firstItem="B5O-CY-aDS" firstAttribute="leading" secondItem="DdI-oZ-4ei" secondAttribute="trailing" constant="8" symbolic="YES" id="8ce-zU-WUU"/>
+                <constraint firstItem="B5O-CY-aDS" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="ImC-No-4ka"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="B5O-CY-aDS" secondAttribute="trailing" constant="16" id="cvo-tn-qgJ"/>
+                <constraint firstItem="DdI-oZ-4ei" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="qlM-0x-kHP"/>
+            </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="textField" destination="B5O-CY-aDS" id="rke-ej-XTj"/>
+            </connections>
+            <point key="canvasLocation" x="61" y="-11"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="身份证号" width="22" height="16"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 4 - 0
JSJP_Student_sw/Sources/Modulars/Mine/Controllers/MineParentViewController.swift

@@ -18,6 +18,10 @@ final class MineParentViewController: BaseViewController {
 
     }
     
+    required convenience init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+    
     override func viewDidLoad() {
         super.viewDidLoad()
 

+ 4 - 0
JSJP_Student_sw/Sources/Modulars/Timekeep/Controllers/TimeKeepParentViewController.swift

@@ -17,6 +17,10 @@ final class TimeKeepParentViewController: BaseViewController {
         self.tabBarItem.selectedImage = NYImage.TabBar.timeKeep_s?.withRenderingMode(.alwaysOriginal)
     }
     
+    required convenience init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+    
     override func viewDidLoad() {
         super.viewDidLoad()
 

+ 2 - 2
JSJP_Student_sw/Sources/Utils/URLNavigationMap.swift

@@ -74,9 +74,9 @@ final class URLNavigationMap {
         let link = url.urlStringValue
         
         if link.contains("read") {
-            return UIViewController() //BilibiliArticleViewController(link: link)
+            return NYArticleViewController(link: link)
         } else {
-            return UIViewController() //BilibiliWebViewController(link: url.urlStringValue)
+            return NYWebViewController(link: url.urlStringValue)
         }
     }
     

+ 3 - 24
Podfile

@@ -7,30 +7,6 @@ use_frameworks!
 
 
 target 'JSJP_Student_sw' do
-  
-  # React Native
-  #pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
-  #pod 'React', :subspecs => [
-  #'Core',
-  #'RCTBlob',
-  #'RCTAnimation',
-  #'RCTActionSheet',
-  #'RCTGeolocation',
-  #'RCTImage',
-  #'RCTLinkingIOS',
-  #'RCTNetwork',
-  #'RCTSettings',
-  #'RCTText',
-  #'RCTVibration',
-  #'RCTWebSocket',
-  #'DevSupport',
-  #'ART',
-  #'RCTCameraRoll',
-  #'RCTPushNotification',
-  #'RCTTest',
-  #'RCTVibration',
-  #'CxxBridge',
-  #], :path => '../node_modules/react-native'
 
   # Architecture
   pod 'ReactorKit'
@@ -86,6 +62,9 @@ target 'JSJP_Student_sw' do
   pod 'Dollar'
   pod 'SwiftyFitsize'   #适配-iphone-ipad等方案 支持 xib 和 storyboard
   
+  #OC 库
+  pod 'QMUIKit'                                     # 腾讯UI控件
+  
 end
 
 post_install do |installer|

+ 300 - 1
Podfile.lock

@@ -20,6 +20,302 @@ PODS:
   - "NSObject+Rx (5.1.0)":
     - RxSwift (~> 5.1)
   - ObjectMapper (4.2.0)
+  - QMUIKit (4.6.0):
+    - QMUIKit/QMUIComponents (= 4.6.0)
+    - QMUIKit/QMUICore (= 4.6.0)
+    - QMUIKit/QMUILog (= 4.6.0)
+    - QMUIKit/QMUIMainFrame (= 4.6.0)
+    - QMUIKit/QMUIResources (= 4.6.0)
+    - QMUIKit/QMUIWeakObjectContainer (= 4.6.0)
+  - QMUIKit/QMUIComponents (4.6.0):
+    - QMUIKit/QMUIComponents/NavigationBarTransition (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIAlertController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIAnimation (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIAppearance (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIAssetLibrary (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIBadge (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIButton (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICAAnimationExtension (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICALayerExtension (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICellHeightCache (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIConsole (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIDialogViewController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIEmotionInputManager (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIEmotionView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIEmptyView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIFloatLayoutView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIGridView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIImagePreviewView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUILabel (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUILogManagerViewController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIMarqueeLabel (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIMoreOperationController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUINavigationButton (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIOrderedDictionary (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIPieProgressView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIPopupContainerView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIScrollAnimator (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUISearchBar (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUISearchController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUISegmentedControl (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIStaticTableView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITableView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITableViewCell (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITestView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITextField (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITextView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITheme (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITips (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIToastView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIToolbarButton (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIWindowSizeMonitor (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIZoomImageView (= 4.6.0)
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/NavigationBarTransition (4.6.0):
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIAlertController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIAnimation (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIAppearance (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIAssetLibrary (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIBadge (4.6.0):
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIButton (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICAAnimationExtension (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICALayerExtension (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICellHeightCache (4.6.0):
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIConsole (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUICAAnimationExtension
+    - QMUIKit/QMUIComponents/QMUICellHeightKeyCache
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUIComponents/QMUITextView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIDialogViewController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIEmotionInputManager (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIEmotionView
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIEmotionView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIEmptyView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIFloatLayoutView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIGridView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAlertController
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIAssetLibrary
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIImagePreviewView
+    - QMUIKit/QMUIComponents/QMUINavigationButton
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUIComponents/QMUIZoomImageView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIImagePreviewView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIPieProgressView
+    - QMUIKit/QMUIComponents/QMUIZoomImageView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIKeyboardManager (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUILabel (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUILogManagerViewController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView
+    - QMUIKit/QMUIComponents/QMUISearchController
+    - QMUIKit/QMUIComponents/QMUIStaticTableView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIMarqueeLabel (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIMoreOperationController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIMultipleDelegates (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUINavigationButton (4.6.0):
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUINavigationTitleView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIOrderedDictionary (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIPieProgressView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIPopupContainerView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIPopupMenuView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIPopupContainerView
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIScrollAnimator (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUISearchBar (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUISearchController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUISearchBar
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUISegmentedControl (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIStaticTableView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableViewCell (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableViewProtocols (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITestView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITextField (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITextView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITheme (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAlertController
+    - QMUIKit/QMUIComponents/QMUIBadge
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIConsole
+    - QMUIKit/QMUIComponents/QMUIEmotionView
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIGridView
+    - QMUIKit/QMUIComponents/QMUIImagePickerLibrary
+    - QMUIKit/QMUIComponents/QMUIImagePreviewView
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUIComponents/QMUIPopupContainerView
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUIComponents/QMUITextView
+    - QMUIKit/QMUIComponents/QMUIToastView
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITips (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIToastView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIToastView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIToolbarButton (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIWindowSizeMonitor (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIZoomImageView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAssetLibrary
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIPieProgressView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUICore (4.6.0):
+    - QMUIKit/QMUILog
+    - QMUIKit/QMUIWeakObjectContainer
+  - QMUIKit/QMUILog (4.6.0)
+  - QMUIKit/QMUIMainFrame (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUILog
+  - QMUIKit/QMUIResources (4.6.0)
+  - QMUIKit/QMUIWeakObjectContainer (4.6.0)
   - ReachabilitySwift (5.0.0)
   - ReactorKit (2.1.1):
     - RxSwift (~> 5.0)
@@ -89,6 +385,7 @@ DEPENDENCIES:
   - Moya/RxSwift
   - "NSObject+Rx"
   - ObjectMapper
+  - QMUIKit
   - ReachabilitySwift
   - ReactorKit
   - RealmSwift
@@ -131,6 +428,7 @@ SPEC REPOS:
     - Moya
     - "NSObject+Rx"
     - ObjectMapper
+    - QMUIKit
     - ReachabilitySwift
     - ReactorKit
     - Realm
@@ -182,6 +480,7 @@ SPEC CHECKSUMS:
   Moya: 5b45dacb75adb009f97fde91c204c1e565d31916
   "NSObject+Rx": fa6bbcc1ab1faa06b01466bc09b1e0692bbc5946
   ObjectMapper: 1eb41f610210777375fa806bf161dc39fb832b81
+  QMUIKit: 6321cf1124623d686a9ec0a79a7cc59d0d64a52c
   ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
   ReactorKit: 6d894a20c3d508344320901cd8e386fde92df4b6
   Realm: 1f3157edf145f4d9036765ab550c8cb18f62b700
@@ -210,6 +509,6 @@ SPEC CHECKSUMS:
   WeakMapTable: 05c694ce8439a7a9ebabb56187287a63c57673d6
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
 
-PODFILE CHECKSUM: dbf715d65f974336c4a4562269e6653ae13b5c04
+PODFILE CHECKSUM: 78d17151b878a0472a634ba2f0503b5d141827f9
 
 COCOAPODS: 1.12.1

+ 300 - 1
Pods/Manifest.lock

@@ -20,6 +20,302 @@ PODS:
   - "NSObject+Rx (5.1.0)":
     - RxSwift (~> 5.1)
   - ObjectMapper (4.2.0)
+  - QMUIKit (4.6.0):
+    - QMUIKit/QMUIComponents (= 4.6.0)
+    - QMUIKit/QMUICore (= 4.6.0)
+    - QMUIKit/QMUILog (= 4.6.0)
+    - QMUIKit/QMUIMainFrame (= 4.6.0)
+    - QMUIKit/QMUIResources (= 4.6.0)
+    - QMUIKit/QMUIWeakObjectContainer (= 4.6.0)
+  - QMUIKit/QMUIComponents (4.6.0):
+    - QMUIKit/QMUIComponents/NavigationBarTransition (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIAlertController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIAnimation (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIAppearance (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIAssetLibrary (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIBadge (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIButton (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICAAnimationExtension (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICALayerExtension (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICellHeightCache (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIConsole (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIDialogViewController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIEmotionInputManager (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIEmotionView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIEmptyView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIFloatLayoutView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIGridView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIImagePreviewView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUILabel (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUILogManagerViewController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIMarqueeLabel (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIMoreOperationController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUINavigationButton (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIOrderedDictionary (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIPieProgressView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIPopupContainerView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIScrollAnimator (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUISearchBar (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUISearchController (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUISegmentedControl (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIStaticTableView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITableView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITableViewCell (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITestView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITextField (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITextView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITheme (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUITips (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIToastView (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIToolbarButton (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIWindowSizeMonitor (= 4.6.0)
+    - QMUIKit/QMUIComponents/QMUIZoomImageView (= 4.6.0)
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/NavigationBarTransition (4.6.0):
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIAlertController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIAnimation (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIAppearance (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIAssetLibrary (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIBadge (4.6.0):
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIButton (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICAAnimationExtension (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICALayerExtension (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICellHeightCache (4.6.0):
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIConsole (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUICAAnimationExtension
+    - QMUIKit/QMUIComponents/QMUICellHeightKeyCache
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUIComponents/QMUITextView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIDialogViewController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIEmotionInputManager (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIEmotionView
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIEmotionView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIEmptyView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIFloatLayoutView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIGridView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAlertController
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIAssetLibrary
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIImagePreviewView
+    - QMUIKit/QMUIComponents/QMUINavigationButton
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUIComponents/QMUIZoomImageView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIImagePreviewView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIPieProgressView
+    - QMUIKit/QMUIComponents/QMUIZoomImageView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIKeyboardManager (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUILabel (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUILogManagerViewController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView
+    - QMUIKit/QMUIComponents/QMUISearchController
+    - QMUIKit/QMUIComponents/QMUIStaticTableView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIMarqueeLabel (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIMoreOperationController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIMultipleDelegates (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUINavigationButton (4.6.0):
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUINavigationTitleView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIOrderedDictionary (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIPieProgressView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIPopupContainerView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAppearance
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUIPopupMenuView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIPopupContainerView
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIScrollAnimator (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUISearchBar (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUISearchController (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUISearchBar
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIMainFrame
+  - QMUIKit/QMUIComponents/QMUISegmentedControl (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIStaticTableView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUIComponents/QMUITableViewCell
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUITableViewProtocols
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableViewCell (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITableViewProtocols (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITestView (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITextField (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITextView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITheme (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAlertController
+    - QMUIKit/QMUIComponents/QMUIBadge
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIConsole
+    - QMUIKit/QMUIComponents/QMUIEmotionView
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIGridView
+    - QMUIKit/QMUIComponents/QMUIImagePickerLibrary
+    - QMUIKit/QMUIComponents/QMUIImagePreviewView
+    - QMUIKit/QMUIComponents/QMUILabel
+    - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
+    - QMUIKit/QMUIComponents/QMUIPopupContainerView
+    - QMUIKit/QMUIComponents/QMUIPopupMenuView
+    - QMUIKit/QMUIComponents/QMUITextField
+    - QMUIKit/QMUIComponents/QMUITextView
+    - QMUIKit/QMUIComponents/QMUIToastView
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUITips (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIToastView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUIComponents/QMUIToastView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIToolbarButton (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIWindowSizeMonitor (4.6.0):
+    - QMUIKit/QMUICore
+  - QMUIKit/QMUIComponents/QMUIZoomImageView (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIAssetLibrary
+    - QMUIKit/QMUIComponents/QMUIButton
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIPieProgressView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUIResources
+  - QMUIKit/QMUICore (4.6.0):
+    - QMUIKit/QMUILog
+    - QMUIKit/QMUIWeakObjectContainer
+  - QMUIKit/QMUILog (4.6.0)
+  - QMUIKit/QMUIMainFrame (4.6.0):
+    - QMUIKit/QMUIComponents/QMUIEmptyView
+    - QMUIKit/QMUIComponents/QMUIKeyboardManager
+    - QMUIKit/QMUIComponents/QMUIMultipleDelegates
+    - QMUIKit/QMUIComponents/QMUINavigationTitleView
+    - QMUIKit/QMUIComponents/QMUITableView
+    - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView
+    - QMUIKit/QMUICore
+    - QMUIKit/QMUILog
+  - QMUIKit/QMUIResources (4.6.0)
+  - QMUIKit/QMUIWeakObjectContainer (4.6.0)
   - ReachabilitySwift (5.0.0)
   - ReactorKit (2.1.1):
     - RxSwift (~> 5.0)
@@ -89,6 +385,7 @@ DEPENDENCIES:
   - Moya/RxSwift
   - "NSObject+Rx"
   - ObjectMapper
+  - QMUIKit
   - ReachabilitySwift
   - ReactorKit
   - RealmSwift
@@ -131,6 +428,7 @@ SPEC REPOS:
     - Moya
     - "NSObject+Rx"
     - ObjectMapper
+    - QMUIKit
     - ReachabilitySwift
     - ReactorKit
     - Realm
@@ -182,6 +480,7 @@ SPEC CHECKSUMS:
   Moya: 5b45dacb75adb009f97fde91c204c1e565d31916
   "NSObject+Rx": fa6bbcc1ab1faa06b01466bc09b1e0692bbc5946
   ObjectMapper: 1eb41f610210777375fa806bf161dc39fb832b81
+  QMUIKit: 6321cf1124623d686a9ec0a79a7cc59d0d64a52c
   ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
   ReactorKit: 6d894a20c3d508344320901cd8e386fde92df4b6
   Realm: 1f3157edf145f4d9036765ab550c8cb18f62b700
@@ -210,6 +509,6 @@ SPEC CHECKSUMS:
   WeakMapTable: 05c694ce8439a7a9ebabb56187287a63c57673d6
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
 
-PODFILE CHECKSUM: dbf715d65f974336c4a4562269e6653ae13b5c04
+PODFILE CHECKSUM: 78d17151b878a0472a634ba2f0503b5d141827f9
 
 COCOAPODS: 1.12.1

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1714 - 1367
Pods/Pods.xcodeproj/project.pbxproj


+ 41 - 27
Pods/Pods.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -116,194 +116,208 @@
 			<key>orderHint</key>
 			<integer>15</integer>
 		</dict>
-		<key>ReachabilitySwift.xcscheme</key>
+		<key>QMUIKit-QMUIResources.xcscheme</key>
+		<dict>
+			<key>isShown</key>
+			<false/>
+			<key>orderHint</key>
+			<integer>17</integer>
+		</dict>
+		<key>QMUIKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
 			<integer>16</integer>
 		</dict>
+		<key>ReachabilitySwift.xcscheme</key>
+		<dict>
+			<key>isShown</key>
+			<false/>
+			<key>orderHint</key>
+			<integer>18</integer>
+		</dict>
 		<key>ReactorKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>17</integer>
+			<integer>19</integer>
 		</dict>
 		<key>Realm.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>18</integer>
+			<integer>20</integer>
 		</dict>
 		<key>RealmSwift.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>19</integer>
+			<integer>21</integer>
 		</dict>
 		<key>ReusableKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>20</integer>
+			<integer>22</integer>
 		</dict>
 		<key>RxCocoa.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>21</integer>
+			<integer>23</integer>
 		</dict>
 		<key>RxDataSources.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>22</integer>
+			<integer>24</integer>
 		</dict>
 		<key>RxGesture.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>23</integer>
+			<integer>25</integer>
 		</dict>
 		<key>RxOptional.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>24</integer>
+			<integer>26</integer>
 		</dict>
 		<key>RxRelay.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>25</integer>
+			<integer>27</integer>
 		</dict>
 		<key>RxSwift.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>26</integer>
+			<integer>28</integer>
 		</dict>
 		<key>RxViewController.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>27</integer>
+			<integer>29</integer>
 		</dict>
 		<key>SectionReactor.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>28</integer>
+			<integer>30</integer>
 		</dict>
 		<key>SnapKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>29</integer>
+			<integer>31</integer>
 		</dict>
 		<key>SwiftDate.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>30</integer>
+			<integer>32</integer>
 		</dict>
 		<key>SwiftTimer.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>31</integer>
+			<integer>33</integer>
 		</dict>
 		<key>SwiftyColor.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>32</integer>
+			<integer>34</integer>
 		</dict>
 		<key>SwiftyFitsize.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>42</integer>
+			<integer>35</integer>
 		</dict>
 		<key>SwiftyImage.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>33</integer>
+			<integer>36</integer>
 		</dict>
 		<key>SwiftyJSON.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>34</integer>
+			<integer>37</integer>
 		</dict>
 		<key>SwiftyUserDefaults.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>35</integer>
+			<integer>38</integer>
 		</dict>
 		<key>Then.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>36</integer>
+			<integer>39</integer>
 		</dict>
 		<key>Toaster.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>37</integer>
+			<integer>40</integer>
 		</dict>
 		<key>URLNavigator.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>38</integer>
+			<integer>41</integer>
 		</dict>
 		<key>VTMagic.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>39</integer>
+			<integer>42</integer>
 		</dict>
 		<key>WeakMapTable.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>40</integer>
+			<integer>43</integer>
 		</dict>
 		<key>YYText.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>41</integer>
+			<integer>44</integer>
 		</dict>
 	</dict>
 	<key>SuppressBuildableAutocreation</key>

+ 18 - 0
Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-acknowledgements.markdown

@@ -328,6 +328,24 @@ The above copyright notice and this permission notice shall be included in all c
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
+## QMUIKit
+
+Tencent is pleased to support the open source community by making QMUI_iOS available.  
+Copyright (C) 2016-2021 THL A29 Limited, a Tencent company.  All rights reserved.
+If you have downloaded a copy of the QMUI_iOS binary from Tencent, please note that the QMUI_iOS binary is licensed under the MIT License.
+If you have downloaded a copy of the QMUI_iOS source code from Tencent, please note that QMUI_iOS source code is licensed under the MIT License.  Your integration of QMUI_iOS into your own projects may require compliance with the MIT License.
+A copy of the MIT License is included in this file.
+
+
+Terms of the MIT License:
+---------------------------------------------------
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
 ## ReachabilitySwift
 
 Copyright (c) 2016 Ashley Mills

+ 24 - 0
Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-acknowledgements.plist

@@ -423,6 +423,30 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 			<key>Type</key>
 			<string>PSGroupSpecifier</string>
 		</dict>
+		<dict>
+			<key>FooterText</key>
+			<string>Tencent is pleased to support the open source community by making QMUI_iOS available.  
+Copyright (C) 2016-2021 THL A29 Limited, a Tencent company.  All rights reserved.
+If you have downloaded a copy of the QMUI_iOS binary from Tencent, please note that the QMUI_iOS binary is licensed under the MIT License.
+If you have downloaded a copy of the QMUI_iOS source code from Tencent, please note that QMUI_iOS source code is licensed under the MIT License.  Your integration of QMUI_iOS into your own projects may require compliance with the MIT License.
+A copy of the MIT License is included in this file.
+
+
+Terms of the MIT License:
+---------------------------------------------------
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+</string>
+			<key>License</key>
+			<string>MIT</string>
+			<key>Title</key>
+			<string>QMUIKit</string>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+		</dict>
 		<dict>
 			<key>FooterText</key>
 			<string>Copyright (c) 2016 Ashley Mills

+ 1 - 0
Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks-Debug-input-files.xcfilelist

@@ -13,6 +13,7 @@ ${BUILT_PRODUCTS_DIR}/ManualLayout/ManualLayout.framework
 ${BUILT_PRODUCTS_DIR}/Moya/Moya.framework
 ${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework
 ${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework
+${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework
 ${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework
 ${BUILT_PRODUCTS_DIR}/ReactorKit/ReactorKit.framework
 ${BUILT_PRODUCTS_DIR}/Realm/Realm.framework

+ 1 - 0
Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks-Debug-output-files.xcfilelist

@@ -12,6 +12,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ManualLayout.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NSObject_Rx.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectMapper.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/QMUIKit.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactorKit.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework

+ 1 - 0
Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks-Release-input-files.xcfilelist

@@ -13,6 +13,7 @@ ${BUILT_PRODUCTS_DIR}/ManualLayout/ManualLayout.framework
 ${BUILT_PRODUCTS_DIR}/Moya/Moya.framework
 ${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework
 ${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework
+${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework
 ${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework
 ${BUILT_PRODUCTS_DIR}/ReactorKit/ReactorKit.framework
 ${BUILT_PRODUCTS_DIR}/Realm/Realm.framework

+ 1 - 0
Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks-Release-output-files.xcfilelist

@@ -12,6 +12,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ManualLayout.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NSObject_Rx.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectMapper.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/QMUIKit.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactorKit.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework

+ 2 - 0
Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw-frameworks.sh

@@ -190,6 +190,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReactorKit/ReactorKit.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Realm/Realm.framework"
@@ -233,6 +234,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/NSObject+Rx/NSObject_Rx.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ReactorKit/ReactorKit.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Realm/Realm.framework"

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 1
Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw.debug.xcconfig


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 1
Pods/Target Support Files/Pods-JSJP_Student_sw/Pods-JSJP_Student_sw.release.xcconfig


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.