Commit c315248fb37a44a007d921835cd49fc65caaa638

Authored by “张旭”
1 parent 518398eb

实时热榜详情页

metaCode.xcodeproj/project.pbxproj
@@ -135,6 +135,9 @@ @@ -135,6 +135,9 @@
135 19C0F76F2BDB4CE10097CC8F /* CNBindingManageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C0F76E2BDB4CE10097CC8F /* CNBindingManageModel.swift */; }; 135 19C0F76F2BDB4CE10097CC8F /* CNBindingManageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C0F76E2BDB4CE10097CC8F /* CNBindingManageModel.swift */; };
136 19C0F7712BDE1A3B0097CC8F /* CNLiveMineChangePhoneController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C0F7702BDE1A3B0097CC8F /* CNLiveMineChangePhoneController.swift */; }; 136 19C0F7712BDE1A3B0097CC8F /* CNLiveMineChangePhoneController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C0F7702BDE1A3B0097CC8F /* CNLiveMineChangePhoneController.swift */; };
137 19C0F7742BDF71CA0097CC8F /* CNLiveDigitalAuthController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C0F7732BDF71CA0097CC8F /* CNLiveDigitalAuthController.swift */; }; 137 19C0F7742BDF71CA0097CC8F /* CNLiveDigitalAuthController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C0F7732BDF71CA0097CC8F /* CNLiveDigitalAuthController.swift */; };
  138 + 19C735C12BFDCEE900CACF4E /* CNLiveTotalHotListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C735C02BFDCEE900CACF4E /* CNLiveTotalHotListController.swift */; };
  139 + 19C735C32BFED49700CACF4E /* CNLiveRealHotListDetailCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C735C22BFED49700CACF4E /* CNLiveRealHotListDetailCell.swift */; };
  140 + 19C735C52BFF09BA00CACF4E /* CNLiveRealHotListDetailImageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C735C42BFF09BA00CACF4E /* CNLiveRealHotListDetailImageCell.swift */; };
