Commit d4bb199117af888d1b017cd6decf325a8ffb81dd

Authored by liushiyu
2 parents c5150f31 bad7f367
metaCode.xcodeproj/project.pbxproj
... ... @@ -2076,6 +2076,7 @@
2076 2076 CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
2077 2077 CLANG_ENABLE_MODULES = NO;
2078 2078 CODE_SIGN_ENTITLEMENTS = metaCode/metaCode.entitlements;
  2079 + CODE_SIGN_IDENTITY = "Apple Development";
2079 2080 CODE_SIGN_STYLE = Automatic;
2080 2081 CURRENT_PROJECT_VERSION = 1.0.4.24.01.15.15;
2081 2082 DEVELOPMENT_TEAM = 94X49GG3ZW;
... ... @@ -2308,6 +2309,7 @@
2308 2309 );
2309 2310 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode;
2310 2311 PRODUCT_NAME = "$(TARGET_NAME)";
  2312 + PROVISIONING_PROFILE_SPECIFIER = "";
2311 2313 SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
2312 2314 SUPPORTS_MACCATALYST = NO;
2313 2315 SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
... ... @@ -2328,6 +2330,7 @@
2328 2330 CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
2329 2331 CLANG_ENABLE_MODULES = NO;
2330 2332 CODE_SIGN_ENTITLEMENTS = metaCode/metaCode.entitlements;
  2333 + CODE_SIGN_IDENTITY = "Apple Development";
2331 2334 CODE_SIGN_STYLE = Automatic;
2332 2335 CURRENT_PROJECT_VERSION = 1.0.4.24.01.15.15;
2333 2336 DEVELOPMENT_TEAM = 94X49GG3ZW;
... ... @@ -2560,6 +2563,7 @@
2560 2563 );
2561 2564 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode;
2562 2565 PRODUCT_NAME = "$(TARGET_NAME)";
  2566 + PROVISIONING_PROFILE_SPECIFIER = "";
2563 2567 SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
2564 2568 SUPPORTS_MACCATALYST = NO;
2565 2569 SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
... ...
metaCode/Classes/Config/CNLiveConfigManager.swift
... ... @@ -83,4 +83,8 @@ extension Notification.Name {
83 83 //搜索确认处理
84 84 public static let kDSSelectGoodsNotification = Notification.Name("kDSSelectGoodsNotification")
85 85 }
  86 + struct PlayerManage {
  87 + //销毁播放器通知
  88 + public static let kPlayerDestroyNotification = Notification.Name("kPlayerDestroyNotification")
  89 + }
86 90 }
... ...
metaCode/Classes/Main/HomePage/Controller/DownSlideController/CNUpSlideDetailViewController.swift
... ... @@ -91,34 +91,13 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou
91 91 override func viewDidLoad() {
92 92 super.viewDidLoad()
93 93 setupUI()
94   -// getImageFromCell()
95   -// if self.cellType == .playlet{
96   - self.getBlockContents(page: 1)
97   -// }
  94 + self.getBlockContents(page: 1)
98 95 }
99 96  
100 97 private func setupUI() {
101 98 self.view.layer.masksToBounds = true
102 99 self.view.addSubview(self.tableView)
103 100 self.tableView.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight)
104   -
105   - if self.cellType == .playlet{//短剧 大图
106   -// self.view.addSubview(self.tableView)
107   -// self.tableView.frame = CGRect(x: 0, y: 0, width: KSreenWidth, height: KSreenHeight)
108   - }else if self.cellType == .course{//课程 大图
109   - if self.slideModel!.type == SlideModelTypeAllCourse12{
110   - //全部课程
111   -
112   - }else if self.slideModel!.type == SlideModelTypeOneCourse75{
113   - //大图课程
114   -
115   - }
116   -// view.addSubview(scrollView)
117   -// scrollView.slideModel = _slideModel
118   - }else if self.cellType == .playletToCourse{
119   - //首页->课程
120   -
121   - }
122 101 view.addSubview(closeBtn)
123 102 view.addGestureRecognizer(dismissPanGesture)
124 103 }
... ... @@ -314,8 +293,6 @@ class CNUpSlideDetailViewController: CNLiveBaseViewController,UITableViewDataSou
314 293 self!.dataArray.addObjects(from: albumBaseModel.list)
315 294 if self!.dataArray.count > 0 && self!.tableView.mj_header == nil && self!.tableView.mj_footer == nil {
316 295 self!.addRefreshView()
317   -// self!.pageNum = self!.pageNum + 1
318   -// self!.getBlockContents(page: self!.pageNum)
319 296 }
320 297 }
321 298  
... ...
metaCode/Classes/Main/HomePages/Controller/PlayletHomePage/CNLivePlayletHomePageController.swift
... ... @@ -6,16 +6,22 @@
6 6 // 短剧主页
7 7  
8 8 import Foundation
9   -
  9 +import MJRefresh
