Browse Source

首页- UI , 视频列表重构

openlockPPP 7 months ago
parent
commit
923e940b0b
66 changed files with 1738 additions and 34 deletions
  1. 12 2
      Pods/CGXVerticalMenuView-OC/CGXVerticalMenuView/MenuCustom/ListContainerView/CGXVerticalMenuListContainerView.m
  2. 2 1
      Pods/CGXVerticalMenuView-OC/CGXVerticalMenuView/MenuMoreView/CGXVerticalMenuMoreView.m
  3. 1 0
      Pods/SGQRCode/SGQRCode/QRCode/SGScanCode.m
  4. 106 2
      jiaPei.xcodeproj/project.pbxproj
  5. BIN
      jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate
  6. 22 0
      jiaPei/Images.xcassets/Modules/HomePageModule/专项练习_Y.imageset/Contents.json
  7. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/专项练习_Y.imageset/专项练习_Y@2x.png
  8. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/专项练习_Y.imageset/专项练习_Y@3x.png
  9. 22 0
      jiaPei/Images.xcassets/Modules/HomePageModule/分阶段练题.imageset/Contents.json
  10. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/分阶段练题.imageset/分阶段练题@2x.png
  11. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/分阶段练题.imageset/分阶段练题@3x.png
  12. 22 0
      jiaPei/Images.xcassets/Modules/HomePageModule/易错专项_Y.imageset/Contents.json
  13. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/易错专项_Y.imageset/易错专项_Y@2x.png
  14. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/易错专项_Y.imageset/易错专项_Y@3x.png
  15. 22 0
      jiaPei/Images.xcassets/Modules/HomePageModule/电子资料-L.imageset/Contents.json
  16. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/电子资料-L.imageset/电子资料@2x.png
  17. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/电子资料-L.imageset/电子资料@3x.png
  18. 22 0
      jiaPei/Images.xcassets/Modules/HomePageModule/真实考场-G.imageset/Contents.json
  19. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/真实考场-G.imageset/真实考场-G@2x.png
  20. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/真实考场-G.imageset/真实考场-G@3x.png
  21. 22 0
      jiaPei/Images.xcassets/Modules/HomePageModule/科一VIP-B.imageset/Contents.json
  22. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/科一VIP-B.imageset/科一VIP-B@2x.png
  23. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/科一VIP-B.imageset/科一VIP-B@3x.png
  24. 22 0
      jiaPei/Images.xcassets/Modules/HomePageModule/精选500题-B.imageset/Contents.json
  25. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/精选500题-B.imageset/精选500题-B@2x.png
  26. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/精选500题-B.imageset/精选500题-B@3x.png
  27. 22 0
      jiaPei/Images.xcassets/Modules/HomePageModule/错题收藏_R.imageset/Contents.json
  28. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/错题收藏_R.imageset/错题收藏_R@2x.png
  29. BIN
      jiaPei/Images.xcassets/Modules/HomePageModule/错题收藏_R.imageset/错题收藏_R@3x.png
  30. 22 0
      jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_blue.imageset/Contents.json
  31. BIN
      jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_blue.imageset/btn_exe_blue@2x.png
  32. BIN
      jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_blue.imageset/btn_exe_blue@3x.png
  33. 22 0
      jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_green.imageset/Contents.json
  34. BIN
      jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_green.imageset/btn_exe_green@2x.png
  35. BIN
      jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_green.imageset/btn_exe_green@3x.png
  36. 2 1
      jiaPei/Modules/HomePageModule/RQHomePageModule.h
  37. 18 0
      jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.h
  38. 232 0
      jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.m
  39. 348 0
      jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.xib
  40. 19 6
      jiaPei/Modules/HomePageModule/View/HomePage/RQHomeSubPageVideoHeaderCollectionReusableView.m
  41. 5 0
      jiaPei/Modules/HomePageModule/ViewController/HomePage/RQHomePageSubjectOneOrFourViewController.m
  42. 22 3
      jiaPei/Modules/HomePageModule/ViewModel/HomePage/RQHomePageSubjectOneOrFourViewModel.m
  43. 26 0
      jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/NYHomePageOneBigItemViewModel.h
  44. 73 0
      jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/NYHomePageOneBigItemViewModel.m
  45. 18 18
      jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/RQHomePageOneOrFourSmallItemViewModel.m
  46. 1 1
      jiaPei/Modules/OtherModules/VideoModule/Controller/RQVideoCatalogueViewController.m
  47. 2 0
      jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.h
  48. 20 0
      jiaPei/Modules/OtherModules/VideoModule/ViewModel/NYVideoCatalogueViewModel.h
  49. 63 0
      jiaPei/Modules/OtherModules/VideoModule/ViewModel/NYVideoCatalogueViewModel.m
  50. BIN
      jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/hc.db
  51. BIN
      jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/js.db
  52. BIN
      jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/kc.db
  53. BIN
      jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/xc.db
  54. 1 0
      jiaPei/Utils/Router/RQRouter.m
  55. 21 0
      jiaPei/Vendor/MuTableCollectMenu/Extension/NSString+hAdd.h
  56. 43 0
      jiaPei/Vendor/MuTableCollectMenu/Extension/NSString+hAdd.m
  57. 16 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/CollectviewChooseCell.h
  58. 73 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/CollectviewChooseCell.m
  59. 15 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/MultilevelTableViewCell.h
  60. 18 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/MultilevelTableViewCell.m
  61. 39 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/MultilevelTableViewCell.xib
  62. 17 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/NYVideoListCell.h
  63. 77 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/NYVideoListCell.m
  64. 124 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/NYVideoListCell.xib
  65. 22 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/ProductCateFilteHeaderView.h
  66. 82 0
      jiaPei/Vendor/MuTableCollectMenu/MuCellView/ProductCateFilteHeaderView.m

+ 12 - 2
Pods/CGXVerticalMenuView-OC/CGXVerticalMenuView/MenuCustom/ListContainerView/CGXVerticalMenuListContainerView.m

@@ -107,7 +107,14 @@
         }
     }
     [self.containerVC.view addSubview:self.collectionView];
-    
+//    self.collectionView.translatesAutoresizingMaskIntoConstraints = NO;
+
+//    [NSLayoutConstraint activateConstraints:@[
+//        [self.collectionView.topAnchor constraintEqualToAnchor:self.topAnchor],
+//        [self.collectionView.leadingAnchor constraintEqualToAnchor:self.leadingAnchor],
+//        [self.collectionView.trailingAnchor constraintEqualToAnchor:self.trailingAnchor],
+//        [self.collectionView.bottomAnchor constraintEqualToAnchor:self.bottomAnchor]
+//    ]];
 }
 
 - (void)willMoveToSuperview:(UIView *)newSuperview {
@@ -132,7 +139,10 @@
         [self.collectionView.collectionViewLayout invalidateLayout];
         [self.collectionView reloadData];
     }
-    self.collectionView.frame = self.bounds;
+    if (!CGRectEqualToRect(self.collectionView.frame, self.bounds)) {
+        self.collectionView.frame = self.bounds;
+    }
+//    self.collectionView.frame = self.bounds;
     [self scrollSelectedItemAtIndex:self.currentIndex];
     [self.collectionView reloadData];
 }

+ 2 - 1
Pods/CGXVerticalMenuView-OC/CGXVerticalMenuView/MenuMoreView/CGXVerticalMenuMoreView.m

@@ -51,6 +51,7 @@
     self.leftView.indicators = @[lineView,backgroundView];
     
     self.listContainerView = [[CGXVerticalMenuListContainerView alloc] initWithDelegate:self];
+//    self.listContainerView.frame = CGRectMake(150, 100, 300, 500);
     self.listContainerView.backgroundColor = self.rightBgColor;
     self.listContainerView.isHorizontal = NO;
     self.listContainerView.collectionView.scrollEnabled = NO;
@@ -62,7 +63,7 @@
     [super layoutSubviews];
     
     self.leftView.frame = CGRectMake(0, 0, self.titleWidth, CGRectGetHeight(self.frame));
-    self.listContainerView.frame = CGRectMake(self.titleWidth, 0, CGRectGetWidth(self.frame)-self.titleWidth, CGRectGetHeight(self.frame));;
+    self.listContainerView.frame = CGRectMake(self.titleWidth, 0, CGRectGetWidth(self.frame)-self.titleWidth, CGRectGetHeight(self.frame));
     [self reloadData];
 }
 

+ 1 - 0
Pods/SGQRCode/SGQRCode/QRCode/SGScanCode.m

@@ -28,6 +28,7 @@
 @implementation SGScanCode
 
 - (void)dealloc {
+    self.delegate = NULL;
     if ([SGQRCodeLog sharedQRCodeLog].log) {
         NSLog(@"SGScanCode - - dealloc");
     }

+ 106 - 2
jiaPei.xcodeproj/project.pbxproj

@@ -131,6 +131,9 @@
 		908E6E642A89CCFC0090F00A /* DrCityInfoThree.json in Resources */ = {isa = PBXBuildFile; fileRef = 908E6E632A89CCFC0090F00A /* DrCityInfoThree.json */; };
 		908E6E662A8A08E40090F00A /* cities.json in Resources */ = {isa = PBXBuildFile; fileRef = 908E6E652A8A08E40090F00A /* cities.json */; };
 		90958FA02BAD65BA009BAA71 /* NYTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 90958F9F2BAD65BA009BAA71 /* NYTools.m */; };
+		909F0EE62CF06D9F00834944 /* NYHomePageOneBigCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 909F0EE52CF06D9F00834944 /* NYHomePageOneBigCell.xib */; };
+		909F0EE72CF06D9F00834944 /* NYHomePageOneBigCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 909F0EE42CF06D9F00834944 /* NYHomePageOneBigCell.m */; };
+		909F0EED2CF0788A00834944 /* NYHomePageOneBigItemViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 909F0EEC2CF0788A00834944 /* NYHomePageOneBigItemViewModel.m */; };
 		90A2ACEB2AE7C57000FA6E20 /* RQHTTPService+NYAppleUserInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 90A2ACEA2AE7C57000FA6E20 /* RQHTTPService+NYAppleUserInfo.m */; };
 		90AC53AB2A935EF90073D90F /* NYTestingCentreCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90AC53A92A935EF90073D90F /* NYTestingCentreCell.m */; };
 		90AC53AC2A935EF90073D90F /* NYTestingCentreCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90AC53AA2A935EF90073D90F /* NYTestingCentreCell.xib */; };
@@ -151,6 +154,16 @@
 		90BA2EA72A3316510029A54A /* NYGetjobStartRuleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2EA52A3316510029A54A /* NYGetjobStartRuleCell.m */; };
 		90BA2EA82A3316510029A54A /* NYGetjobStartRuleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90BA2EA62A3316510029A54A /* NYGetjobStartRuleCell.xib */; };
 		90BA2EAB2A3317510029A54A /* NYGetjobStartRuleViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2EAA2A3317510029A54A /* NYGetjobStartRuleViewModel.m */; };
+		90C6400D2CF7024500F53201 /* NYVideoCatalogueViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C6400C2CF7024500F53201 /* NYVideoCatalogueViewController.m */; };
+		90C6401A2CF7078A00F53201 /* MultilevelTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90C640132CF7078A00F53201 /* MultilevelTableViewCell.xib */; };
+		90C6401B2CF7078A00F53201 /* MultilevelTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C640122CF7078A00F53201 /* MultilevelTableViewCell.m */; };
+		90C6401C2CF7078A00F53201 /* CollectviewChooseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C640102CF7078A00F53201 /* CollectviewChooseCell.m */; };
+		90C6401D2CF7078A00F53201 /* MultilevelMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C640182CF7078A00F53201 /* MultilevelMenu.m */; };
+		90C6401E2CF7078A00F53201 /* ProductCateFilteHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C640152CF7078A00F53201 /* ProductCateFilteHeaderView.m */; };
+		90C640212CF70AC800F53201 /* NYVideoCatalogueViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C640202CF70AC800F53201 /* NYVideoCatalogueViewModel.m */; };
+		90C640252CF70DBD00F53201 /* NSString+hAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C640232CF70DBD00F53201 /* NSString+hAdd.m */; };
+		90C640292CF724CD00F53201 /* NYVideoListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90C640282CF724CD00F53201 /* NYVideoListCell.xib */; };
+		90C6402A2CF724CD00F53201 /* NYVideoListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C640272CF724CD00F53201 /* NYVideoListCell.m */; };
 		90D356C62CC0B736002B52B9 /* NYExaminationRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 90D356C42CC0B736002B52B9 /* NYExaminationRoomViewController.m */; };
 		90D356C72CC0B736002B52B9 /* NYExaminationRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90D356C52CC0B736002B52B9 /* NYExaminationRoomViewController.xib */; };
 		90D356CA2CC0B7C2002B52B9 /* NYExaminationRoomViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90D356C92CC0B7C2002B52B9 /* NYExaminationRoomViewModel.m */; };