138 19CC4D472ADD006600308E2A /* CNDownSlideSingleCourseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19CC4D462ADD006600308E2A /* CNDownSlideSingleCourseCell.swift */; }; 141 19CC4D472ADD006600308E2A /* CNDownSlideSingleCourseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19CC4D462ADD006600308E2A /* CNDownSlideSingleCourseCell.swift */; };
139 19CC4D492ADD06C500308E2A /* UITableView+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19CC4D482ADD06C500308E2A /* UITableView+Extension.swift */; }; 142 19CC4D492ADD06C500308E2A /* UITableView+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19CC4D482ADD06C500308E2A /* UITableView+Extension.swift */; };
140 19CC4D4B2ADD086F00308E2A /* CNUpSlideDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19CC4D4A2ADD086F00308E2A /* CNUpSlideDetailViewController.swift */; }; 143 19CC4D4B2ADD086F00308E2A /* CNUpSlideDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19CC4D4A2ADD086F00308E2A /* CNUpSlideDetailViewController.swift */; };
@@ -419,6 +422,9 @@ @@ -419,6 +422,9 @@
419 19C0F76E2BDB4CE10097CC8F /* CNBindingManageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNBindingManageModel.swift; sourceTree = "<group>"; }; 422 19C0F76E2BDB4CE10097CC8F /* CNBindingManageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNBindingManageModel.swift; sourceTree = "<group>"; };
420 19C0F7702BDE1A3B0097CC8F /* CNLiveMineChangePhoneController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineChangePhoneController.swift; sourceTree = "<group>"; }; 423 19C0F7702BDE1A3B0097CC8F /* CNLiveMineChangePhoneController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineChangePhoneController.swift; sourceTree = "<group>"; };
421 19C0F7732BDF71CA0097CC8F /* CNLiveDigitalAuthController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDigitalAuthController.swift; sourceTree = "<group>"; }; 424 19C0F7732BDF71CA0097CC8F /* CNLiveDigitalAuthController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDigitalAuthController.swift; sourceTree = "<group>"; };
  425 + 19C735C02BFDCEE900CACF4E /* CNLiveTotalHotListController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveTotalHotListController.swift; sourceTree = "<group>"; };
  426 + 19C735C22BFED49700CACF4E /* CNLiveRealHotListDetailCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveRealHotListDetailCell.swift; sourceTree = "<group>"; };
  427 + 19C735C42BFF09BA00CACF4E /* CNLiveRealHotListDetailImageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveRealHotListDetailImageCell.swift; sourceTree = "<group>"; };
422 19CC4D462ADD006600308E2A /* CNDownSlideSingleCourseCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNDownSlideSingleCourseCell.swift; sourceTree = "<group>"; }; 428 19CC4D462ADD006600308E2A /* CNDownSlideSingleCourseCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNDownSlideSingleCourseCell.swift; sourceTree = "<group>"; };
423 19CC4D482ADD06C500308E2A /* UITableView+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableView+Extension.swift"; sourceTree = "<group>"; }; 429 19CC4D482ADD06C500308E2A /* UITableView+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableView+Extension.swift"; sourceTree = "<group>"; };
424 19CC4D4A2ADD086F00308E2A /* CNUpSlideDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNUpSlideDetailViewController.swift; sourceTree = "<group>"; }; 430 19CC4D4A2ADD086F00308E2A /* CNUpSlideDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNUpSlideDetailViewController.swift; sourceTree = "<group>"; };
@@ -735,6 +741,7 @@ @@ -735,6 +741,7 @@
735 1938BD152B3D6C6000390A34 /* Controller */ = { 741 1938BD152B3D6C6000390A34 /* Controller */ = {
736 isa = PBXGroup; 742 isa = PBXGroup;
737 children = ( 743 children = (
  744 + 19C735BF2BFDCECD00CACF4E /* CNLiveTotalHotListController */,
738 1938BD272B48009600390A34 /* HomeController */, 745 1938BD272B48009600390A34 /* HomeController */,
739 1938BD1D2B46791400390A34 /* PlayletHomePage */, 746 1938BD1D2B46791400390A34 /* PlayletHomePage */,
740 ); 747 );
@@ -852,6 +859,8 @@ @@ -852,6 +859,8 @@
852 19CC4D462ADD006600308E2A /* CNDownSlideSingleCourseCell.swift */, 859 19CC4D462ADD006600308E2A /* CNDownSlideSingleCourseCell.swift */,
853 19CC4D4E2ADD0FC200308E2A /* CNUpSlideDetailScrollView.swift */, 860 19CC4D4E2ADD0FC200308E2A /* CNUpSlideDetailScrollView.swift */,
854 19864E3E2BEF6A3300586E72 /* CNLiveDownSlideRealHotListCell.swift */, 861 19864E3E2BEF6A3300586E72 /* CNLiveDownSlideRealHotListCell.swift */,
  862 + 19C735C22BFED49700CACF4E /* CNLiveRealHotListDetailCell.swift */,
  863 + 19C735C42BFF09BA00CACF4E /* CNLiveRealHotListDetailImageCell.swift */,
855 ); 864 );
856 path = DownSlide; 865 path = DownSlide;
857 sourceTree = "<group>"; 866 sourceTree = "<group>";
@@ -1044,6 +1053,14 @@ @@ -1044,6 +1053,14 @@
1044 path = DigitalAuth; 1053 path = DigitalAuth;
1045 sourceTree = "<group>"; 1054 sourceTree = "<group>";
1046 }; 1055 };
  1056 + 19C735BF2BFDCECD00CACF4E /* CNLiveTotalHotListController */ = {
  1057 + isa = PBXGroup;
  1058 + children = (
  1059 + 19C735C02BFDCEE900CACF4E /* CNLiveTotalHotListController.swift */,
  1060 + );
  1061 + path = CNLiveTotalHotListController;
  1062 + sourceTree = "<group>";
  1063 + };