10 10 class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataSource, UITableViewDelegate{
11 11  
  12 + var pageNum: NSInteger = 1
12 13 var jianjieLblHeight:CGFloat = 36
13 14  
14 15 let kCNLivePlayletCellIdentifier = "kCNLivePlayletCellIdentifier"
15 16 let kCNLivePlayletHeaderCellIdentifier = "kCNLivePlayletHeaderCellIdentifier"
16 17 ///数据源
17   - var albumModelArr:Array<CNLiveAlbumListModel> = [CNLiveAlbumListModel]()
18   - var albumId = ""
  18 +// var albumModelArr:Array<CNLiveAlbumListModel> = [CNLiveAlbumListModel]()
  19 + lazy var albumModelArr: NSMutableArray = {
  20 + var dataArray = NSMutableArray()
  21 + return dataArray
  22 + }()
  23 + var albumMsgModel:CNLiveAlbumMsgModel?
  24 + var albumId = ""//aid
19 25 // MARK: - 懒加载
20 26  
21 27 lazy var tableView : UITableView = {
... ... @@ -32,13 +38,13 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS
32 38 init(aid:String){
33 39 super.init(nibName: nil, bundle: nil)
34 40 self.albumId = aid
35   - self.getAlbumList(aid: aid)// self.albumModel!.contentId 或 self.albumMsgModel!.albumId
36   - }
37   - init(albumModelArr:Array<CNLiveAlbumListModel>) {
38   - self.albumModelArr = Array(albumModelArr)
39   - super.init(nibName: nil, bundle: nil)
40   - self.tableView.reloadData()
  41 + self.getAlbumMsg(aid: aid)// self.albumModel!.contentId 或 self.albumMsgModel!.albumId
41 42 }
  43 +// init(albumModelArr:NSMutableArray) {
  44 +// self.albumModelArr = NSMutableArray(array: albumModelArr)
  45 +// super.init(nibName: nil, bundle: nil)
  46 +// self.tableView.reloadData()
  47 +// }
42 48  
43 49 required init?(coder: NSCoder) {
44 50 fatalError("init(coder:) has not been implemented")
... ... @@ -54,36 +60,67 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS
54 60 }
55 61  
56 62 // MARK: - 获取短剧主页数据
57   - //获取专辑视频列表详情(播放地址 ,点赞数等信息)
58   - func getAlbumList(aid:String){
59   - showLoading(message: "")
60   - CNLiveHomePageViewModel.getAlbumList(aid: aid){ result, status in
  63 + //获取专辑详情(简介等)
  64 + func getAlbumMsg(aid:String){
  65 + CNLiveHomePageViewModel.getAlbumMsg(aid: aid) { [weak self] result, status in
61 66 hiddenLoading()
62 67 if status == .success{
63   - let arr = result as! Array<CNLiveAlbumListModel>
64   - self.albumModelArr = Array(arr)
65   - self.getAlbumMsg(aid: aid)
  68 + let model = result as! CNLiveAlbumMsgModel
  69 + self!.albumMsgModel = model
  70 + self!.getAlbumList(aid: aid, page: self!.pageNum)
66 71 }else{
67 72  
68 73 }
69 74 }
70 75 }
71   - //获取专辑详情(简介等)
72   - func getAlbumMsg(aid:String){
73   - CNLiveHomePageViewModel.getAlbumMsg(aid: aid) { result, status in
  76 + //获取专辑视频列表详情(播放地址 ,点赞数等信息)
  77 + func getAlbumList(aid:String, page:NSInteger){
  78 + showLoading(message: "")
  79 + CNLiveHomePageViewModel.getAlbumList(aid: aid, page: page){[weak self] result, status in
74 80 hiddenLoading()
75 81 if status == .success{
76   - let model = result as! CNLiveAlbumMsgModel
77   - for listModel in self.albumModelArr {
78   - listModel.albumMsgModel = model
  82 + let dataMdl = result as! CNLiveAlbumListBaseModel
  83 + let arr = dataMdl.list
  84 + for listModel in arr {
  85 + listModel.albumMsgModel = self?.albumMsgModel
  86 + }
  87 +
  88 + if self!.pageNum > 1 && self!.albumModelArr.count > 0 {
  89 + self!.albumModelArr.addObjects(from: arr)
  90 + }
  91 + if self!.pageNum == 1 {
  92 + self!.albumModelArr.removeAllObjects()
  93 + self!.albumModelArr.addObjects(from: arr)
  94 + if self!.albumModelArr.count > 0 && self!.tableView.mj_header == nil && self!.tableView.mj_footer == nil {
  95 + self!.addRefreshView()
  96 + }
  97 + }
  98 +
  99 + self!.tableView.mj_header?.endRefreshing()
  100 +
  101 + self!.tableView.reloadData()
  102 + if dataMdl.hasNextPage{
  103 + self!.tableView.mj_footer?.endRefreshing()
  104 + }else{
  105 + self!.tableView.mj_footer?.endRefreshingWithNoMoreData()
79 106 }
80   - self.tableView.reloadData()
81 107 }else{
82 108  
83 109 }
84 110 }
85 111 }
86 112  
  113 + func addRefreshView() {
  114 + tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock: {[weak self] in
  115 + self!.pageNum = 1
  116 + self!.getAlbumList(aid: self!.albumId , page: 1)
  117 + })
  118 +
  119 + tableView.mj_footer = MJRefreshAutoNormalFooter.init(refreshingBlock: {[weak self] in
  120 + self!.pageNum = self!.pageNum + 1
  121 + self!.getAlbumList(aid: self!.albumId, page: self!.pageNum)
  122 + })
  123 + }
87 124  
88 125 func numberOfSections(in tableView: UITableView) -> Int {
89 126 2
... ... @@ -109,11 +146,11 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS
109 146 }
110 147 cell.homePageNeedReloadActionBlock = {
111 148 DispatchQueue.main.asyncAfter(deadline: .now()+0.5) { [self] in
112   - self.getAlbumList(aid: self.albumId)
  149 + self.getAlbumMsg(aid: self.albumId)
113 150 }
114 151 }
115 152 if self.albumModelArr.count > 0{
116   - let albumListModel = self.albumModelArr[0]
  153 + let albumListModel = self.albumModelArr[0] as! CNLiveAlbumListModel
117 154 cell.albumListModel = albumListModel
118 155 }
119 156 return cell
... ... @@ -123,7 +160,7 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS
123 160 let cell = CNLivePlayletHomePageCell()
124 161 return cell
125 162 }
126   - let albumListModel = self.albumModelArr[indexPath.row]
  163 + let albumListModel = self.albumModelArr[indexPath.row] as! CNLiveAlbumListModel
127 164 cell.albumListModel = albumListModel
128 165 return cell
129 166 }
... ... @@ -138,10 +175,23 @@ class CNLivePlayletHomePageController:CNLiveBaseViewController, UITableViewDataS
138 175 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
139 176 if indexPath.section == 0{
140 177 }else{
141   - let albumListModel = self.albumModelArr[indexPath.row]
  178 + let albumListModel = self.albumModelArr[indexPath.row] as! CNLiveAlbumListModel
142 179 let aid = albumListModel.albumMsgModel?.albumId ?? ""
  180 + //发播放器销毁通知
  181 + NotificationCenter.default.post(name: Notification.Name.PlayerManage.kPlayerDestroyNotification, object: nil)
  182 + //在当前堆栈里遍历删除 播放控制器CNLiveShortVideoViewController
  183 + let tempArray = NSMutableArray.init()
  184 + self.navigationController?.viewControllers.forEach({ item in
  185 + if (item.isKind(of: CNLiveShortVideoViewController.self)) {
  186 + tempArray.remove(item)
  187 + }else{
  188 + tempArray.add(item)
  189 + }
  190 + })
  191 + self.navigationController?.viewControllers = tempArray as! [CNLiveBaseViewController]
143 192 //跳转播放页
144   - navigationViewController().visibleViewController?.navigationController?.pushViewController(CNLiveShortVideoViewController(aid: aid), animated: pushAnimated)
  193 + let dataArray = Array(self.albumModelArr) as! [CNLiveAlbumListModel]
  194 + navigationViewController().visibleViewController?.navigationController?.pushViewController(CNLiveShortVideoViewController(aid: aid, page: self.pageNum, currentIndex: indexPath.row, dataArray: dataArray), animated: pushAnimated)
145 195 }
146 196 }
147 197 }
... ...
metaCode/Classes/Main/HomePages/Model/CNLiveAlbumListModel.swift
... ... @@ -7,6 +7,28 @@
7 7  
8 8 import Foundation
9 9  
  10 +class CNLiveAlbumListBaseModel:BaseModel{
  11 + var endRow = 0
  12 + var firstPage = 0
  13 + var hasNextPage = false
  14 + var nextPage = 0
  15 + var hasPreviousPage = false
  16 + var isFirstPage = true
  17 + var isLastPage = true
  18 + var lastPage = 0
  19 + var list = [CNLiveAlbumListModel]()
  20 + var navigateFirstPage = 0
  21 + var navigateLastPage = 0
  22 + var navigatePages = 0
  23 + var navigatepageNums:Array<Any> = []
  24 + var pageNum = 0
  25 + var pageSize = 0
  26 + var pages = 0
  27 + var prePage = 0
  28 + var size = 0
  29 + var startRow = 0
  30 + var total = 0
  31 +}
10 32 class CNLiveAlbumListModel:BaseModel{
11 33 var title = ""
12 34 var shortTitle = ""
... ...
metaCode/Classes/Main/HomePages/View/PlayletHomePage/CNLivePlayletHomePageHeaderCell.swift
... ... @@ -73,13 +73,19 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{
73 73 titleLabel.height = height
74 74 return titleLabel
75 75 }()
  76 + ///简介背景
  77 + lazy var jianjieBgView :UIView = {
  78 + let jianjieBgView = UIView(frame: CGRect(x: self.iconImgView.left, y: self.iconImgView.bottom+10, width: KSreenWidth-2*self.iconImgView.left, height: 21))
  79 + jianjieBgView.backgroundColor = UIColor(red:0.98, green:0.98, blue:0.98, alpha:1.00)
  80 + return jianjieBgView
  81 + }()
76 82 ///简介
77 83 lazy var jianjieLabel: UILabel = {
78   - let titleLabel = UILabel.init(frame: CGRectMake(self.iconImgView.left, self.iconImgView.bottom+10, KSreenWidth-2*self.iconImgView.left, 21))
  84 + let titleLabel = UILabel.init(frame: CGRectMake(self.iconImgView.left+10, self.iconImgView.bottom+20, KSreenWidth-2*self.iconImgView.left-13, 21))
79 85 titleLabel.textColor = HexColor("#333333")
80 86 titleLabel.textAlignment = .left
81 87 titleLabel.font = Font_12
82   - titleLabel.backgroundColor = UIColor(red:0.98, green:0.98, blue:0.98, alpha:1.00)
  88 + titleLabel.backgroundColor = .clear// UIColor(red:0.98, green:0.98, blue:0.98, alpha:1.00)
83 89 titleLabel.text = "简介"
84 90 titleLabel.numberOfLines = 0
85 91 var lines = titleLabel.getRealLabelTextLines()
... ... @@ -93,9 +99,9 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{
93 99 //展开,收起
94 100 lazy var expandBtn: UIButton = {
95 101 let expandBtn = UIButton.init(type: .custom)
96   - expandBtn.backgroundColor = .white
  102 + expandBtn.backgroundColor = .clear
97 103  
98   - expandBtn.frame = CGRect(x: self.jianjieLabel.right-60, y: self.jianjieLabel.bottom, width: 60, height: 30)
  104 + expandBtn.frame = CGRect(x: self.jianjieBgView.right-60, y: self.jianjieBgView.bottom-10, width: 60, height: 30)
99 105 expandBtn.setTitle("展开", for: .normal)
100 106 expandBtn.setTitle("收起", for: .selected)
101 107  
... ... @@ -168,6 +174,7 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{
168 174 self.iconImgView.addSubview(self.payIconImgView)
169 175 self.contentView.addSubview(self.titleLabl)
170 176 self.contentView.addSubview(self.jishuLabel)
  177 + self.contentView.addSubview(self.jianjieBgView)
171 178 self.contentView.addSubview(self.jianjieLabel)
172 179 self.contentView.addSubview(self.expandBtn)
173 180 self.contentView.addSubview(self.followBtn)
... ... @@ -182,7 +189,7 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{
182 189 }
183 190  
184 191 self.followBtn.snp.makeConstraints { make in
185   - make.top.equalTo(self.jianjieLabel.snp.bottom).offset(25)
  192 + make.top.equalTo(self.jianjieBgView.snp.bottom).offset(25)
186 193 make.left.equalTo(self.iconImgView.snp.left)
187 194 make.width.equalTo(140)
188 195 make.height.equalTo(40)
... ... @@ -267,8 +274,16 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{
267 274  
268 275 }else{
269 276 //收起状态
270   - self.jianjieLabel.height = 2*height
  277 + if lines <= 2{
  278 + //小于2行,按实际行数
  279 + self.jianjieLabel.height = CGFloat(lines)*height
  280 + }else{
  281 + //大于2行, 显示2行
  282 + self.jianjieLabel.height = 2*height
  283 + }
271 284 }
  285 + self.jianjieBgView.height = self.jianjieLabel.height+20
  286 + self.expandBtn.top = self.jianjieBgView.bottom-10
272 287 if model.albumMsgModel!.collection{
273 288 self.followChangeStatus(isFollowed: true)
274 289 }else{
... ... @@ -289,8 +304,10 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{
289 304 //文本展开状态,点击收起
290 305 self.jianjieLabel.height = 2*height
291 306 }
  307 + self.jianjieBgView.height = self.jianjieLabel.height+20
292 308 self.homePageHeaderCellChangedBlock!(self, self.jianjieLabel.height)
293   - self.expandBtn.top = self.jianjieLabel.bottom
  309 +
  310 + self.expandBtn.top = self.jianjieBgView.bottom-10
294 311  
295 312 }
296 313 @objc func followBtnAction(button:UIButton){
... ... @@ -390,7 +407,7 @@ class CNLivePlayletHomePageHeaderCell:UITableViewCell{
390 407 // 这里可以对获取到的子图层进行操作或者访问其属性等
391 408 return subLayer
392 409 } else {
393   - print("未找到指定名称的图层")
  410 +// print("未找到指定名称的图层")
394 411 return nil
395 412 }
396 413 }
... ...
metaCode/Classes/Main/HomePages/ViewModel/CNLiveHomePageViewModel.swift
... ... @@ -141,10 +141,12 @@ class CNLiveHomePageViewModel:NSObject{
141 141 }
142 142  
143 143 /// 获取首页-专辑视频列表详情
144   - static func getAlbumList(aid:String,resultBlock: @escaping downSlideResultBlock) {
  144 + static func getAlbumList(aid:String, page:NSInteger,resultBlock: @escaping downSlideResultBlock) {
145 145 let param = NSMutableDictionary()
146 146 param.setValue(aid, forKey: "aid")
147 147 param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "sid")
  148 + param.setValue("\(page)", forKey: "page")
  149 +
148 150 CNLiveNetworking.setAllowRequestDefaultArgument(true)
149 151 CNLiveNetworking.setupShowDataResult(false)
150 152 CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseCMSUrl+"/ugcApi/albumList", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in
... ... @@ -154,14 +156,18 @@ class CNLiveHomePageViewModel:NSObject{
154 156 let errorCode = "\(resp["errorCode"] ?? "0")"
155 157 if (errorCode == "0") {
156 158 let dataDic = resp["data"] as! Dictionary<String, Any>
157   - let dataList = dataDic["list"] as! Array<Any>
158   - var listArr = Array<Any>()
159   - for listDic in dataList{
160   - let dataMdl = newDictionaryToModel(listDic as! [String : Any], CNLiveAlbumListModel.self)
161   - listArr.append(dataMdl)
162   - }
  159 + let dataMdl = newDictionaryToModel(dataDic , CNLiveAlbumListBaseModel.self)
  160 + resultBlock(dataMdl,.success)
163 161  
164   - resultBlock(listArr,.success)
  162 +// let dataDic = resp["data"] as! Dictionary<String, Any>
  163 +// let dataList = dataDic["list"] as! Array<Any>
  164 +// var listArr = Array<Any>()
  165 +// for listDic in dataList{
  166 +// let dataMdl = newDictionaryToModel(listDic as! [String : Any], CNLiveAlbumListModel.self)
  167 +// listArr.append(dataMdl)
  168 +// }
  169 +//
  170 +// resultBlock(listArr,.success)
165 171 }else{
166 172 resultBlock(NSNull(),.failed)
167 173 }
... ...
metaCode/Classes/Vendors/metaCode-Bridging-Header.h
... ... @@ -5,5 +5,5 @@
5 5 #import "WJColorChange.h"
6 6 #import "NewPagedFlowView.h"
7 7  
8   -#import <WXApi.h>
9   -#import <WXApiObject.h>
  8 +//#import <WXApi.h>
  9 +//#import <WXApiObject.h>
... ...