@@ -1905,6 +1918,11 @@
 		908E6E652A8A08E40090F00A /* cities.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = cities.json; sourceTree = "<group>"; };
 		90958F9E2BAD65BA009BAA71 /* NYTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYTools.h; sourceTree = "<group>"; };
 		90958F9F2BAD65BA009BAA71 /* NYTools.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYTools.m; sourceTree = "<group>"; };
+		909F0EE32CF06D9F00834944 /* NYHomePageOneBigCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYHomePageOneBigCell.h; sourceTree = "<group>"; };
+		909F0EE42CF06D9F00834944 /* NYHomePageOneBigCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYHomePageOneBigCell.m; sourceTree = "<group>"; };
+		909F0EE52CF06D9F00834944 /* NYHomePageOneBigCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYHomePageOneBigCell.xib; sourceTree = "<group>"; };
+		909F0EEB2CF0788A00834944 /* NYHomePageOneBigItemViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYHomePageOneBigItemViewModel.h; sourceTree = "<group>"; };
+		909F0EEC2CF0788A00834944 /* NYHomePageOneBigItemViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYHomePageOneBigItemViewModel.m; sourceTree = "<group>"; };
 		90A2ACE92AE7C57000FA6E20 /* RQHTTPService+NYAppleUserInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RQHTTPService+NYAppleUserInfo.h"; sourceTree = "<group>"; };
 		90A2ACEA2AE7C57000FA6E20 /* RQHTTPService+NYAppleUserInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "RQHTTPService+NYAppleUserInfo.m"; sourceTree = "<group>"; };
 		90AC53A82A935EF90073D90F /* NYTestingCentreCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYTestingCentreCell.h; sourceTree = "<group>"; };
@@ -1940,6 +1958,24 @@
 		90BA2EA62A3316510029A54A /* NYGetjobStartRuleCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYGetjobStartRuleCell.xib; sourceTree = "<group>"; };
 		90BA2EA92A3317510029A54A /* NYGetjobStartRuleViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYGetjobStartRuleViewModel.h; sourceTree = "<group>"; };
 		90BA2EAA2A3317510029A54A /* NYGetjobStartRuleViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYGetjobStartRuleViewModel.m; sourceTree = "<group>"; };
+		90C6400B2CF7024500F53201 /* NYVideoCatalogueViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYVideoCatalogueViewController.h; sourceTree = "<group>"; };
+		90C6400C2CF7024500F53201 /* NYVideoCatalogueViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYVideoCatalogueViewController.m; sourceTree = "<group>"; };
+		90C6400F2CF7078A00F53201 /* CollectviewChooseCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CollectviewChooseCell.h; sourceTree = "<group>"; };
+		90C640102CF7078A00F53201 /* CollectviewChooseCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CollectviewChooseCell.m; sourceTree = "<group>"; };
+		90C640112CF7078A00F53201 /* MultilevelTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MultilevelTableViewCell.h; sourceTree = "<group>"; };
+		90C640122CF7078A00F53201 /* MultilevelTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MultilevelTableViewCell.m; sourceTree = "<group>"; };
+		90C640132CF7078A00F53201 /* MultilevelTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MultilevelTableViewCell.xib; sourceTree = "<group>"; };
+		90C640142CF7078A00F53201 /* ProductCateFilteHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProductCateFilteHeaderView.h; sourceTree = "<group>"; };
+		90C640152CF7078A00F53201 /* ProductCateFilteHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ProductCateFilteHeaderView.m; sourceTree = "<group>"; };
+		90C640172CF7078A00F53201 /* MultilevelMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MultilevelMenu.h; sourceTree = "<group>"; };
+		90C640182CF7078A00F53201 /* MultilevelMenu.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MultilevelMenu.m; sourceTree = "<group>"; };
+		90C6401F2CF70AC800F53201 /* NYVideoCatalogueViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYVideoCatalogueViewModel.h; sourceTree = "<group>"; };
+		90C640202CF70AC800F53201 /* NYVideoCatalogueViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYVideoCatalogueViewModel.m; sourceTree = "<group>"; };
+		90C640222CF70DBD00F53201 /* NSString+hAdd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+hAdd.h"; sourceTree = "<group>"; };
+		90C640232CF70DBD00F53201 /* NSString+hAdd.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+hAdd.m"; sourceTree = "<group>"; };
+		90C640262CF724CD00F53201 /* NYVideoListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYVideoListCell.h; sourceTree = "<group>"; };
+		90C640272CF724CD00F53201 /* NYVideoListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYVideoListCell.m; sourceTree = "<group>"; };
+		90C640282CF724CD00F53201 /* NYVideoListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYVideoListCell.xib; sourceTree = "<group>"; };
 		90D356C32CC0B736002B52B9 /* NYExaminationRoomViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYExaminationRoomViewController.h; sourceTree = "<group>"; };
 		90D356C42CC0B736002B52B9 /* NYExaminationRoomViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYExaminationRoomViewController.m; sourceTree = "<group>"; };
 		90D356C52CC0B736002B52B9 /* NYExaminationRoomViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYExaminationRoomViewController.xib; sourceTree = "<group>"; };
@@ -4857,6 +4893,51 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		90C6400E2CF7077300F53201 /* MuTableCollectMenu */ = {
+			isa = PBXGroup;
+			children = (
+				90C640242CF70DBD00F53201 /* Extension */,
+				90C640162CF7078A00F53201 /* MuCellView */,
+				90C640192CF7078A00F53201 /* MuMenuView */,
+			);
+			path = MuTableCollectMenu;
+			sourceTree = "<group>";
+		};
+		90C640162CF7078A00F53201 /* MuCellView */ = {
+			isa = PBXGroup;
+			children = (
+				90C6400F2CF7078A00F53201 /* CollectviewChooseCell.h */,
+				90C640102CF7078A00F53201 /* CollectviewChooseCell.m */,
+				90C640112CF7078A00F53201 /* MultilevelTableViewCell.h */,
+				90C640122CF7078A00F53201 /* MultilevelTableViewCell.m */,
+				90C640132CF7078A00F53201 /* MultilevelTableViewCell.xib */,
+				90C640142CF7078A00F53201 /* ProductCateFilteHeaderView.h */,
+				90C640152CF7078A00F53201 /* ProductCateFilteHeaderView.m */,
+				90C640262CF724CD00F53201 /* NYVideoListCell.h */,
+				90C640272CF724CD00F53201 /* NYVideoListCell.m */,
+				90C640282CF724CD00F53201 /* NYVideoListCell.xib */,
+			);
+			path = MuCellView;
+			sourceTree = "<group>";
+		};
+		90C640192CF7078A00F53201 /* MuMenuView */ = {
+			isa = PBXGroup;
+			children = (
+				90C640172CF7078A00F53201 /* MultilevelMenu.h */,
+				90C640182CF7078A00F53201 /* MultilevelMenu.m */,
+			);
+			path = MuMenuView;
+			sourceTree = "<group>";
+		};
+		90C640242CF70DBD00F53201 /* Extension */ = {
+			isa = PBXGroup;
+			children = (
+				90C640222CF70DBD00F53201 /* NSString+hAdd.h */,
+				90C640232CF70DBD00F53201 /* NSString+hAdd.m */,
+			);
+			path = Extension;
+			sourceTree = "<group>";
+		};
 		9A75AB77D77332A5EDD30629 /* Pods */ = {
 			isa = PBXGroup;
 			children = (
@@ -5020,6 +5101,8 @@
 				D0508CC627D8762300CBF1FC /* RQDspVideoDetailViewModel.m */,
 				D0508CC727D8762300CBF1FC /* RQDspVideoDetailItemViewModel.h */,
 				D0508CC827D8762400CBF1FC /* RQDspVideoDetailItemViewModel.m */,
+				90C6401F2CF70AC800F53201 /* NYVideoCatalogueViewModel.h */,
+				90C640202CF70AC800F53201 /* NYVideoCatalogueViewModel.m */,
 			);
 			path = ViewModel;
 			sourceTree = "<group>";
@@ -5036,6 +5119,8 @@
 				D00A14C62754A41B00793046 /* RQVideoDetailSubPageViewController.m */,
 				D0508CD827D8779500CBF1FC /* RQDspVideoDetailViewController.h */,
 				D0508CD727D8779400CBF1FC /* RQDspVideoDetailViewController.m */,
+				90C6400B2CF7024500F53201 /* NYVideoCatalogueViewController.h */,
+				90C6400C2CF7024500F53201 /* NYVideoCatalogueViewController.m */,
 			);
 			path = Controller;
 			sourceTree = "<group>";
@@ -9189,6 +9274,8 @@
 				D0D2D0C728618CEE004E31E6 /* RQHomePageDriveMethodItemViewModel.m */,
 				D03BCA9F28C9E35A00094B7F /* RQHomePageSubjectModuleItemViewModel.h */,
 				D03BCAA028C9E35A00094B7F /* RQHomePageSubjectModuleItemViewModel.m */,
+				909F0EEB2CF0788A00834944 /* NYHomePageOneBigItemViewModel.h */,
+				909F0EEC2CF0788A00834944 /* NYHomePageOneBigItemViewModel.m */,
 			);
 			path = itemViewModel;
 			sourceTree = "<group>";
@@ -9591,6 +9678,9 @@
 				D03BCA9728C9DF3C00094B7F /* RQHomePageSubjectModuleCell.h */,
 				D03BCA9828C9DF3C00094B7F /* RQHomePageSubjectModuleCell.m */,
 				D03BCA9928C9DF3C00094B7F /* RQHomePageSubjectModuleCell.xib */,
+				909F0EE32CF06D9F00834944 /* NYHomePageOneBigCell.h */,
+				909F0EE42CF06D9F00834944 /* NYHomePageOneBigCell.m */,
+				909F0EE52CF06D9F00834944 /* NYHomePageOneBigCell.xib */,
 			);
 			path = HomePage;
 			sourceTree = "<group>";