1047 19CC4D502ADD126D00308E2A /* Util */ = { 1064 19CC4D502ADD126D00308E2A /* Util */ = {
1048 isa = PBXGroup; 1065 isa = PBXGroup;
1049 children = ( 1066 children = (
@@ -1851,6 +1868,7 @@ @@ -1851,6 +1868,7 @@
1851 191733642B392011007BCC04 /* CNLiveShopGoodsSearchViewController.swift in Sources */, 1868 191733642B392011007BCC04 /* CNLiveShopGoodsSearchViewController.swift in Sources */,
1852 79EABB892AB4497700F3A4E2 /* CNLiveSaveStandDB.swift in Sources */, 1869 79EABB892AB4497700F3A4E2 /* CNLiveSaveStandDB.swift in Sources */,
1853 790B1FB62A41938F0074CF00 /* UIImage+CNLiveExtensions.swift in Sources */, 1870 790B1FB62A41938F0074CF00 /* UIImage+CNLiveExtensions.swift in Sources */,
  1871 + 19C735C12BFDCEE900CACF4E /* CNLiveTotalHotListController.swift in Sources */,
1854 7939B0732B47F12F005AE981 /* CNLiveShortVideoViewController.swift in Sources */, 1872 7939B0732B47F12F005AE981 /* CNLiveShortVideoViewController.swift in Sources */,
1855 19BB1FEA2AEF7B4A0094D962 /* CNLiveShopConsoleCell.swift in Sources */, 1873 19BB1FEA2AEF7B4A0094D962 /* CNLiveShopConsoleCell.swift in Sources */,
1856 191733132B109F7B007BCC04 /* CNLivePlayerGestureView.swift in Sources */, 1874 191733132B109F7B007BCC04 /* CNLivePlayerGestureView.swift in Sources */,
@@ -1920,6 +1938,7 @@ @@ -1920,6 +1938,7 @@
1920 19C0F76D2BDB48750097CC8F /* CNBindingManageCell.swift in Sources */, 1938 19C0F76D2BDB48750097CC8F /* CNBindingManageCell.swift in Sources */,
1921 1917331D2B10A15A007BCC04 /* CNLivePlayerFailureView.swift in Sources */, 1939 1917331D2B10A15A007BCC04 /* CNLivePlayerFailureView.swift in Sources */,
1922 7CD6754F2A2840B9008354C1 /* CNMetaCodeHomePageController.swift in Sources */, 1940 7CD6754F2A2840B9008354C1 /* CNMetaCodeHomePageController.swift in Sources */,
  1941 + 19C735C32BFED49700CACF4E /* CNLiveRealHotListDetailCell.swift in Sources */,
1923 79D094DC2B0765DD008CB1F3 /* CNLiveShopBodyCouponGoodsListView.swift in Sources */, 1942 79D094DC2B0765DD008CB1F3 /* CNLiveShopBodyCouponGoodsListView.swift in Sources */,
1924 798916EF2B048EC800D08302 /* CNLiveShopTransListViewController.swift in Sources */, 1943 798916EF2B048EC800D08302 /* CNLiveShopTransListViewController.swift in Sources */,
1925 7989B5C52A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift in Sources */, 1944 7989B5C52A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift in Sources */,
@@ -1995,6 +2014,7 @@ @@ -1995,6 +2014,7 @@
1995 790D01912A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift in Sources */, 2014 790D01912A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift in Sources */,
1996 790D01852A2D89E100C5978D /* UIColor+CNLiveExtensions.swift in Sources */, 2015 790D01852A2D89E100C5978D /* UIColor+CNLiveExtensions.swift in Sources */,
1997 19FA20192AE22D98001F7186 /* CNLiveDownSlideTodayRecommendCell.swift in Sources */, 2016 19FA20192AE22D98001F7186 /* CNLiveDownSlideTodayRecommendCell.swift in Sources */,
  2017 + 19C735C52BFF09BA00CACF4E /* CNLiveRealHotListDetailImageCell.swift in Sources */,
1998 790B1FB42A4153E90074CF00 /* CNLiveMineBaseModel.swift in Sources */, 2018 790B1FB42A4153E90074CF00 /* CNLiveMineBaseModel.swift in Sources */,
1999 794294AA2B4D4381008AAFA0 /* CNLiveShortVideoCommentListView.swift in Sources */, 2019 794294AA2B4D4381008AAFA0 /* CNLiveShortVideoCommentListView.swift in Sources */,
2000 7978A8432A396632007C86B8 /* CNLiveMineViewModel.swift in Sources */, 2020 7978A8432A396632007C86B8 /* CNLiveMineViewModel.swift in Sources */,
metaCode/Classes/Main/HomePage/View/VerticalViews/DownSlide/CNLiveDownSlideRealHotListCell.swift
@@ -46,12 +46,22 @@ class CNLiveDownSlideRealHotListCell: UICollectionViewCell { @@ -46,12 +46,22 @@ class CNLiveDownSlideRealHotListCell: UICollectionViewCell {
46 layerView.frame = CGRect(x: 5, y: 0, width: 20, height: 17) 46 layerView.frame = CGRect(x: 5, y: 0, width: 20, height: 17)
47 return layerView 47 return layerView
48 }() 48 }()
  49 + lazy var numTitleLabel: UILabel = {
  50 + let titleLabel = UILabel(frame: self.firstIconView.bounds)
  51 + titleLabel.textAlignment = .center
  52 + titleLabel.text = "1"
  53 + titleLabel.font = Font_12
  54 + return titleLabel
  55 + }()
  56 +
49 57
50 override init(frame: CGRect) { 58 override init(frame: CGRect) {
51 super.init(frame: frame) 59 super.init(frame: frame)
52 self.contentView.addSubview(self.iconImgView) 60 self.contentView.addSubview(self.iconImgView)
53 self.contentView.addSubview(self.titleLabel) 61 self.contentView.addSubview(self.titleLabel)
54 self.contentView.addSubview(self.firstIconView) 62 self.contentView.addSubview(self.firstIconView)
  63 + self.firstIconView.addSubview(self.numTitleLabel)
  64 +
55 self.firstIconView.isHidden = true 65 self.firstIconView.isHidden = true
56 } 66 }
57 67
@@ -64,15 +74,22 @@ class CNLiveDownSlideRealHotListCell: UICollectionViewCell { @@ -64,15 +74,22 @@ class CNLiveDownSlideRealHotListCell: UICollectionViewCell {
64 self.titleLabel.text = model.title 74 self.titleLabel.text = model.title
65 if self.num == 1{ 75 if self.num == 1{
66 self.firstIconView.isHidden = false 76 self.firstIconView.isHidden = false
67 - self.firstIconView.image = UIImage(named: "") 77 + self.firstIconView.backgroundColor = HexColor("#F23A87")
  78 + self.numTitleLabel.text = "1"
  79 +// self.firstIconView.image = UIImage(named: "")
68 }else if self.num == 2{ 80 }else if self.num == 2{
69 self.firstIconView.isHidden = false 81 self.firstIconView.isHidden = false
70 - self.firstIconView.image = UIImage(named: "") 82 + self.firstIconView.backgroundColor = HexColor("#FB723F")
  83 + self.numTitleLabel.text = "2"
  84 +// self.firstIconView.image = UIImage(named: "")
71 }else if self.num == 3{ 85 }else if self.num == 3{
72 self.firstIconView.isHidden = false 86 self.firstIconView.isHidden = false
73 - self.firstIconView.image = UIImage(named: "") 87 + self.firstIconView.backgroundColor = HexColor("#FFB03D")
  88 + self.numTitleLabel.text = "3"
  89 +// self.firstIconView.image = UIImage(named: "")
74 }else{ 90 }else{
75 self.firstIconView.isHidden = true 91 self.firstIconView.isHidden = true
  92 + self.numTitleLabel.text = ""
76 } 93 }
77 } 94 }
78 } 95 }
metaCode/Classes/Main/HomePage/View/VerticalViews/DownSlide/CNLiveRealHotListDetailCell.swift 0 → 100644
  1 +//
  2 +// CNLiveRealHotListDetailCell.swift
  3 +// metaCode
  4 +//
  5 +// Created by zx on 2024/5/11.
  6 +// 实时热榜详情页列表cell
  7 +
  8 +import Foundation
  9 +import Kingfisher
  10 +
  11 +class CNLiveRealHotListDetailCell: UICollectionViewCell {
  12 +
  13 + //是前三
  14 + var num = 0//第几
  15 +
  16 + //contentsModel
  17 + var _contentsModel : CNLiveDownSlideContentsModel?
  18 + var contentsModel : CNLiveDownSlideContentsModel? {
  19 + get{
  20 + _contentsModel
  21 + }
  22 + set{
  23 + _contentsModel = newValue!
  24 + setupNewUI(model: _contentsModel!)
  25 + }
  26 + }
  27 +
  28 + lazy var iconImgView :UIImageView = {
  29 + let iconImgView = UIImageView(frame: CGRect(x: 15, y: 0, width: 95, height: 138))
  30 + iconImgView.contentMode = .scaleAspectFill
  31 + iconImgView.clipsToBounds = true
  32 + return iconImgView
  33 + }()
  34 +
  35 + lazy var titleLabel: UILabel = {
  36 + let titleLabel = UILabel.init(frame: CGRectMake(self.iconImgView.right+15, self.iconImgView.top, KSreenWidth-(self.iconImgView.right+15)-15, 23))
  37 + titleLabel.textColor = HexColor("#333333")
  38 + titleLabel.textAlignment = .left
  39 + titleLabel.font = BoldFont_16
  40 + return titleLabel
  41 + }()
  42 + lazy var subTitleLabel: UILabel = {
  43 + let titleLabel = UILabel.init(frame: CGRectMake(self.titleLabel.left, self.titleLabel.bottom+5, self.titleLabel.width, 50))
  44 + titleLabel.textColor = HexColor("#999999")
  45 + titleLabel.textAlignment = .left
  46 + titleLabel.numberOfLines = 3
  47 + titleLabel.font = BoldFont_12
  48 + return titleLabel
  49 + }()
  50 +
  51 + //第一第二第三角标
  52 + lazy var firstIconView :UIImageView = {
  53 + let layerView = UIImageView()
  54 + layerView.frame = CGRect(x: 15+5, y: 0, width: 20, height: 17)
  55 + return layerView
  56 + }()
  57 + lazy var numTitleLabel: UILabel = {
  58 + let titleLabel = UILabel(frame: self.firstIconView.bounds)
  59 + titleLabel.textAlignment = .center
  60 + titleLabel.text = "1"
  61 + titleLabel.font = Font_12
  62 + return titleLabel
  63 + }()
  64 +
  65 +
  66 + override init(frame: CGRect) {
  67 + super.init(frame: frame)
  68 + self.contentView.addSubview(self.iconImgView)
  69 + self.contentView.addSubview(self.titleLabel)
  70 + self.contentView.addSubview(self.subTitleLabel)
  71 + self.contentView.addSubview(self.firstIconView)
  72 + self.firstIconView.addSubview(self.numTitleLabel)
  73 + self.firstIconView.isHidden = true
  74 + }
  75 +
  76 + required init?(coder: NSCoder) {
  77 + fatalError("init(coder:) has not been implemented")
  78 + }
  79 +
  80 + func setupNewUI(model:CNLiveDownSlideContentsModel){
  81 + self.iconImgView.kf.setImage(with: URL(string:model.poster))
  82 + self.titleLabel.text = model.title
  83 + self.subTitleLabel.text = model.subTitle
  84 + if self.num == 1{
  85 + self.firstIconView.isHidden = false
  86 + self.firstIconView.backgroundColor = HexColor("#F23A87")
  87 + self.numTitleLabel.text = "1"
  88 +// self.firstIconView.image = UIImage(named: "")
  89 + }else if self.num == 2{
  90 + self.firstIconView.isHidden = false
  91 + self.firstIconView.backgroundColor = HexColor("#FB723F")
  92 + self.numTitleLabel.text = "2"
  93 +// self.firstIconView.image = UIImage(named: "")
  94 + }else if self.num == 3{
  95 + self.firstIconView.isHidden = false
  96 + self.firstIconView.backgroundColor = HexColor("#FFB03D")
  97 + self.numTitleLabel.text = "3"
  98 +// self.firstIconView.image = UIImage(named: "")
  99 + }else{
  100 + self.firstIconView.isHidden = true
  101 + self.numTitleLabel.text = ""
  102 + }
  103 + }
  104 +}
  105 +
metaCode/Classes/Main/HomePage/View/VerticalViews/DownSlide/CNLiveRealHotListDetailImageCell.swift 0 → 100644
  1 +//
  2 +// CNLiveRealHotListDetailImageCell.swift
  3 +// metaCode
  4 +//
  5 +// Created by zx on 2024/5/23.
  6 +// 实时热榜详情页 顶部image cell
  7 +
  8 +import Foundation
  9 +import Kingfisher
  10 +
  11 +class CNLiveRealHotListDetailImageCell: UICollectionViewCell {
  12 +
  13 + lazy var iconImgView :UIImageView = {
  14 + let iconImgView = UIImageView(frame: CGRect(x: 0, y: 0, width: KSreenWidth, height: 174.0*375/KSreenWidth))
  15 + iconImgView.contentMode = .scaleAspectFill
  16 + iconImgView.clipsToBounds = true
  17 + iconImgView.backgroundColor = .red
  18 + return iconImgView
  19 + }()
  20 +
  21 + override init(frame: CGRect) {
  22 + super.init(frame: frame)
  23 + self.contentView.addSubview(self.iconImgView)
  24 + }
  25 +
  26 + required init?(coder: NSCoder) {
  27 + fatalError("init(coder:) has not been implemented")
  28 + }
  29 +}
  30 +
metaCode/Classes/Main/HomePages/Controller/CNLiveTotalHotListController/CNLiveTotalHotListController.swift 0 → 100644
  1 +//
  2 +// CNLiveTotalHotListController.swift
  3 +// metaCode
  4 +//
  5 +// Created by zx on 2024/5/22.
  6 +// 实时热榜详情页
  7 +
  8 +import Foundation
  9 +
  10 +class CNLiveTotalHotListController:CNLiveBaseViewController, UICollectionViewDelegate, UICollectionViewDataSource{
  11 + var slideModel:CNLiveDownSlideModel?
  12 +
  13 + //实时热榜的列表
  14 + lazy var realHotArr: NSMutableArray = {
  15 + var realHotArr = NSMutableArray()
  16 + return realHotArr
  17 + }()
  18 + let kRealHotListCollectionViewCellIdentifier = "kRealHotListCollectionViewCellIdentifier"
  19 + let kRealHotListCollectionViewImageCellIdentifier = "kRealHotListCollectionViewImageCellIdentifier"
  20 +
  21 + lazy var realHotCollectionView: UICollectionView = {
  22 + let layout = UICollectionViewFlowLayout()
  23 + layout.scrollDirection = .vertical
  24 + layout.itemSize = CGSizeMake(KSreenWidth, 138+15)
  25 + layout.sectionInset = .init(top: 0, left: 0, bottom: 0, right: 0)
  26 + layout.minimumLineSpacing = 15
  27 + let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
  28 + cv.delegate = self
  29 + cv.dataSource = self
  30 + cv.backgroundColor = .white
  31 + cv.register(CNLiveRealHotListDetailCell.self, forCellWithReuseIdentifier: kRealHotListCollectionViewCellIdentifier)
  32 + cv.register(CNLiveRealHotListDetailImageCell.self, forCellWithReuseIdentifier: kRealHotListCollectionViewImageCellIdentifier)
  33 + return cv
  34 + }()
  35 +
  36 + lazy var closeBtn: UIButton = {
  37 + let closeBtn = UIButton(type: .custom)
  38 + closeBtn.frame = CGRect(x: 15, y: KStatusBarHeight, width: 20, height: 20)
  39 + closeBtn.centerY = self.titleLabel.centerY
  40 + closeBtn.setImage(UIImage(named: "mine_header_icon_white_back"), for: .normal)
  41 + closeBtn.addTarget(self, action: #selector(changeCancelAction), for: .touchUpInside)
  42 + return closeBtn
  43 + }()
  44 +
  45 + /// 初始化播放器,第多少集
  46 + init(slideModel:CNLiveDownSlideModel?) {
  47 + super.init(nibName:nil, bundle:nil)
  48 + self.slideModel = slideModel
  49 +
  50 + }
  51 +
  52 + required init?(coder: NSCoder) {
  53 + fatalError("init(coder:) has not been implemented")
  54 + }
  55 +
  56 + override func viewDidLoad() {
  57 + super.viewDidLoad()
  58 + self.view.backgroundColor = .white
  59 +
  60 + self.view.addSubview(self.realHotCollectionView)
  61 + self.realHotCollectionView.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight)
  62 + self.realHotArr = NSMutableArray(array: self.slideModel!.contents)
  63 + self.realHotCollectionView.reloadData()
  64 +
  65 + self.view.addSubview(self.closeBtn)
  66 + }
  67 +
  68 + func initUI(){
  69 + self.view.addSubview(self.realHotCollectionView)
  70 + }
  71 +
  72 +
  73 + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  74 +
  75 + self.realHotArr.count+1
  76 + }
  77 +
  78 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
  79 + if indexPath.row == 0{
  80 + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: kRealHotListCollectionViewImageCellIdentifier, for: indexPath) as! CNLiveRealHotListDetailImageCell
  81 + // 加载和设置图片到 cell.imageView
  82 + cell.iconImgView.kf.setImage(with: URL(string: self.slideModel?.background ?? ""))
  83 + return cell
  84 + }else{
  85 + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: kRealHotListCollectionViewCellIdentifier, for: indexPath) as! CNLiveRealHotListDetailCell
  86 + cell.num = indexPath.row
  87 + // 加载和设置图片到 cell.imageView
  88 + cell.contentsModel = self.realHotArr[indexPath.row-1] as? CNLiveDownSlideContentsModel
  89 + return cell
  90 + }
  91 + }
  92 + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
  93 + if indexPath.row == 0{
  94 + }else{
  95 + if let contentMdl = self.realHotArr[indexPath.row-1] as? CNLiveDownSlideContentsModel{
  96 + //实时热榜点击短剧
  97 + CNLiveDownSlideTool.pushWebVCWithContentsMdl(model: contentMdl.model , contentId: contentMdl.contentId , pid: contentMdl.pid , shareUrl: contentMdl.shareUrl , thirdUrl: contentMdl.thirdUrl , title: contentMdl.title , s_to: contentMdl.s_to ,trailerId: contentMdl.trailerId , controller: nil, slideModel: self.slideModel)
  98 + }
  99 + }
  100 + }
  101 +
  102 +
  103 + @objc func changeCancelAction() {
  104 + self.navigationController?.popViewController(animated: true)
  105 + }
  106 +
  107 + deinit {
  108 +
  109 + }
  110 +}
metaCode/Classes/Main/HomePages/Controller/HomeController/CNLiveAuthViewController.swift
@@ -268,6 +268,18 @@ class CNLiveAuthViewController:CNLiveBaseViewController,UITableViewDelegate,UITa @@ -268,6 +268,18 @@ class CNLiveAuthViewController:CNLiveBaseViewController,UITableViewDelegate,UITa
268 present(detailVC, animated: true, completion: nil) 268 present(detailVC, animated: true, completion: nil)
269 }else if slideModel.type == SlideModelTypeRealHotList7{ 269 }else if slideModel.type == SlideModelTypeRealHotList7{
270 //实时热榜 270 //实时热榜
  271 + //在当前堆栈里遍历删除 播放控制器CNLiveShortVideoViewController
  272 + let tempArray = NSMutableArray.init()
  273 + self.navigationController?.viewControllers.forEach({ item in
  274 + if (item.isKind(of: CNLiveTotalHotListController.self)) {
  275 + tempArray.remove(item)
  276 + }else{
  277 + tempArray.add(item)
  278 + }
  279 + })
  280 + self.navigationController?.viewControllers = tempArray as! [CNLiveBaseViewController]
  281 +
  282 + self.navigationController?.pushViewController(CNLiveTotalHotListController(slideModel: slideModel), animated: true)
271 } 283 }
272 // else if slideModel.type == SlideModelTypeOneCourse75{ 284 // else if slideModel.type == SlideModelTypeOneCourse75{
273 // guard let cell = tableView.cellForRow(at: indexPath) as? CNDownSlideSingleCourseCell else { return } 285 // guard let cell = tableView.cellForRow(at: indexPath) as? CNDownSlideSingleCourseCell else { return }
metaCode/Classes/Main/VideoPage/Controller/CNLiveShortVideoViewController.swift
@@ -27,6 +27,17 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele @@ -27,6 +27,17 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
27 hotListImgView.clipsToBounds = true 27 hotListImgView.clipsToBounds = true
28 return hotListImgView 28 return hotListImgView
29 }() 29 }()
  30 + lazy var totalHotListBtn: UIButton = {
  31 + let totalHotListBtn = UIButton(type: .custom)
  32 + totalHotListBtn.frame = CGRect(x: KSreenWidth-110, y: 0, width: 100, height: 50)
  33 + totalHotListBtn.bottom = self.realHotCollectionView.top - 5
  34 + totalHotListBtn.setTitle("完整榜单", for: .normal)
  35 + totalHotListBtn.setTitleColor(.white, for: .normal)
  36 + totalHotListBtn.isHidden = true
  37 + totalHotListBtn.addTarget(self, action: #selector(totalHotListBtnAction), for: .touchUpInside)
  38 + return totalHotListBtn
  39 + }()
  40 +
30 //实时热榜的列表 41 //实时热榜的列表
31 lazy var realHotArr: NSMutableArray = { 42 lazy var realHotArr: NSMutableArray = {
32 var realHotArr = NSMutableArray() 43 var realHotArr = NSMutableArray()
@@ -201,18 +212,22 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele @@ -201,18 +212,22 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
201 super.viewDidLoad() 212 super.viewDidLoad()
202 view.backgroundColor = .black 213 view.backgroundColor = .black
203 view.addSubview(tableView) 214 view.addSubview(tableView)
204 - view.addSubview(hotListView)  
205 - hotListView.addSubview(self.hotListImgView)  
206 - self.hotListImgView.kf.setImage(with: URL(string: self.slideModel!.background))  
207 - hotListView.addSubview(self.realHotCollectionView)  
208 - view.addSubview(backBtn)  
209 - view.addSubview(hotListBtn)  
210 - self.realHotCollectionView.frame = CGRect(x: 0, y: DownSlideRealHotListDetaiH-DownSlideRealHotListDetaiCollectCellH, width: KSreenWidth, height: DownSlideRealHotListDetaiCollectCellH)  
211 - self.realHotArr = NSMutableArray(array: self.slideModel!.contents)  
212 - self.realHotCollectionView.reloadData()  
213 -  
214 - self.updateHotListView(isShow: self.slideModel == nil ? false : true) 215 +
  216 + if self.slideModel != nil{
  217 + view.addSubview(hotListView)
  218 + hotListView.addSubview(self.hotListImgView)
  219 + self.hotListImgView.kf.setImage(with: URL(string: self.slideModel!.background))
  220 + hotListView.addSubview(self.realHotCollectionView)
  221 + view.addSubview(hotListBtn)
  222 + self.realHotCollectionView.frame = CGRect(x: 0, y: DownSlideRealHotListDetaiH-DownSlideRealHotListDetaiCollectCellH, width: KSreenWidth, height: DownSlideRealHotListDetaiCollectCellH)
  223 + self.realHotArr = NSMutableArray(array: self.slideModel!.contents)
  224 + self.realHotCollectionView.reloadData()
  225 + self.updateHotListView(isShow: self.slideModel == nil ? false : true)
  226 + view.addSubview(self.totalHotListBtn)
  227 + self.totalHotListBtn.isHidden = false
  228 + }
215 229
  230 + view.addSubview(backBtn)
216 if self.dataArray.count == 0 { 231 if self.dataArray.count == 0 {
217 requestData {noMore in } 232 requestData {noMore in }
218 } 233 }
@@ -278,6 +293,7 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele @@ -278,6 +293,7 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
278 self.tableView.top = self.hotListView.bottom 293 self.tableView.top = self.hotListView.bottom
279 } 294 }
280 self.hotListBtn.isSelected = false 295 self.hotListBtn.isSelected = false
  296 + self.totalHotListBtn.isHidden = false
281 }else{ 297 }else{
282 //隐藏热榜 298 //隐藏热榜
283 UIView.animate(withDuration: 0.25) { 299 UIView.animate(withDuration: 0.25) {
@@ -285,6 +301,7 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele @@ -285,6 +301,7 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
285 self.tableView.top = self.hotListView.bottom 301 self.tableView.top = self.hotListView.bottom
286 } 302 }
287 self.hotListBtn.isSelected = true 303 self.hotListBtn.isSelected = true
  304 + self.totalHotListBtn.isHidden = true
288 } 305 }
289 }else{ 306 }else{
290 //隐藏热榜 307 //隐藏热榜
@@ -293,6 +310,7 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele @@ -293,6 +310,7 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
293 self.tableView.top = self.hotListView.bottom 310 self.tableView.top = self.hotListView.bottom
294 } 311 }
295 self.hotListBtn.isSelected = true 312 self.hotListBtn.isSelected = true
  313 + self.totalHotListBtn.isHidden = true