@@ -9699,6 +9789,7 @@
 		D0DA2664219D9E430093CD42 /* Vendor */ = {
 			isa = PBXGroup;
 			children = (
+				90C6400E2CF7077300F53201 /* MuTableCollectMenu */,
 				900A2DD92A1FA89700395C1F /* RQAPPEventModuleComponent */,
 				D020105B29373AE7001B9F4D /* SmallVideo */,
 				D07456B429272C660050BE10 /* QiNiu_IMSDK */,
@@ -10143,6 +10234,7 @@
 				D0295D52243F0B8C00B46AB1 /* img17.png in Resources */,
 				D0295CE3243F0B8C00B46AB1 /* 1-4-60.jpg in Resources */,
 				D0295C15243F0B8B00B46AB1 /* 1-1-9.jpg in Resources */,
+				90C640292CF724CD00F53201 /* NYVideoListCell.xib in Resources */,
 				D0295D78243F0B8C00B46AB1 /* voice11.mp3 in Resources */,
 				D0295B8E243F0B8A00B46AB1 /* 1-7-11.jpg in Resources */,
 				D0295B74243F0B8A00B46AB1 /* 6-16-18.jpg in Resources */,
@@ -10185,6 +10277,7 @@
 				D0295EB0243F1B8700B46AB1 /* miaxis.db in Resources */,
 				D0295B9A243F0B8A00B46AB1 /* 1-2-25.jpg in Resources */,
 				D0295BFE243F0B8B00B46AB1 /* 6-16-8.jpg in Resources */,
+				909F0EE62CF06D9F00834944 /* NYHomePageOneBigCell.xib in Resources */,
 				D0536B932930AE7B0042AED6 /* RQTimeSingleCell.xib in Resources */,
 				D0295B5B243F0B8A00B46AB1 /* 1-5-16.jpg in Resources */,
 				D0295B76243F0B8A00B46AB1 /* 1-4-96.jpg in Resources */,
@@ -10304,6 +10397,7 @@
 				D06F5450291BA18000C65F02 /* RQVipPriceCell.xib in Resources */,
 				D0D1F69D283F84E00086C6AE /* RQExerciseCatalogueCell.xib in Resources */,
 				D0295C1C243F0B8B00B46AB1 /* 1-1-8.jpg in Resources */,
+				90C6401A2CF7078A00F53201 /* MultilevelTableViewCell.xib in Resources */,
 				D0295D80243F0B8C00B46AB1 /* light2.mp3 in Resources */,
 				D074576D29275AB10050BE10 /* Localizable.strings in Resources */,
 				D0D1F6A1283F84E00086C6AE /* RQExerciseOptionCell.xib in Resources */,
@@ -10918,6 +11012,7 @@
 				D057C1C229F50FC5002F4AB2 /* RQPlaceListHeaderView.m in Sources */,
 				90BA2E8B2A317BEB0029A54A /* NYBasetjTimeVC.m in Sources */,
 				D04DF6B527006C56006E3633 /* RQWebViewModel.m in Sources */,
+				90C6402A2CF724CD00F53201 /* NYVideoListCell.m in Sources */,
 				D057C20D29F5116B002F4AB2 /* RQHTTPService+RQGetPlaceVideoList.m in Sources */,
 				D05A320D29220C04002EB3E2 /* RQVipAuthorityNewItemViewModel.m in Sources */,
 				D084D88227CE04EC00E521F0 /* RQVipViewController.m in Sources */,
@@ -11069,6 +11164,7 @@
 				D0354B15230E3A6600E1C54D /* DistenceTooLongMapVC.m in Sources */,
 				D0295E96243F1A8400B46AB1 /* GTMBase64.m in Sources */,
 				D0870D692701A6B9004EC94E /* NSMutableDictionary+BlocksKit.m in Sources */,
+				90C6400D2CF7024500F53201 /* NYVideoCatalogueViewController.m in Sources */,
 				D09E5D4B25E3AA260099E87C /* BDFaceSelectConfigCell.m in Sources */,
 				D04DF6BE27006C56006E3633 /* RQTabBar.m in Sources */,
 				D0508CD927D8779500CBF1FC /* RQDspVideoDetailViewController.m in Sources */,
@@ -11352,6 +11448,7 @@
 				D04DF7C427006F73006E3633 /* RQMomentHelper.m in Sources */,
 				D0D045A827477C7A00257D01 /* RQDiscoverViewModel.m in Sources */,
 				9040D2852B6F703E002F4686 /* NYClassRoomVC.m in Sources */,
+				90C640212CF70AC800F53201 /* NYVideoCatalogueViewModel.m in Sources */,
 				D084D86827CDF9D600E521F0 /* RQVipContentCell.m in Sources */,
 				D02010BB29373AE8001B9F4D /* SLAlertView.m in Sources */,
 				D02010CA29373AE8001B9F4D /* SLTimer.m in Sources */,
@@ -11363,6 +11460,7 @@
 				D0A4015E27058D29000345CE /* BDFaceBaseViewController+RQExtension.m in Sources */,
 				D0F8F1232929C8840008019C /* orderCommentVC.m in Sources */,
 				D0B2D501289A626B00D6C5F4 /* RQCollectViewModel.m in Sources */,
+				909F0EE72CF06D9F00834944 /* NYHomePageOneBigCell.m in Sources */,
 				D0D2D0C828618CEE004E31E6 /* RQHomePageDriveMethodItemViewModel.m in Sources */,
 				D01CF4422893D016009EEA12 /* RQExamProbabilyItemViewModel.m in Sources */,
 				181078471C215E3400328138 /* ADView.m in Sources */,
@@ -11589,6 +11687,10 @@
 				D057C20A29F5116B002F4AB2 /* RQHTTPService+RQGetPlaceVipList.m in Sources */,
 				D04DF7BE27006F72006E3633 /* AFHTTPSessionManager+RACSupport.m in Sources */,
 				D084D88927CF0C9700E521F0 /* RQVipBuyView.m in Sources */,
+				90C6401B2CF7078A00F53201 /* MultilevelTableViewCell.m in Sources */,
+				90C6401C2CF7078A00F53201 /* CollectviewChooseCell.m in Sources */,
+				90C6401D2CF7078A00F53201 /* MultilevelMenu.m in Sources */,
+				90C6401E2CF7078A00F53201 /* ProductCateFilteHeaderView.m in Sources */,
 				90044C362A4E7BF7003FBBF8 /* NYFloatingSuggestView.m in Sources */,
 				D074573129272C670050BE10 /* SJVoiceTransform.m in Sources */,
 				D04DF7A827006F72006E3633 /* NSObject+RQExtension.m in Sources */,
@@ -11621,6 +11723,7 @@
 				D074574829272C680050BE10 /* QMRecordIndicatorView.m in Sources */,
 				D004D7F227FE60D400A96946 /* RQYDTZGZHYQuestionModule.m in Sources */,
 				D04DF6BF27006C56006E3633 /* RQBaseViewController.m in Sources */,
+				909F0EED2CF0788A00834944 /* NYHomePageOneBigItemViewModel.m in Sources */,
 				D06F5446291B8BDC00C65F02 /* RQVipHeaderImageViewNewReusableView.m in Sources */,
 				D0295EC0243F1CAF00B46AB1 /* jiaPeiManager.m in Sources */,
 				D01CF3BC2892812F009EEA12 /* QMUIConfigurationTemplateGrapefruit.m in Sources */,
@@ -11695,6 +11798,7 @@
 				D07C7B3D22EE982600D3CD34 /* TrainHoursSubTableViewCell.m in Sources */,
 				D0870E392701B5A0004EC94E /* RQLoginBaseViewController.m in Sources */,
 				D042D56A2575D87900C9A439 /* StudentChangeSchoolVC.m in Sources */,
+				90C640252CF70DBD00F53201 /* NSString+hAdd.m in Sources */,
 				D0508CD127D8768F00CBF1FC /* RQDspVideoDetailCell.m in Sources */,
 				D0D68D562890E10E00600C5C /* RQExamSituationItemViewModel.m in Sources */,
 				D01CF3A928921D48009EEA12 /* RQBDQuestionModel.m in Sources */,
@@ -11898,7 +12002,7 @@
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_RESOURCE_RULES_PATH[sdk=*]" = "";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2272024112102;
+				CURRENT_PROJECT_VERSION = 2282024112102;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;
@@ -11981,7 +12085,7 @@
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2272024112102;
+				CURRENT_PROJECT_VERSION = 2282024112102;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;

BIN
jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate


+ 22 - 0
jiaPei/Images.xcassets/Modules/HomePageModule/专项练习_Y.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/HomePageModule/专项练习_Y.imageset/专项练习_Y@2x.png


BIN
jiaPei/Images.xcassets/Modules/HomePageModule/专项练习_Y.imageset/专项练习_Y@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/HomePageModule/分阶段练题.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/HomePageModule/分阶段练题.imageset/分阶段练题@2x.png


BIN
jiaPei/Images.xcassets/Modules/HomePageModule/分阶段练题.imageset/分阶段练题@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/HomePageModule/易错专项_Y.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/HomePageModule/易错专项_Y.imageset/易错专项_Y@2x.png


BIN
jiaPei/Images.xcassets/Modules/HomePageModule/易错专项_Y.imageset/易错专项_Y@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/HomePageModule/电子资料-L.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/HomePageModule/电子资料-L.imageset/电子资料@2x.png


BIN
jiaPei/Images.xcassets/Modules/HomePageModule/电子资料-L.imageset/电子资料@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/HomePageModule/真实考场-G.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/HomePageModule/真实考场-G.imageset/真实考场-G@2x.png


BIN
jiaPei/Images.xcassets/Modules/HomePageModule/真实考场-G.imageset/真实考场-G@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/HomePageModule/科一VIP-B.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/HomePageModule/科一VIP-B.imageset/科一VIP-B@2x.png


BIN
jiaPei/Images.xcassets/Modules/HomePageModule/科一VIP-B.imageset/科一VIP-B@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/HomePageModule/精选500题-B.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/HomePageModule/精选500题-B.imageset/精选500题-B@2x.png


BIN
jiaPei/Images.xcassets/Modules/HomePageModule/精选500题-B.imageset/精选500题-B@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/HomePageModule/错题收藏_R.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/HomePageModule/错题收藏_R.imageset/错题收藏_R@2x.png


BIN
jiaPei/Images.xcassets/Modules/HomePageModule/错题收藏_R.imageset/错题收藏_R@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_blue.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_blue.imageset/btn_exe_blue@2x.png


BIN
jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_blue.imageset/btn_exe_blue@3x.png


+ 22 - 0
jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_green.imageset/Contents.json

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

BIN
jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_green.imageset/btn_exe_green@2x.png


BIN
jiaPei/Images.xcassets/Modules/OtherModule/ExerciseModule/btn_exe_green.imageset/btn_exe_green@3x.png


+ 2 - 1
jiaPei/Modules/HomePageModule/RQHomePageModule.h

@@ -70,6 +70,7 @@ FOUNDATION_EXTERN NSString * const RQHomeSubEditListTypeKey;
 #import "RQPlaceDetaiIQuestionCell.h"
 #import "RQTeachSchoolVideoCell.h"
 
+#import "NYHomePageOneBigCell.h"
 
 #pragma mark - ViewController
 /// HomePage
@@ -127,7 +128,7 @@ FOUNDATION_EXTERN NSString * const RQHomeSubEditListTypeKey;
 #import "RQErrorAndCollectItemViewModel.h"
 
 
-
+#import "NYHomePageOneBigItemViewModel.h"
 
 
 

+ 18 - 0
jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.h

@@ -0,0 +1,18 @@
+//
+//  NYHomePageOneBigCell.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/22.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "CollectionViewCell.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYHomePageOneBigCell : RQCommonCollectionViewCell
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 232 - 0
jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.m

@@ -0,0 +1,232 @@
+//
+//  NYHomePageOneBigCell.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/22.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYHomePageOneBigCell.h"
+
+@interface NYHomePageOneBigCell ()
+@property (nonatomic, readwrite, strong) NYHomePageOneBigItemViewModel *viewModel;
+
+@property (weak, nonatomic) IBOutlet QMUIButton *btn_left_0;
+
+@property (weak, nonatomic) IBOutlet QMUIButton *btn_left_1;
+
+@property (weak, nonatomic) IBOutlet QMUIButton *btn_left_2;
+
+@property (weak, nonatomic) IBOutlet QMUIButton *btn_left_3;
+
+@property (weak, nonatomic) IBOutlet QMUIButton *btn_right_0;
+
+@property (weak, nonatomic) IBOutlet QMUIButton *btn_right_1;
+
+@property (weak, nonatomic) IBOutlet QMUIButton *btn_right_2;
+
+@property (weak, nonatomic) IBOutlet QMUIButton *btn_right_3;
+
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *lay_blue_w;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *lay_blue_h;
+
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *lay_green_w;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *lay_green_h;
+
+@property (weak, nonatomic) IBOutlet UILabel *blue_title_sx;
+@property (weak, nonatomic) IBOutlet UILabel *green_title_mnks;
+
+@end
+
+@implementation NYHomePageOneBigCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
++ (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
+    static NSString *ID = @"NYHomePageOneBigCell";
+    [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
+    NYHomePageOneBigCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
+    if (!cell) cell = [self rq_viewFromXib];
+    [cell setupUI];
+    return cell;
+}
+
+- (void)setupUI {
+    self.btn_left_0.imagePosition = QMUIButtonImagePositionTop;
+    self.btn_left_1.imagePosition = QMUIButtonImagePositionTop;
+    self.btn_left_2.imagePosition = QMUIButtonImagePositionTop;
+    self.btn_left_3.imagePosition = QMUIButtonImagePositionTop;
+    self.btn_right_0.imagePosition = QMUIButtonImagePositionTop;
+    self.btn_right_1.imagePosition = QMUIButtonImagePositionTop;
+    self.btn_right_2.imagePosition = QMUIButtonImagePositionTop;
+    self.btn_right_3.imagePosition = QMUIButtonImagePositionTop;
+    
+    self.btn_left_0.titleEdgeInsets = UIEdgeInsetsMake(8, 0, 0, 0);
+    self.btn_left_1.titleEdgeInsets = UIEdgeInsetsMake(8, 0, 0, 0);
+    self.btn_left_2.titleEdgeInsets = UIEdgeInsetsMake(8, 0, 0, 0);
+    self.btn_left_3.titleEdgeInsets = UIEdgeInsetsMake(8, 0, 0, 0);
+    self.btn_right_0.titleEdgeInsets = UIEdgeInsetsMake(8, 0, 0, 0);
+    self.btn_right_1.titleEdgeInsets = UIEdgeInsetsMake(8, 0, 0, 0);
+    self.btn_right_2.titleEdgeInsets = UIEdgeInsetsMake(8, 0, 0, 0);
+    self.btn_right_3.titleEdgeInsets = UIEdgeInsetsMake(8, 0, 0, 0);
+    
+    self.lay_blue_w.constant = RQ_FIT_HORIZONTAL(121);
+    self.lay_blue_h.constant = RQ_FIT_HORIZONTAL(121);
+
+    self.lay_green_w.constant = RQ_FIT_HORIZONTAL(121);
+    self.lay_green_h.constant = RQ_FIT_HORIZONTAL(121);
+}
+
+- (void)bindViewModel:(NYHomePageOneBigItemViewModel *)viewModel {
+    _viewModel = viewModel;
+
+    RAC(self.blue_title_sx, attributedText) = [[RACObserve(viewModel, sxlxtStr) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.green_title_mnks, attributedText) = [[RACObserve(viewModel, mnksStr) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+}
+
+
+#pragma mark - action
+
+//顺序练习
+- (IBAction)btnSxlxActiondo:(UIButton *)sender {
+    NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Sequential ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel  *ydtQuestionModel) {
+        return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
+    }].toArray;
+    
+//                NSArray *arr = (self.homePageSubjectType == RQHomePageSubjectType_SubjectFour)? fourArr.copy : oneArr.copy;
+//                arr = [arr.rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel  *ydtQuestionModel) {
+//                    return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
+//                }].toArray;
+    RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
+        RQHomePageCarTypeKey        : @(self.viewModel.homePageCarType),
+        RQHomePageSubjectTypeKey    : @(self.viewModel.homePageSubjectType),
+        RQHomeSubPageTypeKey        : @(RQHomeSubPageType_SequentialPractice),
+        RQViewModelIDKey            : self.viewModel.sxlxtStr,
+        RQExerciseTypeKey           : @(RQExerciseType_Sequential),
+        RQViewModelUtilKey          : arr,
+    }];
+    [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
+}
+
+//模拟考试
+- (IBAction)btnMnksActiondo:(UIButton *)sender {
+    
+    if (RQ_USER_MANAGER.isShouldLogin) {
+        RQSimulateExamViewModel *viewModel = [[RQSimulateExamViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+        [RQ_APPDELEGATE.services pushViewModel:viewModel animated:YES];
+    }
+    
+}
+
+
+//VIP课程
+- (IBAction)btnVipAction:(UIButton *)sender {
+    [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) {
+        if (RQ_VIP_Module.isVip) {
+            [RQ_VIP_Module gotoVipCenter];
+        } else {
+            [RQ_VIP_Module gotoBuyVipWithVipPageType:RQVIPPageType_Full];
+        }
+    }];
+}
+
+//真实考场
+- (IBAction)btnExaminationAction:(UIButton *)sender {
+    [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {
+        if (isVip) {
+//                        username subject headimg gs 替换-> model
+//                        NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+//                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+//                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+//                        webViewModel.prefersNavigationBarHidden = YES;
+//                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+            
+            //显示真实考场
+            NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+            examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+            [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+            
+        } else {
+            if (RQ_VIP_Module.freeLookSimExamNum == 1||
+                RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
+//                            NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+//                            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+//                            RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+//                            webViewModel.prefersNavigationBarHidden = YES;
+//                            [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+                
+                //显示真实考场
+                NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                RQ_VIP_Module.freeLookSimExamNum = 0;
+            } else {
+                if(!RQ_COMMON_MANAGER.APP_SWITCH){
+                    [RQ_ALERTVIEW_MANAGER showAlertWithAlertType:RQAlertType_AD title:@"" message:@"" confirmTitle:@"充值会员无限使用" cancelTitle:@"看广告解锁使用" confirmAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                        [RQ_VIP_Module gotoBuyVipWithVipPageType:RQVIPPageType_Full];
+                    } cancelAction:^(__kindof QMUIDialogViewController * _Nonnull dialogViewController) {
+                        [RQ_AD_Module loadRewardvodAd];
+                    }];
+                }
+                
+            }
+        }
+    }];
+}
+
+//分阶段练习
+- (IBAction)btnCateLxAction:(UIButton *)sender {
+    
+}
+
+//易错专项
+- (IBAction)btnFallibilityAction:(UIButton *)sender {
+    
+}
+
+//500精选
+- (IBAction)btnWBAction:(UIButton *)sender {
+    
+    [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {
+        if (isVip) {
+            NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_HandPick ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel  *ydtQuestionModel) {
+                return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
+            }].toArray;
+            RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
+                RQHomePageCarTypeKey        : @(RQ_YDTQuestion_Module.carType),
+                RQHomePageSubjectTypeKey    : @(RQ_YDTQuestion_Module.subject),
+                RQHomeSubPageTypeKey        : @(RQHomeSubPageType_SequentialPractice),
+                RQViewModelIDKey            : @"精选500题",
+                RQExerciseTypeKey           : @(RQExerciseType_HandPick),
+                RQViewModelUtilKey          : arr,
+            }];
+            [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
+        } else {
+            [RQ_VIP_Module gotoBuyVipWithVipPageType:RQVIPPageType_Full];
+        }
+    }];
+}
+
+//专项练习
+- (IBAction)btnZxPracticeAction:(UIButton *)sender {
+    RQSpecialPractiseViewModel *specialPractiseViewModel = [[RQSpecialPractiseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:nil];
+    [RQ_APPDELEGATE.services pushViewModel:specialPractiseViewModel animated:YES];
+}
+
+//电子资料
+- (IBAction)btnCorpuscleresAction:(UIButton *)sender {
+    NSLog(@"点击了-电子资料");
+    [RQ_SHARE_FUNCTION miniwithUserName:RQ_COMMON_MANAGER.JSJP_XCX_NAME path:RQ_COMMON_MANAGER.JSJP_XCX_PAGE];
+}
+
+//错题收藏
+- (IBAction)btnErrorCollectAction:(UIButton *)sender {
+    RQErrorAndCollectViewModel *errorAndCollectViewModel = [[RQErrorAndCollectViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:nil];
+    [RQ_APPDELEGATE.services pushViewModel:errorAndCollectViewModel animated:YES];
+}
+
+
+@end

+ 348 - 0
jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.xib

@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="NYHomePageOneBigCell">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="363"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                <rect key="frame" x="0.0" y="0.0" width="375" height="363"/>
+                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MEu-3z-L7t">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="363"/>
+                        <subviews>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Yx4-u2-eez" customClass="QMUIButton">
+                                <rect key="frame" x="15" y="-9" width="75" height="80"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="80" id="TbK-Oy-7Vx"/>
+                                    <constraint firstAttribute="width" constant="75" id="jdy-4L-sRu"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="VIP课程" image="科一VIP-B">
+                                    <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="btnVipAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="Uh6-yV-RBo"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Le5-z7-wqu" customClass="QMUIButton">
+                                <rect key="frame" x="15" y="86" width="75" height="80"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="75" id="i70-2t-jyK"/>
+                                    <constraint firstAttribute="height" constant="80" id="q14-U0-wDP"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="真实考场" image="真实考场-G">
+                                    <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="btnExaminationAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="jjy-tN-FNT"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oSy-Iu-VIb" customClass="QMUIButton">
+                                <rect key="frame" x="15" y="197" width="75" height="80"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="75" id="GcR-9p-ov2"/>
+                                    <constraint firstAttribute="height" constant="80" id="TNU-Hx-eKX"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="分阶段练题" image="分阶段练题">
+                                    <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="btnCateLxAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="MSL-0B-bdC"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gtO-dN-p0H" customClass="QMUIButton">
+                                <rect key="frame" x="15" y="292" width="75" height="80"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="80" id="PWr-py-5Lh"/>
+                                    <constraint firstAttribute="width" constant="75" id="sYv-TT-zSY"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="易错专项" image="易错专项_Y">
+                                    <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="btnFallibilityAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="mZy-o5-IUW"/>
+                                </connections>
+                            </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="R10-6X-Ufe" userLabel="View-blue">
+                                <rect key="frame" x="127" y="29" width="121" height="121"/>
+                                <subviews>
+                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="btn_exe_blue" translatesAutoresizingMaskIntoConstraints="NO" id="Gzq-5S-Mg0">
+                                        <rect key="frame" x="0.0" y="0.0" width="121" height="121"/>
+                                    </imageView>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="顺序练习" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y5w-cd-uJL">
+                                        <rect key="frame" x="0.0" y="43" width="121" height="17"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="17" id="xJL-mG-4oK"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0/100" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bW1-yD-4eb">
+                                        <rect key="frame" x="0.0" y="61" width="121" height="17"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="17" id="NZS-0S-ba7"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jc3-GE-KDn" userLabel="View-line">
+                                        <rect key="frame" x="10.666666666666657" y="60" width="100" height="1"/>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="1" id="6ge-4A-VVB"/>
+                                            <constraint firstAttribute="width" constant="100" id="RMf-bb-KbV"/>
+                                        </constraints>
+                                    </view>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lDo-Qe-4L1">
+                                        <rect key="frame" x="0.0" y="0.0" width="121" height="121"/>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                        <connections>
+                                            <action selector="btnSxlxActiondo:" destination="gTV-IL-0wX" eventType="touchUpInside" id="pZH-GT-zrR"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <constraints>
+                                    <constraint firstAttribute="trailing" secondItem="lDo-Qe-4L1" secondAttribute="trailing" id="0rr-uj-J3z"/>
+                                    <constraint firstAttribute="bottom" secondItem="Gzq-5S-Mg0" secondAttribute="bottom" id="9zk-zU-fId"/>
+                                    <constraint firstItem="jc3-GE-KDn" firstAttribute="centerX" secondItem="R10-6X-Ufe" secondAttribute="centerX" id="Dll-Q6-iZu"/>
+                                    <constraint firstAttribute="width" constant="121" id="Nw9-3y-eyB"/>
+                                    <constraint firstItem="Gzq-5S-Mg0" firstAttribute="top" secondItem="R10-6X-Ufe" secondAttribute="top" id="SHw-3H-cYc"/>
+                                    <constraint firstAttribute="trailing" secondItem="bW1-yD-4eb" secondAttribute="trailing" id="Sxf-Xc-ShZ"/>
+                                    <constraint firstAttribute="trailing" secondItem="y5w-cd-uJL" secondAttribute="trailing" id="WYo-Yh-yja"/>
+                                    <constraint firstItem="lDo-Qe-4L1" firstAttribute="leading" secondItem="R10-6X-Ufe" secondAttribute="leading" id="X42-lI-Qb2"/>
+                                    <constraint firstItem="y5w-cd-uJL" firstAttribute="leading" secondItem="R10-6X-Ufe" secondAttribute="leading" id="XY2-yj-UDb"/>
+                                    <constraint firstAttribute="bottom" secondItem="lDo-Qe-4L1" secondAttribute="bottom" id="XuO-hI-AkX"/>
+                                    <constraint firstAttribute="height" constant="121" id="bHV-pq-Hsd"/>
+                                    <constraint firstItem="lDo-Qe-4L1" firstAttribute="top" secondItem="R10-6X-Ufe" secondAttribute="top" id="cas-eo-Ij5"/>
+                                    <constraint firstItem="jc3-GE-KDn" firstAttribute="top" secondItem="y5w-cd-uJL" secondAttribute="bottom" id="faa-rg-f63"/>
+                                    <constraint firstItem="bW1-yD-4eb" firstAttribute="leading" secondItem="R10-6X-Ufe" secondAttribute="leading" id="fcX-UL-mFY"/>
+                                    <constraint firstAttribute="trailing" secondItem="Gzq-5S-Mg0" secondAttribute="trailing" id="k60-PQ-l93"/>
+                                    <constraint firstItem="bW1-yD-4eb" firstAttribute="top" secondItem="jc3-GE-KDn" secondAttribute="bottom" id="lNT-NZ-O0J"/>
+                                    <constraint firstItem="Gzq-5S-Mg0" firstAttribute="leading" secondItem="R10-6X-Ufe" secondAttribute="leading" id="mvx-bg-i28"/>
+                                    <constraint firstItem="jc3-GE-KDn" firstAttribute="centerY" secondItem="R10-6X-Ufe" secondAttribute="centerY" id="qT3-p3-vR5"/>
+                                </constraints>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IpL-zD-I2s" userLabel="View-green">
+                                <rect key="frame" x="127" y="213" width="121" height="121"/>
+                                <subviews>
+                                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="btn_exe_green" translatesAutoresizingMaskIntoConstraints="NO" id="cYZ-pq-PXW">
+                                        <rect key="frame" x="0.0" y="0.0" width="121" height="121"/>
+                                    </imageView>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="模拟考试" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bBx-dO-hzF">
+                                        <rect key="frame" x="0.0" y="43" width="121" height="17"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="17" id="gE3-ya-JlR"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0分" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XRu-rh-cgs">
+                                        <rect key="frame" x="0.0" y="61" width="121" height="17"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="17" id="UaO-bk-p7M"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5FH-Fp-S70" userLabel="View-line">
+                                        <rect key="frame" x="10.666666666666657" y="60" width="100" height="1"/>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="100" id="NnO-Kn-bS9"/>
+                                            <constraint firstAttribute="height" constant="1" id="PTK-JE-0Tr"/>
+                                        </constraints>
+                                    </view>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gU3-UC-5bM">
+                                        <rect key="frame" x="0.0" y="0.0" width="121" height="121"/>
+                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                        <connections>
+                                            <action selector="btnMnksActiondo:" destination="gTV-IL-0wX" eventType="touchUpInside" id="ASG-z4-5ox"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <constraints>
+                                    <constraint firstItem="cYZ-pq-PXW" firstAttribute="top" secondItem="IpL-zD-I2s" secondAttribute="top" id="2kD-jA-OaS"/>
+                                    <constraint firstItem="5FH-Fp-S70" firstAttribute="centerX" secondItem="IpL-zD-I2s" secondAttribute="centerX" id="51M-kV-pdS"/>
+                                    <constraint firstAttribute="trailing" secondItem="gU3-UC-5bM" secondAttribute="trailing" id="FPo-tO-du2"/>
+                                    <constraint firstItem="XRu-rh-cgs" firstAttribute="leading" secondItem="IpL-zD-I2s" secondAttribute="leading" id="Fms-4x-Zdh"/>
+                                    <constraint firstAttribute="bottom" secondItem="cYZ-pq-PXW" secondAttribute="bottom" id="HgZ-x5-Zcp"/>
+                                    <constraint firstItem="cYZ-pq-PXW" firstAttribute="leading" secondItem="IpL-zD-I2s" secondAttribute="leading" id="Jge-6j-7Ta"/>
+                                    <constraint firstItem="gU3-UC-5bM" firstAttribute="top" secondItem="IpL-zD-I2s" secondAttribute="top" id="Ju7-9b-m0w"/>
+                                    <constraint firstItem="bBx-dO-hzF" firstAttribute="leading" secondItem="IpL-zD-I2s" secondAttribute="leading" id="L9i-A7-ihO"/>
+                                    <constraint firstAttribute="trailing" secondItem="cYZ-pq-PXW" secondAttribute="trailing" id="Plk-j4-SCn"/>
+                                    <constraint firstAttribute="trailing" secondItem="bBx-dO-hzF" secondAttribute="trailing" id="QmF-rq-wkZ"/>
+                                    <constraint firstItem="gU3-UC-5bM" firstAttribute="leading" secondItem="IpL-zD-I2s" secondAttribute="leading" id="W87-72-ect"/>
+                                    <constraint firstAttribute="height" constant="121" id="aBP-dq-Ple"/>
+                                    <constraint firstItem="5FH-Fp-S70" firstAttribute="centerY" secondItem="IpL-zD-I2s" secondAttribute="centerY" id="c3P-3U-dFI"/>
+                                    <constraint firstItem="XRu-rh-cgs" firstAttribute="top" secondItem="5FH-Fp-S70" secondAttribute="bottom" id="iQU-2U-bOU"/>
+                                    <constraint firstAttribute="width" constant="121" id="jFd-rq-dKt"/>
+                                    <constraint firstAttribute="trailing" secondItem="XRu-rh-cgs" secondAttribute="trailing" id="jGd-gM-f4O"/>
+                                    <constraint firstItem="5FH-Fp-S70" firstAttribute="top" secondItem="bBx-dO-hzF" secondAttribute="bottom" id="peH-eR-D6f"/>
+                                    <constraint firstAttribute="bottom" secondItem="gU3-UC-5bM" secondAttribute="bottom" id="xQi-iV-oJY"/>
+                                </constraints>
+                            </view>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bUb-zb-Lz2" customClass="QMUIButton">
+                                <rect key="frame" x="285" y="-9" width="75" height="80"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="75" id="QLo-ZW-hEq"/>
+                                    <constraint firstAttribute="height" constant="80" id="TfO-Iy-yiZ"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="精选500题" image="精选500题-B">
+                                    <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="btnWBAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="4Un-za-kUZ"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aYQ-Wb-mhG" customClass="QMUIButton">
+                                <rect key="frame" x="285" y="86" width="75" height="80"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="75" id="1Ws-Fg-d8I"/>
+                                    <constraint firstAttribute="height" constant="80" id="3Ko-Lo-KdP"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="专项练习" image="专项练习_Y">
+                                    <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="btnZxPracticeAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="UaP-ob-EkV"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="N9M-0h-2TW" customClass="QMUIButton">
+                                <rect key="frame" x="285" y="197" width="75" height="80"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="80" id="1od-7t-4bD"/>
+                                    <constraint firstAttribute="width" constant="75" id="kix-Df-h4H"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="电子资料" image="电子资料-L">
+                                    <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="btnCorpuscleresAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="t5J-7y-56f"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="v9R-cO-H2n" customClass="QMUIButton">
+                                <rect key="frame" x="285" y="292" width="75" height="80"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="80" id="8Wd-hr-mqo"/>
+                                    <constraint firstAttribute="width" constant="75" id="i8E-7s-xpF"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="错题收藏" image="错题收藏_R">
+                                    <color key="titleColor" red="0.23921568630000001" green="0.23529411759999999" blue="0.21960784310000001" alpha="1" colorSpace="calibratedRGB"/>
+                                </state>
+                                <connections>
+                                    <action selector="btnErrorCollectAction:" destination="gTV-IL-0wX" eventType="touchUpInside" id="VB0-zB-Czj"/>
+                                </connections>
+                            </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Lwn-wE-17n" userLabel="View-ct-line">
+                                <rect key="frame" x="2.6666666666666572" y="181" width="370" height="1"/>
+                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="1" id="4ni-RB-g8o"/>
+                                    <constraint firstAttribute="width" constant="370" id="VB6-I0-Azq"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="IpL-zD-I2s" firstAttribute="centerX" secondItem="MEu-3z-L7t" secondAttribute="centerX" id="4qe-y7-gtF"/>
+                            <constraint firstItem="oSy-Iu-VIb" firstAttribute="leading" secondItem="MEu-3z-L7t" secondAttribute="leading" constant="15" id="8IG-QV-CMS"/>
+                            <constraint firstItem="Lwn-wE-17n" firstAttribute="top" secondItem="R10-6X-Ufe" secondAttribute="bottom" constant="31" id="9iw-I8-6mi"/>
+                            <constraint firstAttribute="trailing" secondItem="bUb-zb-Lz2" secondAttribute="trailing" constant="15" id="9zE-rL-lBa"/>
+                            <constraint firstItem="gtO-dN-p0H" firstAttribute="top" secondItem="oSy-Iu-VIb" secondAttribute="bottom" constant="15" id="IWb-TQ-yWt"/>
+                            <constraint firstItem="Lwn-wE-17n" firstAttribute="centerX" secondItem="MEu-3z-L7t" secondAttribute="centerX" id="Kq3-AA-X0L"/>
+                            <constraint firstAttribute="trailing" secondItem="aYQ-Wb-mhG" secondAttribute="trailing" constant="15" id="M6s-lK-EMf"/>
+                            <constraint firstItem="aYQ-Wb-mhG" firstAttribute="top" secondItem="bUb-zb-Lz2" secondAttribute="bottom" constant="15" id="Mko-3J-1Vt"/>
+                            <constraint firstItem="v9R-cO-H2n" firstAttribute="top" secondItem="N9M-0h-2TW" secondAttribute="bottom" constant="15" id="Po1-aZ-Mq5"/>
+                            <constraint firstItem="gtO-dN-p0H" firstAttribute="leading" secondItem="MEu-3z-L7t" secondAttribute="leading" constant="15" id="Qp4-PE-AbA"/>
+                            <constraint firstItem="R10-6X-Ufe" firstAttribute="centerX" secondItem="MEu-3z-L7t" secondAttribute="centerX" id="Qql-a0-DNd"/>
+                            <constraint firstItem="Lwn-wE-17n" firstAttribute="top" secondItem="Le5-z7-wqu" secondAttribute="bottom" constant="15" id="WeF-qh-Lhi"/>
+                            <constraint firstItem="Lwn-wE-17n" firstAttribute="centerY" secondItem="MEu-3z-L7t" secondAttribute="centerY" id="X4D-tK-5DW"/>
+                            <constraint firstAttribute="trailing" secondItem="N9M-0h-2TW" secondAttribute="trailing" constant="15" id="Y0t-mG-LCa"/>
+                            <constraint firstItem="Le5-z7-wqu" firstAttribute="leading" secondItem="MEu-3z-L7t" secondAttribute="leading" constant="15" id="aOf-HR-FMT"/>
+                            <constraint firstItem="Yx4-u2-eez" firstAttribute="leading" secondItem="MEu-3z-L7t" secondAttribute="leading" constant="15" id="aPW-vA-Obd"/>
+                            <constraint firstItem="Le5-z7-wqu" firstAttribute="top" secondItem="Yx4-u2-eez" secondAttribute="bottom" constant="15" id="hSY-9j-dzf"/>
+                            <constraint firstItem="N9M-0h-2TW" firstAttribute="top" secondItem="Lwn-wE-17n" secondAttribute="bottom" constant="15" id="mDS-PR-OWZ"/>
+                            <constraint firstItem="IpL-zD-I2s" firstAttribute="top" secondItem="Lwn-wE-17n" secondAttribute="bottom" constant="31" id="nI1-dh-BNe"/>
+                            <constraint firstAttribute="trailing" secondItem="v9R-cO-H2n" secondAttribute="trailing" constant="15" id="pf8-d4-3cP"/>
+                            <constraint firstItem="oSy-Iu-VIb" firstAttribute="top" secondItem="Lwn-wE-17n" secondAttribute="bottom" constant="15" id="rDJ-He-BPa"/>
+                            <constraint firstItem="Lwn-wE-17n" firstAttribute="top" secondItem="aYQ-Wb-mhG" secondAttribute="bottom" constant="15" id="viZ-oR-2Dj"/>
+                        </constraints>
+                    </view>
+                </subviews>
+            </view>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="MEu-3z-L7t" secondAttribute="trailing" id="8Yp-ht-aHB"/>
+                <constraint firstItem="MEu-3z-L7t" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="Kuc-VS-Es8"/>
+                <constraint firstAttribute="bottom" secondItem="MEu-3z-L7t" secondAttribute="bottom" id="PG9-qL-zed"/>
+                <constraint firstItem="MEu-3z-L7t" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="TmX-2h-KxZ"/>
+            </constraints>
+            <size key="customSize" width="352" height="494"/>
+            <connections>
+                <outlet property="blue_title_sx" destination="bW1-yD-4eb" id="0z5-pP-g6N"/>
+                <outlet property="btn_left_0" destination="Yx4-u2-eez" id="bYH-XU-A46"/>
+                <outlet property="btn_left_1" destination="Le5-z7-wqu" id="fkg-SW-4uI"/>
+                <outlet property="btn_left_2" destination="oSy-Iu-VIb" id="b4u-tl-sSY"/>
+                <outlet property="btn_left_3" destination="gtO-dN-p0H" id="N9Q-xP-e9T"/>
+                <outlet property="btn_right_0" destination="bUb-zb-Lz2" id="3VS-tt-TMQ"/>
+                <outlet property="btn_right_1" destination="aYQ-Wb-mhG" id="MgI-I5-nXB"/>
+                <outlet property="btn_right_2" destination="N9M-0h-2TW" id="chn-Ej-eXZ"/>
+                <outlet property="btn_right_3" destination="v9R-cO-H2n" id="lby-ww-4hi"/>
+                <outlet property="green_title_mnks" destination="XRu-rh-cgs" id="QT0-qi-EBc"/>
+                <outlet property="lay_blue_h" destination="bHV-pq-Hsd" id="zDa-cS-Jrn"/>
+                <outlet property="lay_blue_w" destination="Nw9-3y-eyB" id="5ZU-LZ-Evt"/>
+                <outlet property="lay_green_h" destination="aBP-dq-Ple" id="VtI-ee-Idu"/>
+                <outlet property="lay_green_w" destination="jFd-rq-dKt" id="F9I-mt-5Zo"/>
+            </connections>
+            <point key="canvasLocation" x="278.62595419847327" y="143.3098591549296"/>
+        </collectionViewCell>
+    </objects>
+    <resources>
+        <image name="btn_exe_blue" width="121" height="121"/>
+        <image name="btn_exe_green" width="121" height="121"/>
+        <image name="专项练习_Y" width="36" height="38"/>
+        <image name="分阶段练题" width="36" height="38"/>
+        <image name="易错专项_Y" width="36" height="38"/>
+        <image name="电子资料-L" width="36" height="38"/>
+        <image name="真实考场-G" width="36" height="38"/>
+        <image name="科一VIP-B" width="36" height="38"/>
+        <image name="精选500题-B" width="36" height="38"/>
+        <image name="错题收藏_R" width="36" height="38"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 19 - 6
jiaPei/Modules/HomePageModule/View/HomePage/RQHomeSubPageVideoHeaderCollectionReusableView.m

@@ -33,12 +33,25 @@
     _moreLabel.hidden = RQStringIsEmpty(viewModel.header) || [viewModel.header isEqualToString:@"短视频"];
     _rightArrow.hidden = RQStringIsEmpty(viewModel.header) || [viewModel.header isEqualToString:@"短视频"];
     [_myContentView setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
-        RQVideoCatalogueViewModel *videoCatalogueViewModel = [[RQVideoCatalogueViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
-            RQViewModelUtilKey : self.viewModel.treeListModel,
-            RQHomePageSubjectTypeKey : @(self.viewModel.homePageSubjectType),
-            RQVideoItemIndexPathKey : @(self.viewModel.mySection),
-        }];
-        [RQ_APPDELEGATE.services pushViewModel:videoCatalogueViewModel animated:YES];
+        // 获取当前系统版本
+        NSOperatingSystemVersion systemVersion = [[NSProcessInfo processInfo] operatingSystemVersion];
+        if (systemVersion.majorVersion < 18.0) {
+            NSLog(@"当前系统版本小于 iOS 18.0");
+            RQVideoCatalogueViewModel *videoCatalogueViewModel = [[RQVideoCatalogueViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
+                RQViewModelUtilKey : self.viewModel.treeListModel,
+                RQHomePageSubjectTypeKey : @(self.viewModel.homePageSubjectType),
+                RQVideoItemIndexPathKey : @(self.viewModel.mySection),
+            }];
+            [RQ_APPDELEGATE.services pushViewModel:videoCatalogueViewModel animated:YES];
+        } else {
+            NSLog(@"当前系统版本大于 iOS 18.0");
+            NYVideoCatalogueViewModel *videoCatalogueViewModel = [[NYVideoCatalogueViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
+                RQViewModelUtilKey : self.viewModel.treeListModel,
+                RQHomePageSubjectTypeKey : @(self.viewModel.homePageSubjectType),
+                RQVideoItemIndexPathKey : @(self.viewModel.mySection),
+            }];
+            [RQ_APPDELEGATE.services pushViewModel:videoCatalogueViewModel animated:YES];
+        }
     }];
 }
 

+ 5 - 0
jiaPei/Modules/HomePageModule/ViewController/HomePage/RQHomePageSubjectOneOrFourViewController.m

@@ -60,6 +60,8 @@
         return [RQHomeSubPageVideoCell cellWithCollectionView:collectionView forIndexPath:indexPath];
     } else if ([itemViewModel isKindOfClass:[RQHomePageOneOrFourBigItemViewModel class]]) {
         return [RQHomePageOneOrFourBigCell cellWithCollectionView:collectionView forIndexPath:indexPath];
+    } else if ([itemViewModel isKindOfClass:[NYHomePageOneBigItemViewModel class]]) {
+        return [NYHomePageOneBigCell cellWithCollectionView:collectionView forIndexPath:indexPath]; /// 新
     } else if ([itemViewModel isKindOfClass:[RQHomePageOneOrFourSmallItemViewModel class]]) {
         return [RQHomePageOneOrFourSmallCell cellWithCollectionView:collectionView forIndexPath:indexPath];
     } else if ([itemViewModel isKindOfClass:[RQHomePageSimulationExamItemViewModel class]]) {
@@ -95,6 +97,9 @@
     } else if ([itemViewModel isKindOfClass:[RQHomePageOneOrFourBigItemViewModel class]]) {
         RQHomePageOneOrFourBigCell *homePageOneOrFourBigCell = (RQHomePageOneOrFourBigCell *)cell;
         [homePageOneOrFourBigCell bindViewModel:object];
+    } else if ([itemViewModel isKindOfClass:[NYHomePageOneBigItemViewModel class]]) {
+        NYHomePageOneBigCell *nyhomePageOneBigCell = (NYHomePageOneBigCell *)cell;
+        [nyhomePageOneBigCell bindViewModel:object];
     } else if ([itemViewModel isKindOfClass:[RQHomePageOneOrFourSmallItemViewModel class]]) {
         RQHomePageOneOrFourSmallCell *homePageOneOrFourSmallCell = (RQHomePageOneOrFourSmallCell *)cell;
         [homePageOneOrFourSmallCell bindViewModel:object];

+ 22 - 3
jiaPei/Modules/HomePageModule/ViewModel/HomePage/RQHomePageSubjectOneOrFourViewModel.m

@@ -48,7 +48,7 @@
 /// 考场视频
 @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *groupKaoChang;
 
-
+@property (nonatomic, readwrite, copy) NSArray *subjectOneSectionZeroArr;
 @property (nonatomic, readwrite, copy) NSArray *subjectOneOrFourSectionZeroArr;
 @property (nonatomic, readwrite, copy) NSArray *subjectOneOrFourSectionZeroBigModelArr;
 @property (nonatomic, readwrite, copy) NSArray *subjectOneOrFourSectionZeroSmallModelArr;
@@ -180,13 +180,20 @@
             _group0.headerHeight = 10.f;
             _group0.footerHeight = 10.f;
             _group0.itemViewModels = @[];
-        } else {
+        } else if (self.homePageSubjectType == RQHomePageSubjectType_SubjectFour){
             [_group0 setCustomStyleWithRQCommonGroupModel:^(RQCommonGroupModel *groupModel) {
                 groupModel.headerHeight =  CGFLOAT_MIN;
                 groupModel.footerHeight = 16.f;
                 groupModel.footerBgColor = RQ_MAIN_BACKGROUNDCOLOR;
             }];
             _group0.itemViewModels = self.subjectOneOrFourSectionZeroArr;
+        } else if (self.homePageSubjectType == RQHomePageSubjectType_SubjectOne){
+            [_group0 setCustomStyleWithRQCommonGroupModel:^(RQCommonGroupModel *groupModel) {
+                groupModel.headerHeight =  CGFLOAT_MIN;
+                groupModel.footerHeight = 16.f;
+                groupModel.footerBgColor = RQ_MAIN_BACKGROUNDCOLOR;
+            }];
+            _group0.itemViewModels = self.subjectOneSectionZeroArr;
         }
     }
     return _group0;