296 } 314 }
297 } 315 }
298 316
@@ -311,6 +329,16 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele @@ -311,6 +329,16 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
311 } 329 }
312 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 330 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
313 if let contentMdl = self.realHotArr[indexPath.row] as? CNLiveDownSlideContentsModel{ 331 if let contentMdl = self.realHotArr[indexPath.row] as? CNLiveDownSlideContentsModel{
  332 + //在当前堆栈里遍历删除 播放控制器CNLiveShortVideoViewController
  333 + let tempArray = NSMutableArray.init()
  334 + self.navigationController?.viewControllers.forEach({ item in
  335 + if (item.isKind(of: CNLiveShortVideoViewController.self)) {
  336 + tempArray.remove(item)
  337 + }else{
  338 + tempArray.add(item)
  339 + }
  340 + })
  341 + self.navigationController?.viewControllers = tempArray as! [CNLiveBaseViewController]
314 //实时热榜点击短剧 342 //实时热榜点击短剧
315 CNLiveDownSlideTool.pushWebVCWithContentsMdl(model: contentMdl.model , contentId: contentMdl.contentId , pid: contentMdl.pid , shareUrl: contentMdl.shareUrl , thirdUrl: contentMdl.thirdUrl , title: contentMdl.title , s_to: contentMdl.s_to ,trailerId: contentMdl.trailerId , controller: nil, slideModel: self.slideModel) 343 CNLiveDownSlideTool.pushWebVCWithContentsMdl(model: contentMdl.model , contentId: contentMdl.contentId , pid: contentMdl.pid , shareUrl: contentMdl.shareUrl , thirdUrl: contentMdl.thirdUrl , title: contentMdl.title , s_to: contentMdl.s_to ,trailerId: contentMdl.trailerId , controller: nil, slideModel: self.slideModel)
316 } 344 }
@@ -452,6 +480,20 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele @@ -452,6 +480,20 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele
452 self.updateHotListView(isShow: true) 480 self.updateHotListView(isShow: true)
453 } 481 }
454 } 482 }
  483 + @objc func totalHotListBtnAction(_ sender: UIButton) {
  484 + //在当前堆栈里遍历删除 播放控制器CNLiveShortVideoViewController
  485 + let tempArray = NSMutableArray.init()
  486 + self.navigationController?.viewControllers.forEach({ item in
  487 + if (item.isKind(of: CNLiveTotalHotListController.self)) {
  488 + tempArray.remove(item)
  489 + }else{
  490 + tempArray.add(item)
  491 + }
  492 + })
  493 + self.navigationController?.viewControllers = tempArray as! [CNLiveBaseViewController]
  494 + self.navigationController?.pushViewController(CNLiveTotalHotListController(slideModel: self.slideModel), animated: true)
  495 + }
  496 +
455 497
456 func playVideo(at indexPath: IndexPath) { 498 func playVideo(at indexPath: IndexPath) {
457 let data: CNLiveAlbumListModel = dataArray[indexPath.row] as! CNLiveAlbumListModel 499 let data: CNLiveAlbumListModel = dataArray[indexPath.row] as! CNLiveAlbumListModel