@@ -195,7 +202,11 @@
 - (RQCommonGroupViewModel *)group1 {
     if (!_group1) {
         _group1 = [RQHomePageSectionOneGroupViewModel groupViewModel];
-        _group1.itemViewModels = self.subjectOneOrFourSectionOneArr;
+        if (self.homePageSubjectType == RQHomePageSubjectType_SubjectOne){
+            _group1.itemViewModels = @[];
+        }else{
+            _group1.itemViewModels = self.subjectOneOrFourSectionOneArr;
+        }
     }
     return _group1;
 }
@@ -386,6 +397,14 @@
     return (self.homePageSubjectType == RQHomePageSubjectType_SubjectFour)? @"科目四" : ((self.homePageSubjectType == RQHomePageSubjectType_SubjectThree)? @"科目三" : (self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo)? @"科目二" : @"科目一");
 }
 
+
+- (NSArray *)subjectOneSectionZeroArr {
+    return @[
+        [[NYHomePageOneBigItemViewModel alloc] initWithNYHomePageCarType:self.homePageCarType homePageSubjectType:self.homePageSubjectType]
+    ];
+}
+
+
 - (NSArray *)subjectOneOrFourSectionZeroArr {
     return [self.subjectOneOrFourSectionZeroBigModelArr.rac_sequence.signal map:^id _Nullable(RQHomePageOneOrFourItemModel *homePageOneOrFourItemModel) {
         RQHomePageOneOrFourBigItemViewModel *itemViewModel = [[RQHomePageOneOrFourBigItemViewModel alloc] initWithRQHomePageCarType:self.homePageCarType homePageSubjectType:self.homePageSubjectType homePageOneOrFourItemModel:homePageOneOrFourItemModel];

+ 26 - 0
jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/NYHomePageOneBigItemViewModel.h

@@ -0,0 +1,26 @@
+//
+//  NYHomePageOneBigItemViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/22.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYHomePageOneBigItemViewModel : RQCommonCollectionItemViewModel
+@property (nonatomic, readonly, assign) RQHomePageCarType homePageCarType;
+@property (nonatomic, readonly, assign) RQHomePageSubjectType homePageSubjectType;
+
+@property (nonatomic, readwrite, copy) NSAttributedString *mnksStr;
+@property (nonatomic, readwrite, copy) NSAttributedString *sxlxtStr;
+
+
+/// init
+- (instancetype)initWithNYHomePageCarType:(RQHomePageCarType)homePageCarType homePageSubjectType:(RQHomePageSubjectType)homePageSubjectType;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 73 - 0
jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/NYHomePageOneBigItemViewModel.m

@@ -0,0 +1,73 @@
+//
+//  NYHomePageOneBigItemViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/22.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYHomePageOneBigItemViewModel.h"
+
+@interface NYHomePageOneBigItemViewModel ()
+@property (nonatomic, readwrite, assign) RQHomePageCarType homePageCarType;
+@property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType;
+
+@end
+
+@implementation NYHomePageOneBigItemViewModel
+
+
+- (instancetype)initWithNYHomePageCarType:(RQHomePageCarType)homePageCarType homePageSubjectType:(RQHomePageSubjectType)homePageSubjectType {
+    if (self = [super init]) {
+        @weakify(self)
+        self.homePageCarType = homePageCarType;
+        self.homePageSubjectType = homePageSubjectType;
+        CGFloat width = RQ_SCREEN_WIDTH;
+        CGFloat height = RQ_FIT_HORIZONTAL(363.f);
+        self.itemSize = CGSizeMake(width, height);
+        
+        NSInteger allCount = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:self.homePageSubjectType exerciseType:RQExerciseType_Sequential];
+        self.sxlxtStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%ld/%ld",[RQ_YDT_USER_Question_Module getDoQuestionNum],allCount]];
+        RAC(self, sxlxtStr) = [[RACSignal combineLatest:@[RACObserve(RQ_YDTQuestion_Module, subjectOneArr), RACObserve(RQ_YDTQuestion_Module, subjectFourArr)] reduce:^id (NSArray *subjectOneArr, NSArray *subjectFourArr) {
+            @strongify(self)
+            NSInteger allCount = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:self.homePageSubjectType exerciseType:RQExerciseType_Sequential];
+            return [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%ld/%ld",[RQ_YDT_USER_Question_Module getDoQuestionNum],allCount]];
+        }] takeUntil:self.rac_willDeallocSignal];
+        
+        
+        
+        NSString *score = [NSString stringWithFormat:@"%@",@"0"];
+        NSString *fen = [NSString stringWithFormat:@"分"];
+        NSString *myScore = [NSString stringWithFormat:@"%@%@",score,fen];
+        NSMutableAttributedString *myScoreAttrStr = [[NSMutableAttributedString alloc] initWithString:myScore];
+        self.mnksStr = myScoreAttrStr;//模拟考试
+        
+        RAC(self, mnksStr) = [[RACSignal combineLatest:@[RACObserve(RQ_COMMON_MANAGER, examResultOneListArr), RACObserve(RQ_COMMON_MANAGER, examResultFourListArr)] reduce:^id (NSArray *examResultOneListArr, NSArray *examResultFourListArr) {
+            @strongify(self)
+            NSArray *arr;
+            if (self.homePageSubjectType == RQHomePageSubjectType_SubjectOne) {
+                arr = examResultOneListArr;
+            }
+            
+            if (self.homePageSubjectType == RQHomePageSubjectType_SubjectFour) {
+                arr = examResultFourListArr;
+            }
+            
+            float max = [[[arr.rac_sequence.signal map:^id _Nullable(RQExamResultModel *examResultModel) {
+                return examResultModel.score;
+            }].toArray valueForKeyPath:@"@max.floatValue"] floatValue];
+
+            NSString *score = [NSString qmui_stringWithCGFloat:max decimal:0];
+            NSString *fen = [NSString stringWithFormat:@"分"];
+            NSString *myScore = [NSString stringWithFormat:@"%@%@",score,fen];
+            NSMutableAttributedString *myScoreAttrStr = [[NSMutableAttributedString alloc] initWithString:myScore];
+           
+            return myScoreAttrStr;
+        }] takeUntil:self.rac_willDeallocSignal];
+        
+        
+    }
+    return self;
+}
+
+@end

+ 18 - 18
jiaPei/Modules/HomePageModule/ViewModel/HomePage/itemViewModel/RQHomePageOneOrFourSmallItemViewModel.m

@@ -40,30 +40,30 @@
                 [RQ_VIP_Module isVipWithSubject:RQ_YDTQuestion_Module.subject + 1 complete:^(BOOL isVip) {  
                     if (isVip) {
 //                        username subject headimg gs 替换-> model
-                        NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-                        webViewModel.prefersNavigationBarHidden = YES;
-                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+//                        NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+//                        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+//                        RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+//                        webViewModel.prefersNavigationBarHidden = YES;
+//                        [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
                         
-//                        //显示真实考场
-//                        NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-//                        examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-//                        [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                        //显示真实考场
+                        NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                        examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                        [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
                         
                     } else {
                         if (RQ_VIP_Module.freeLookSimExamNum == 1||
                             RQ_COMMON_MANAGER.APP_SWITCH) {//审核状态不用看广告
-                            NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
-                            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
-                            RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
-                            webViewModel.prefersNavigationBarHidden = YES;
-                            [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
+//                            NSString *urlStr = [NSString stringWithFormat:@"https://mn.zzxcx.net/#/exam/begin?username=%@&subject=%@&model=%@&headimg=%@",[RQ_USER_MANAGER.currentUser.userName qmui_stringByEncodingUserInputQuery],RQ_YDTQuestion_Module.subjectStr,RQ_YDTQuestion_Module.carTypeStrNew,RQ_USER_MANAGER.currentUser.photo];
+//                            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]];
+//                            RQWebViewModel *webViewModel = [[RQWebViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewModelRequestKey:request, RQViewModelWebViewTypeKey:@(RQWebViewType_Exam)}];
+//                            webViewModel.prefersNavigationBarHidden = YES;
+//                            [RQ_APPDELEGATE.services pushViewModel:webViewModel animated:YES];
                             
-//                            //显示真实考场
-//                            NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
-//                            examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
-//                            [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
+                            //显示真实考场
+                            NYExaminationViewModel *examinationViewModel = [[NYExaminationViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{}];
+                            examinationViewModel.km = RQ_YDTQuestion_Module.subjectStr.intValue;
+                            [RQ_APPDELEGATE.services pushViewModel:examinationViewModel animated:YES];
                             RQ_VIP_Module.freeLookSimExamNum = 0;
                         } else {
                             if(!RQ_COMMON_MANAGER.APP_SWITCH){

+ 1 - 1
jiaPei/Modules/OtherModules/VideoModule/Controller/RQVideoCatalogueViewController.m

@@ -70,7 +70,6 @@
         NSMutableArray *titleArr = [NSMutableArray arrayWithArray:typeNameStrArr.copy];
         self.menuCategoryViewTitleWidth = titleArr.count > 1? RQ_FIT_HORIZONTAL(98.f) : 0.f;
         [self.view addSubview:self.menuCategoryView];
-
         CGXVerticalMenuTitleModel *lastItemModel;
         NSMutableArray *dataArr = [NSMutableArray array];
         for (int i = 0; i < titleArr.count; i++) {
@@ -179,6 +178,7 @@
         }
         [self.menuCategoryView updateListWithDataArray:dataArr];
     }];
+    
 }
 
 /**

+ 2 - 0
jiaPei/Modules/OtherModules/VideoModule/RQVideoModule.h

@@ -61,6 +61,7 @@ typedef NS_ENUM(NSUInteger, RQVideoDetailSubPageUpdateDataType) {
 
 
 #pragma mark - ViewModel
+#import "NYVideoCatalogueViewModel.h"
 #import "RQVideoCatalogueViewModel.h"
 #import "RQVideoDetailViewModel.h"
 #import "RQDspVideoDetailViewModel.h"
@@ -74,6 +75,7 @@ typedef NS_ENUM(NSUInteger, RQVideoDetailSubPageUpdateDataType) {
 #import "RQVipPlaceHolderView.h"
 
 #pragma mark - ViewController
+#import "NYVideoCatalogueViewController.h"
 #import "RQVideoCatalogueViewController.h"
 #import "RQVideoDetailViewController.h"
 #import "RQDspVideoDetailViewController.h"

+ 20 - 0
jiaPei/Modules/OtherModules/VideoModule/ViewModel/NYVideoCatalogueViewModel.h

@@ -0,0 +1,20 @@
+//
+//  NYVideoCatalogueViewModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/27.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYVideoCatalogueViewModel : RQCommonViewModel
+@property (nonatomic, readonly, strong) RQTreeListModel *treeListModel;
+@property (nonatomic, readonly, assign) RQHomePageSubjectType homePageSubjectType;
+@property (nonatomic, readonly, assign) NSInteger mySection;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 63 - 0
jiaPei/Modules/OtherModules/VideoModule/ViewModel/NYVideoCatalogueViewModel.m

@@ -0,0 +1,63 @@
+//
+//  NYVideoCatalogueViewModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/27.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYVideoCatalogueViewModel.h"
+
+@interface NYVideoCatalogueViewModel ()
+@property (nonatomic, readwrite, strong) RQTreeListModel *treeListModel;
+@property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType;
+@property (nonatomic, readwrite, assign) NSInteger mySection;
+
+@end
+
+@implementation NYVideoCatalogueViewModel
+#pragma mark - Public Method
+- (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params {
+    if (self = [super initWithServices:services params:params]) {
+        self.treeListModel = params[RQViewModelUtilKey];
+        self.homePageSubjectType =  [params[RQHomePageSubjectTypeKey] integerValue];
+        self.mySection = [params[RQVideoItemIndexPathKey] integerValue];
+    }
+    return self;
+}
+
+- (void)initialize {
+    [super initialize];
+    /// 配置标题
+    [self rq_configureTitle];
+}
+
+#pragma mark - PrivateMethod
+- (void)rq_configureTitle {
+    [[RACSignal combineLatest:@[RACObserve(self, homePageSubjectType)]
+                            reduce:^id(NSNumber *homePageSubjectType){
+        NSString *homePageSubjectTypeStr = @"";
+        
+        switch (homePageSubjectType.integerValue) {
+            case RQHomePageSubjectType_SubjectOne:
+                homePageSubjectTypeStr = @"科目一";
+                break;
+            case RQHomePageSubjectType_SubjectTwo:
+                homePageSubjectTypeStr = @"科目二";
+                break;
+            case RQHomePageSubjectType_SubjectThree:
+                homePageSubjectTypeStr = @"科目三";
+                break;
+            case RQHomePageSubjectType_SubjectFour:
+                homePageSubjectTypeStr = @"科目四";
+                break;
+                
+            default:
+                break;
+        }
+        return [NSString stringWithFormat:@"%@视频",homePageSubjectTypeStr];
+    }] subscribeNext:^(NSString *titleStr) {
+        self.title = titleStr;
+    }];
+}
+@end

BIN
jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/hc.db


BIN
jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/js.db


BIN
jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/kc.db


BIN
jiaPei/Modules/OtherModules/YDTQuestionModule/Resources/xc.db


+ 1 - 0
jiaPei/Utils/Router/RQRouter.m

@@ -118,6 +118,7 @@ static RQRouter *sharedInstance_ = nil;
              
              /*OtherModule*/
              @"RQVideoCatalogueViewModel"           :               @"RQVideoCatalogueViewController",
+             @"NYVideoCatalogueViewModel"           :               @"NYVideoCatalogueViewController",
              @"RQVideoDetailViewModel"              :               @"RQVideoDetailViewController",
              @"RQVideoDetailSubPageViewModel"       :               @"RQVideoDetailSubPageViewController",
              @"RQVipViewModel"                      :               @"RQVipViewController",

+ 21 - 0
jiaPei/Vendor/MuTableCollectMenu/Extension/NSString+hAdd.h

@@ -0,0 +1,21 @@
+//
+//  NSString+hAdd.h
+//  MultilevelMenu
+//
+//  Created by Kingson on 2020/12/4.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NSString (hAdd)
+
+- (CGFloat)heightForFont:(UIFont *)font width:(CGFloat)width;
+
+- (CGSize)sizeForFont:(UIFont *)font size:(CGSize)size mode:(NSLineBreakMode)lineBreakMode;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 43 - 0
jiaPei/Vendor/MuTableCollectMenu/Extension/NSString+hAdd.m

@@ -0,0 +1,43 @@
+//
+//  NSString+hAdd.m
+//  MultilevelMenu
+//
+//  Created by Kingson on 2020/12/4.
+//
+
+#import "NSString+hAdd.h"
+
+@implementation NSString (hAdd)
+
+
+- (CGFloat)heightForFont:(UIFont *)font width:(CGFloat)width {
+    CGSize size = [self sizeForFont:font size:CGSizeMake(width, MAXFLOAT) mode:NSLineBreakByWordWrapping];
+    return size.height;
+}
+
+
+- (CGSize)sizeForFont:(UIFont *)font size:(CGSize)size mode:(NSLineBreakMode)lineBreakMode {
+    CGSize result;
+    if (!font) font = [UIFont systemFontOfSize:12];
+    if ([self respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) {
+        NSMutableDictionary *attr = [NSMutableDictionary new];
+        attr[NSFontAttributeName] = font;
+        if (lineBreakMode != NSLineBreakByWordWrapping) {
+            NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
+            paragraphStyle.lineBreakMode = lineBreakMode;
+            attr[NSParagraphStyleAttributeName] = paragraphStyle;
+        }
+        CGRect rect = [self boundingRectWithSize:size
+                                         options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
+                                      attributes:attr context:nil];
+        result = rect.size;
+    } else {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+        result = [self sizeWithFont:font constrainedToSize:size lineBreakMode:lineBreakMode];
+#pragma clang diagnostic pop
+    }
+    return result;
+}
+
+@end

+ 16 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/CollectviewChooseCell.h

@@ -0,0 +1,16 @@
+//
+//  CollectviewChooseCell.h
+//  MuTableCollectMenu
+//
+//  Created by Kingson on 2021/4/25.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface CollectviewChooseCell : UICollectionViewCell
+@property(nonatomic,retain)UILabel *titleLab;
+@property(nonatomic,retain)UIButton *SelectIconBtn;
+@property (nonatomic,assign)BOOL isSelected;
+-(void)UpdateCellWithState:(BOOL)select;
+
+@end

+ 73 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/CollectviewChooseCell.m

@@ -0,0 +1,73 @@
+//
+//  CollectviewChooseCell.m
+//  MuTableCollectMenu
+//
+//  Created by Kingson on 2021/4/25.
+//
+
+
+#import "CollectviewChooseCell.h"
+#import <Masonry/Masonry.h>
+#define SelectNum_ItemHeight 51
+#define SelectNum_ItemWidth 77
+#define ItemFont1 17
+#define ItemFont2 16
+
+@implementation CollectviewChooseCell
+
+-(id)initWithFrame:(CGRect)frame
+{
+    self = [super initWithFrame:frame];
+    if (self) {
+        [self initView];
+    }
+    return  self;
+}
+
+
+-(void)initView{
+    _SelectIconBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    _SelectIconBtn.userInteractionEnabled = NO;
+    [_SelectIconBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
+    
+    [_SelectIconBtn setBackgroundImage:[UIImage imageNamed:@"collectview_Unselect"] forState:UIControlStateNormal];
+    [_SelectIconBtn setBackgroundImage:[UIImage imageNamed:@"collectview_Selected"] forState:UIControlStateSelected];
+    _SelectIconBtn.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
+    [self.contentView addSubview:_SelectIconBtn];
+    [_SelectIconBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.left.equalTo(self.contentView.mas_left).offset(0);
+//        make.right.equalTo(self.contentView.mas_right).offset(0);
+//        make.top.equalTo(self.contentView.mas_top).offset(0);
+//        make.bottom.equalTo(self.contentView.mas_bottom).offset(0);
+        make.left.equalTo(self.mas_left);
+        make.right.equalTo(self.mas_right);
+        make.top.equalTo(self.mas_top);
+        make.bottom.equalTo(self.mas_bottom);
+        
+    }];
+
+    _titleLab = [[UILabel alloc]init];
+    _titleLab.textColor = [UIColor darkTextColor];
+    _titleLab.font = [UIFont systemFontOfSize:32];
+//    _titleLab.textAlignment = NSTextAlignmentLeft;
+    _titleLab.textAlignment = NSTextAlignmentCenter;
+    _titleLab.lineBreakMode = NSLineBreakByWordWrapping;
+    _titleLab.numberOfLines = 0;
+    [self.contentView addSubview:_titleLab];
+    [_titleLab mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.mas_left);
+        make.right.equalTo(self.mas_right);
+        make.top.equalTo(self.mas_top);
+        make.bottom.equalTo(self.mas_bottom);
+    }];
+}
+
+
+
+-(void)UpdateCellWithState:(BOOL)select{
+    self.SelectIconBtn.selected = select;
+    _isSelected = select;
+}
+
+
+@end

+ 15 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/MultilevelTableViewCell.h

@@ -0,0 +1,15 @@
+//
+//  MultilevelTableViewCell.h
+//  MultilevelMenu
+//
+//  Created by Kingson on 2021/4/25.
+//
+
+
+#import <UIKit/UIKit.h>
+
+@interface MultilevelTableViewCell : UITableViewCell
+
+@property (weak, nonatomic) IBOutlet UILabel *titile;
+
+@end

+ 18 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/MultilevelTableViewCell.m

@@ -0,0 +1,18 @@
+//
+//  MultilevelTableViewCell.m
+//  MultilevelMenu
+//
+//  Created by Kingson on 2021/4/25.
+//
+
+#import "MultilevelTableViewCell.h"
+
+@implementation MultilevelTableViewCell
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 39 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/MultilevelTableViewCell.xib

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="MultilevelTableViewCell" id="KGk-i7-Jjw" customClass="MultilevelTableViewCell">
+            <rect key="frame" x="0.0" y="0.0" width="100" height="44"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
+                <rect key="frame" x="0.0" y="0.0" width="100" height="44"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eJ2-ih-FZh">
+                        <rect key="frame" x="4" y="11" width="92" height="21"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="eJ2-ih-FZh" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="4" id="64Y-jU-I8C"/>
+                    <constraint firstItem="eJ2-ih-FZh" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="11" id="in2-9Z-zaa"/>
+                    <constraint firstAttribute="bottom" secondItem="eJ2-ih-FZh" secondAttribute="bottom" constant="12" id="ru1-QH-UW6"/>
+                    <constraint firstAttribute="trailing" secondItem="eJ2-ih-FZh" secondAttribute="trailing" constant="4" id="vOq-v0-QIi"/>
+                </constraints>
+            </tableViewCellContentView>
+            <connections>
+                <outlet property="titile" destination="eJ2-ih-FZh" id="3Yc-bX-JM4"/>
+            </connections>
+            <point key="canvasLocation" x="14" y="2"/>
+        </tableViewCell>
+    </objects>
+</document>

+ 17 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/NYVideoListCell.h

@@ -0,0 +1,17 @@
+//
+//  NYVideoListCell.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/27.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NYVideoListCell : UICollectionViewCell
+- (void)reloadData:(CGXVerticalMenuMoreListSectionItemModel *)model;
+@end
+
+NS_ASSUME_NONNULL_END

+ 77 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/NYVideoListCell.m

@@ -0,0 +1,77 @@
+//
+//  NYVideoListCell.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/11/27.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "NYVideoListCell.h"
+
+@interface NYVideoListCell ()
+@property (nonatomic, readwrite, strong) CGXVerticalMenuMoreListSectionItemModel *model;
+
+
+@property (weak, nonatomic) IBOutlet UILabel *videoTitleLabel;
+@property (weak, nonatomic) IBOutlet UILabel *videoDurationLabel;
+@property (weak, nonatomic) IBOutlet QMUIButton *tryLookBtn;
+@property (weak, nonatomic) IBOutlet UIButton *vipBtn;
+@property (weak, nonatomic) IBOutlet UIImageView *videoImageView;
+@property (nonatomic, readwrite, strong) RQVideoPermissionStateModel *videoPermissionStateModel;
+
+@end
+
+
+@implementation NYVideoListCell
+
+#pragma mark - Public Method
++ (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
+    static NSString *ID = @"NYVideoListCell";
+    [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
+    NYVideoListCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
+    if (!cell) cell = [self rq_viewFromXib];
+    return cell;
+}
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    _tryLookBtn.spacingBetweenImageAndTitle = 3;
+    [_tryLookBtn setBackgroundColor:[UIColor rq_colorGradientChangeWithFrame:_tryLookBtn.frame startPoint:CGPointMake(0, 0.5) endPoint:CGPointMake(1, 0.5) startColor:RQColorFromHexString(@"#FF4C52") endColor:RQColorFromHexString(@"#FC8269")]];
+}
+
+- (void)reloadData:(CGXVerticalMenuMoreListSectionItemModel *)model {
+    @weakify(self)
+    self.model = model;
+    VideosItem *videosItem = (VideosItem *)model.dataModel;
+    self.videoTitleLabel.text = videosItem.title;
+//    if (!RQ_COMMON_MANAGER.APP_SWITCH) {
+        [[RACSignal combineLatest:@[RACObserve(RQ_VIP_Module, isSubject2Vip), RACObserve(RQ_VIP_Module, isSubject3Vip)] reduce:^id (NSNumber *isSubjectTwoVip, NSNumber *isSubjectThreeVip) {
+            @strongify(self)
+            if ((videosItem.subject == 1 && RQ_VIP_Module.isSubject2Vip) || (videosItem.subject == 2 && RQ_VIP_Module.isSubject3Vip)) {
+                self.videoPermissionStateModel.tryLookShow = NO;
+                self.videoPermissionStateModel.vipShow = NO;
+            } else {
+                self.videoPermissionStateModel.tryLookShow = (videosItem.permission == 1);
+                self.videoPermissionStateModel.vipShow = (videosItem.permission == 2);
+            }
+            return self.videoPermissionStateModel;
+        }] subscribeNext:^(RQVideoPermissionStateModel *videoPermissionStateModel) {
+            @strongify(self)
+            self.tryLookBtn.hidden = !videoPermissionStateModel.tryLookShow;
+            self.vipBtn.hidden = !videoPermissionStateModel.vipShow;
+        }];
+//    }
+    
+    
+    [self.videoImageView yy_setImageWithURL:[NSURL URLWithString:videosItem.coverFileUrl] placeholder:[UIImage imageNamed:@"videoPlaceholder"]];
+    self.videoDurationLabel.text = [NSString getMMSSFromSS:videosItem.videoDuration];
+}
+
+- (RQVideoPermissionStateModel *)videoPermissionStateModel {
+    if (!_videoPermissionStateModel) {
+        _videoPermissionStateModel = [[RQVideoPermissionStateModel alloc] init];
+    }
+    return _videoPermissionStateModel;
+}
+
+@end

+ 124 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/NYVideoListCell.xib

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="NYVideoListCell">
+            <rect key="frame" x="0.0" y="0.0" width="277" height="82"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                <rect key="frame" x="0.0" y="0.0" width="277" height="82"/>
+                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gu2-EL-ZFH">
+                        <rect key="frame" x="0.0" y="0.0" width="277" height="82"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="videoPlaceholder" translatesAutoresizingMaskIntoConstraints="NO" id="R5A-1C-zdM">
+                                <rect key="frame" x="8" y="7" width="120" height="68"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" secondItem="R5A-1C-zdM" secondAttribute="height" multiplier="30:17" id="odB-zI-YkP"/>
+                                </constraints>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:10:40" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ude-6t-OxX">
+                                <rect key="frame" x="136" y="63" width="125" height="16"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wzX-2j-6O1">
+                                <rect key="frame" x="55" y="28" width="26" height="26"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" secondItem="wzX-2j-6O1" secondAttribute="height" id="81o-Ol-H98"/>
+                                </constraints>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" image="playIcon"/>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalCompressionResistancePriority="749" verticalCompressionResistancePriority="749" text="1.1.1机动车驾驶许可" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rw3-De-QYy">
+                                <rect key="frame" x="136" y="3" width="125" height="44"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.039215686270000001" green="0.1019607843" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9y0-8l-3ER">
+                                <rect key="frame" x="16" y="15" width="25" height="14"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" secondItem="9y0-8l-3ER" secondAttribute="height" multiplier="25:14" id="210-cA-lYA"/>
+                                    <constraint firstAttribute="height" constant="14" id="4OK-QG-hh2"/>
+                                </constraints>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" image="VIP1"/>
+                            </button>
+                            <button hidden="YES" opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0Sx-5e-jhg" customClass="QMUIButton">
+                                <rect key="frame" x="16" y="15" width="37" height="14"/>
+                                <color key="backgroundColor" red="0.99215686270000003" green="0.28235294119999998" blue="0.30980392159999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" secondItem="0Sx-5e-jhg" secondAttribute="height" multiplier="37:14" id="JWH-Ri-EAx"/>
+                                    <constraint firstAttribute="height" constant="14" id="XTr-MC-Czb"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                <state key="normal" title="试看" image="试看"/>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                        <integer key="value" value="3"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="R5A-1C-zdM" firstAttribute="width" secondItem="gu2-EL-ZFH" secondAttribute="width" multiplier="120:277" id="0Hb-8u-omI"/>
+                            <constraint firstItem="wzX-2j-6O1" firstAttribute="width" secondItem="R5A-1C-zdM" secondAttribute="width" multiplier="26:120" id="16I-Rb-AL1"/>
+                            <constraint firstItem="Rw3-De-QYy" firstAttribute="top" secondItem="R5A-1C-zdM" secondAttribute="top" constant="-4" id="2R9-an-4Yr"/>
+                            <constraint firstItem="Ude-6t-OxX" firstAttribute="leading" secondItem="R5A-1C-zdM" secondAttribute="trailing" constant="8" id="BmD-Tz-Rsy"/>
+                            <constraint firstItem="Rw3-De-QYy" firstAttribute="leading" secondItem="R5A-1C-zdM" secondAttribute="trailing" constant="8" id="By3-mC-qhc"/>
+                            <constraint firstAttribute="trailing" secondItem="Rw3-De-QYy" secondAttribute="trailing" constant="16" id="FmR-tA-iUy"/>
+                            <constraint firstItem="Ude-6t-OxX" firstAttribute="top" secondItem="Rw3-De-QYy" secondAttribute="bottom" constant="16" id="Izc-8d-Z4w"/>
+                            <constraint firstItem="0Sx-5e-jhg" firstAttribute="leading" secondItem="R5A-1C-zdM" secondAttribute="leading" constant="8" id="JnX-td-7GB"/>
+                            <constraint firstItem="R5A-1C-zdM" firstAttribute="centerY" secondItem="gu2-EL-ZFH" secondAttribute="centerY" id="Q72-ZH-jvj"/>
+                            <constraint firstItem="R5A-1C-zdM" firstAttribute="leading" secondItem="gu2-EL-ZFH" secondAttribute="leading" constant="8" id="Sqz-UO-sPh"/>
+                            <constraint firstItem="9y0-8l-3ER" firstAttribute="leading" secondItem="R5A-1C-zdM" secondAttribute="leading" constant="8" id="Tm8-GL-xNj"/>
+                            <constraint firstItem="wzX-2j-6O1" firstAttribute="centerY" secondItem="R5A-1C-zdM" secondAttribute="centerY" id="deV-sA-la8"/>
+                            <constraint firstAttribute="trailing" secondItem="Ude-6t-OxX" secondAttribute="trailing" constant="16" id="gP5-yB-GH5"/>
+                            <constraint firstItem="0Sx-5e-jhg" firstAttribute="top" secondItem="R5A-1C-zdM" secondAttribute="top" constant="8" id="nla-cA-m6M"/>
+                            <constraint firstItem="wzX-2j-6O1" firstAttribute="centerX" secondItem="R5A-1C-zdM" secondAttribute="centerX" id="qHu-IA-5GY"/>
+                            <constraint firstItem="9y0-8l-3ER" firstAttribute="top" secondItem="R5A-1C-zdM" secondAttribute="top" constant="8" id="rCb-9N-WMJ"/>
+                            <constraint firstItem="Ude-6t-OxX" firstAttribute="bottom" secondItem="R5A-1C-zdM" secondAttribute="bottom" constant="4" id="vcy-Fi-faJ"/>
+                        </constraints>
+                    </view>
+                </subviews>
+            </view>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="gu2-EL-ZFH" secondAttribute="bottom" id="GOP-PC-1y3"/>
+                <constraint firstItem="gu2-EL-ZFH" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="PbP-Cy-yYz"/>
+                <constraint firstAttribute="trailing" secondItem="gu2-EL-ZFH" secondAttribute="trailing" id="mXI-JW-cBC"/>
+                <constraint firstItem="gu2-EL-ZFH" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="nB9-dU-Eeu"/>
+            </constraints>
+            <size key="customSize" width="227" height="110"/>
+            <connections>
+                <outlet property="tryLookBtn" destination="0Sx-5e-jhg" id="mw1-cI-K2K"/>
+                <outlet property="videoDurationLabel" destination="Ude-6t-OxX" id="1OA-cf-B9k"/>
+                <outlet property="videoImageView" destination="R5A-1C-zdM" id="DTt-M1-OBA"/>
+                <outlet property="videoTitleLabel" destination="Rw3-De-QYy" id="2RK-VY-Jq4"/>
+                <outlet property="vipBtn" destination="9y0-8l-3ER" id="Kkw-Po-Ogf"/>
+            </connections>
+            <point key="canvasLocation" x="185.49618320610685" y="9.8591549295774659"/>
+        </collectionViewCell>
+    </objects>
+    <resources>
+        <image name="VIP1" width="25" height="14"/>
+        <image name="playIcon" width="26" height="26"/>
+        <image name="videoPlaceholder" width="120" height="68"/>
+        <image name="试看" width="7.6666665077209473" height="9"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 22 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/ProductCateFilteHeaderView.h

@@ -0,0 +1,22 @@
+//
+//  HeaderView.h
+//  MulChooseDemo
+//
+//  Created by L2H on 16/7/13.
+//  Copyright © 2016年 ailk. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@class ProductCateFilteHeaderView;
+typedef void (^HeadClickBlock) (UIButton *);
+
+@interface ProductCateFilteHeaderView : UICollectionReusableView
+
+@property(nonatomic,strong)UILabel *HeaderTitleLab;
+@property(nonatomic,strong)UIButton *chooseIcon;
+@property (nonatomic,assign)BOOL isAllSelected;
+
+@property(nonatomic, copy) HeadClickBlock headClickBlock;
+
+@end

+ 82 - 0
jiaPei/Vendor/MuTableCollectMenu/MuCellView/ProductCateFilteHeaderView.m

@@ -0,0 +1,82 @@
+//
+//  HeaderView.m
+//  MulChooseDemo
+//
+//  Created by L2H on 16/7/13.
+//  Copyright © 2016年 ailk. All rights reserved.
+//
+
+#import "ProductCateFilteHeaderView.h"
+#import <Masonry/Masonry.h>
+
+@implementation ProductCateFilteHeaderView
+
+- (instancetype)initWithFrame:(CGRect)frame
+{
+    self = [super initWithFrame:frame];
+    if (self) {
+//        [self initView];
+    }
+    return self;
+}
+
+
+
+-(void)initView{
+    
+    self.HeaderTitleLab = [[UILabel alloc] init];
+    [self addSubview:self.HeaderTitleLab];
+    
+    [self.HeaderTitleLab mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.mas_left).offset(15);
+        make.top.equalTo(self.mas_top).offset(0);
+        make.height.mas_equalTo(self.mas_height);
+    }];
+    
+    self.chooseIcon = [UIButton buttonWithType:UIButtonTypeCustom];
+    
+    [self.chooseIcon setImage:[UIImage imageNamed:@"table_UnSelect"] forState:UIControlStateNormal];
+    [self.chooseIcon setImage:[UIImage imageNamed:@"table_Selected"] forState:UIControlStateSelected];
+    
+    [self.chooseIcon addTarget:self action:@selector(ChooseAllClick:) forControlEvents:UIControlEventTouchUpInside];
+    
+    [self addSubview:self.chooseIcon];
+    
+    [self.chooseIcon mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.HeaderTitleLab.mas_right).offset(10);
+        make.right.equalTo(self.mas_right).offset(-15);
+        make.top.equalTo(self.mas_top);
+        make.height.mas_equalTo(self.mas_height);
+        make.width.mas_equalTo(50);
+    }];
+    
+    
+}
+
+
+
+-(void)ChooseAllClick:(UIButton *)button{
+    
+    
+    if (self.headClickBlock) {
+        self.headClickBlock(button);
+    }
+    
+}
+
+- (void)setIsAllSelected:(BOOL)isAllSelected{
+    
+    _isAllSelected = isAllSelected;
+    
+    if (_isAllSelected) {
+        [self.chooseIcon setImage:[UIImage imageNamed:@"table_Selected"] forState:UIControlStateNormal];
+    }else{
+        [self.chooseIcon setImage:[UIImage imageNamed:@"table_UnSelect"] forState:UIControlStateNormal];
+    }
+    
+}
+
+
+
+
+@end