Commit e3d3c28d66986117120c9be78e4270bbe511272a
1 parent
796ecda9
实时热榜进入切换为短剧播放器 , 其他情况为剧集播放器
Showing
1 changed file
with
167 additions
and
45 deletions
metaCode/Classes/Main/VideoPage/Controller/CNLiveShortVideoViewController.swift
| ... | ... | @@ -168,6 +168,16 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 168 | 168 | var currentDuanJuIndex: NSInteger! = 0//播放短剧index |
| 169 | 169 | var isDuanJuPlayer = false//是否 短剧播放器 |
| 170 | 170 | var isTempDuanJuPlayer = false//临时是否 短剧播放器 |
| 171 | + var isPausePlayer = false//是否暂停播放 | |
| 172 | + var isHomePagePush = false//是否 主页Push | |
| 173 | + lazy var tempDataArray: NSMutableArray = {//临时剧集 | |
| 174 | + let dataArray = NSMutableArray.init() | |
| 175 | + return dataArray | |
| 176 | + }() | |
| 177 | + lazy var tempDataURLArray: NSMutableArray = {//临时剧集url | |
| 178 | + let dataArray = NSMutableArray.init() | |
| 179 | + return dataArray | |
| 180 | + }() | |
| 171 | 181 | |
| 172 | 182 | /// 初始化播放器 |
| 173 | 183 | /// - Parameters: |
| ... | ... | @@ -180,12 +190,15 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 180 | 190 | self.pageNum = page |
| 181 | 191 | self.isSelectable = true |
| 182 | 192 | self.currentIndex = currentIndex |
| 193 | + self.isHomePagePush = true | |
| 183 | 194 | super.init(nibName:nil, bundle:nil) |
| 184 | 195 | self.dataArray.addObjects(from: dataArray) |
| 185 | 196 | dataArray.forEach {[weak self] listModel in |
| 186 | 197 | guard let self = self else { return } |
| 187 | 198 | self.dataURLArray.add(listModel.videoUrl) |
| 188 | 199 | } |
| 200 | + self.tempDataArray.addObjects(from: dataArray) | |
| 201 | + self.tempDataURLArray.addObjects(from: self.dataURLArray as! [Any]) | |
| 189 | 202 | } |
| 190 | 203 | |
| 191 | 204 | /// 初始化播放器 |
| ... | ... | @@ -283,6 +296,9 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 283 | 296 | |
| 284 | 297 | |
| 285 | 298 | addRefreshView() |
| 299 | + if self.tableView.mj_footer == nil { | |
| 300 | + self.tableView.mj_footer = footerRefreshView | |
| 301 | + } | |
| 286 | 302 | |
| 287 | 303 | player = ZFPlayerController(scrollView: tableView, playerManager: playerManager, containerViewTag: 100) |
| 288 | 304 | player.disableGestureTypes = [.pan, .pinch] |
| ... | ... | @@ -296,14 +312,17 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 296 | 312 | guard let self = self else { return } |
| 297 | 313 | self.controlView.videoPlayer((self.player)!, currentTime: self.player.currentTime, totalTime: self.player.totalTime) |
| 298 | 314 | let index = self.dataURLArray.index(of: assetURL.absoluteString) |
| 299 | - let homeModel = self.dataArray[index] as! CNLiveAlbumListModel | |
| 300 | - self.currentIndex = index | |
| 301 | - if homeModel.product?.check == false { | |
| 302 | - if homeModel.product?.productType == "4" { | |
| 303 | - //这里表示可以进行试听 | |
| 304 | - } else { | |
| 305 | - (self.player)!.stopCurrentPlayingCell() | |
| 315 | + if let homeModel = self.dataArray[index] as? CNLiveAlbumListModel{ | |
| 316 | + self.currentIndex = index | |
| 317 | + if homeModel.product?.check == false { | |
| 318 | + if homeModel.product?.productType == "4" { | |
| 319 | + //这里表示可以进行试听 | |
| 320 | + } else { | |
| 321 | + (self.player)!.stopCurrentPlayingCell() | |
| 322 | + } | |
| 306 | 323 | } |
| 324 | + }else{ | |
| 325 | + | |
| 307 | 326 | } |
| 308 | 327 | } |
| 309 | 328 | // 更新另一个控制层的时间 |
| ... | ... | @@ -328,7 +347,15 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 328 | 347 | guard let self = self else { return } |
| 329 | 348 | self.controlView.videoPlayer((self.player)!) |
| 330 | 349 | self.player.currentPlayerManager.stop() |
| 350 | + //短剧播放器->剧集播放器 播放下一集 | |
| 351 | + self.currentIndex = self.currentIndex + 1 | |
| 352 | + if self.currentIndex >= self.dataArray.count{ | |
| 353 | + //最后一集,重置为最后一集 | |
| 354 | + self.currentIndex = self.dataArray.count - 1 | |
| 355 | + } | |
| 356 | + | |
| 331 | 357 | let indexPath = IndexPath(row: self.currentIndex, section: 0) |
| 358 | + self.player.scrollView?.setContentOffset(CGPoint(x: 0, y:CGFloat(self.currentIndex)*KSreenHeight), animated: true)//校正偏移量 | |
| 332 | 359 | self.playVideo(at: indexPath as IndexPath) |
| 333 | 360 | } |
| 334 | 361 | |
| ... | ... | @@ -398,10 +425,17 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 398 | 425 | self.tableView.refreshControl = headerRefreshView |
| 399 | 426 | footerRefreshView = CNLiveFooterRefresh(refreshingBlock: { [weak self] in |
| 400 | 427 | guard let self = self else { return } |
| 401 | - self.player.stopCurrentPlayingCell() | |
| 402 | - self.currentIndex = 0 | |
| 403 | - self.pageNum += 1 | |
| 404 | - self.requestData {noMore in } | |
| 428 | + if self.isDuanJuPlayer | |
| 429 | + {//短剧 | |
| 430 | + if self.tableView.mj_footer != nil { | |
| 431 | + self.tableView.mj_footer?.endRefreshing() | |
| 432 | + self.tableView.mj_footer?.endRefreshingWithNoMoreData() | |
| 433 | + } | |
| 434 | + }else{//剧集 | |
| 435 | + self.player.stopCurrentPlayingCell() | |
| 436 | + self.pageNum += 1 | |
| 437 | + self.requestData {noMore in } | |
| 438 | + } | |
| 405 | 439 | }) |
| 406 | 440 | //预加载下 |
| 407 | 441 | CNLiveQQEmotionManager.emotionsForQQ() |
| ... | ... | @@ -412,7 +446,22 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 412 | 446 | if self.isDuanJuPlayer{ |
| 413 | 447 | self.requestAllHotListData { noMore in } |
| 414 | 448 | }else{ |
| 415 | - self.requestData {noMore in } | |
| 449 | + self.realHotArr.removeAllObjects() | |
| 450 | + self.realHotAllFirstArr.removeAllObjects() | |
| 451 | + self.realHotAllTotalArr.removeAllObjects() | |
| 452 | + self.realHotAllTotalVideoUrlArr.removeAllObjects() | |
| 453 | + self.currentDuanJuIndex = 0 | |
| 454 | + self.isHomePagePush = false | |
| 455 | + self.currentIndex = 0 | |
| 456 | + self.currentDuanJuIndex = 0 | |
| 457 | + if self.pickerView != nil { | |
| 458 | + self.pickerView.setupWithArray(dataArray: self.dataArray) | |
| 459 | + } | |
| 460 | + self.tableView.refreshControl?.endRefreshing() | |
| 461 | + self.tableView.reloadData() | |
| 462 | + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { | |
| 463 | + self.player.scrollView?.setContentOffset(CGPoint(x: 0, y:CGFloat(self.currentIndex!)*KSreenHeight), animated: true)//校正偏移量 | |
| 464 | + } | |
| 416 | 465 | } |
| 417 | 466 | } |
| 418 | 467 | |
| ... | ... | @@ -439,6 +488,8 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 439 | 488 | self.realHotAllTotalArr.removeAllObjects() |
| 440 | 489 | self.dataArray.removeAllObjects() |
| 441 | 490 | self.dataURLArray.removeAllObjects() |
| 491 | + self.tempDataArray.removeAllObjects() | |
| 492 | + self.tempDataURLArray.removeAllObjects() | |
| 442 | 493 | |
| 443 | 494 | showLoading(message: "") |
| 444 | 495 | let tempRealHotArr = Array(self.realHotArr) |
| ... | ... | @@ -522,8 +573,10 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 522 | 573 | |
| 523 | 574 | //等全部数据弄好了再设置 |
| 524 | 575 | self.dataArray.addObjects(from: self.realHotAllFirstArr as! [CNLiveAlbumListModel]) |
| 525 | - | |
| 526 | 576 | self.dataURLArray.addObjects(from: self.realHotAllFirstVideoUrlArr as! [String]) |
| 577 | + // | |
| 578 | + self.tempDataArray.addObjects(from: self.realHotAllTotalArr[self.currentDuanJuIndex] as! [CNLiveAlbumListModel]) | |
| 579 | + self.tempDataURLArray.addObjects(from: self.realHotAllTotalVideoUrlArr[self.currentDuanJuIndex] as! [String]) | |
| 527 | 580 | if self.tableView.mj_footer != nil { |
| 528 | 581 | self.tableView.mj_footer?.endRefreshing() |
| 529 | 582 | } |
| ... | ... | @@ -534,6 +587,9 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 534 | 587 | self.tableView.refreshControl?.endRefreshing() |
| 535 | 588 | self.tableView.reloadData() |
| 536 | 589 | |
| 590 | + if self.tableView.mj_footer == nil { | |
| 591 | + self.tableView.mj_footer = self.footerRefreshView | |
| 592 | + } | |
| 537 | 593 | |
| 538 | 594 | self.playTheIndex(index: self.currentDuanJuIndex) |
| 539 | 595 | } |
| ... | ... | @@ -552,10 +608,35 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 552 | 608 | // self.tableView.setContentOffset(CGPoint.zero, animated: false) |
| 553 | 609 | // } |
| 554 | 610 | } |
| 555 | - let listArray = (result as! [Any]).first as! [CNLiveAlbumListModel] | |
| 556 | - self.dataArray.addObjects(from: listArray) | |
| 557 | - let urlArray = (result as! [Any]).last as! [String] | |
| 558 | - self.dataURLArray.addObjects(from: urlArray) | |
| 611 | + var listArray = [CNLiveAlbumListModel]() | |
| 612 | + var urlArray = [String]() | |
| 613 | + if self.isTempDuanJuPlayer{ | |
| 614 | + //是短剧,点击了集数列表 | |
| 615 | + if self.isDuanJuPlayer{ | |
| 616 | + //没点集数,还是短剧 | |
| 617 | + print("1") | |
| 618 | + }else{ | |
| 619 | + //点击了集数,切换剧集 | |
| 620 | + listArray = (result as! [Any]).first as! [CNLiveAlbumListModel] | |
| 621 | + self.tempDataArray.addObjects(from: listArray) | |
| 622 | + urlArray = (result as! [Any]).last as! [String] | |
| 623 | + self.tempDataURLArray.addObjects(from: urlArray) | |
| 624 | + self.dataArray.removeAllObjects() | |
| 625 | + self.dataArray.addObjects(from: self.tempDataArray as! [Any]) | |
| 626 | + self.dataURLArray.removeAllObjects() | |
| 627 | + self.dataURLArray.addObjects(from: self.tempDataURLArray as! [Any]) | |
| 628 | + } | |
| 629 | + }else{ | |
| 630 | + //剧集 | |
| 631 | + listArray = (result as! [Any]).first as! [CNLiveAlbumListModel] | |
| 632 | + self.tempDataArray.addObjects(from: listArray) | |
| 633 | + urlArray = (result as! [Any]).last as! [String] | |
| 634 | + self.tempDataURLArray.addObjects(from: urlArray) | |
| 635 | + self.dataArray.removeAllObjects() | |
| 636 | + self.dataArray.addObjects(from: self.tempDataArray as! [Any]) | |
| 637 | + self.dataURLArray.removeAllObjects() | |
| 638 | + self.dataURLArray.addObjects(from: self.tempDataURLArray as! [Any]) | |
| 639 | + } | |
| 559 | 640 | if self.tableView.mj_footer != nil { |
| 560 | 641 | self.tableView.mj_footer?.endRefreshing() |
| 561 | 642 | } |
| ... | ... | @@ -581,14 +662,23 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 581 | 662 | } |
| 582 | 663 | } |
| 583 | 664 | |
| 584 | - let model = listArray.first?.albumMsgModel | |
| 585 | - let toIndex = (model?.episodeLast ?? 1)-1 <= 0 ? 0 : (model?.episodeLast ?? 1)-1 | |
| 586 | - var page = (self.roundUpToNearestTen(toIndex))/10 | |
| 587 | - if page == 0 { | |
| 588 | - page = 1 | |
| 665 | + if self.isTempDuanJuPlayer == true && self.isDuanJuPlayer == false{ | |
| 666 | + //从短剧变为剧集 | |
| 667 | +// self.playTheIndex(index: self.currentIndex) | |
| 668 | + }else{//剧集 | |
| 669 | + if self.slideModel == nil && self.currentIndex == 0{//非实时热榜进入,找上一次播放集数 | |
| 670 | + let model = listArray.first?.albumMsgModel | |
| 671 | + let toIndex = (model?.episodeLast ?? 1)-1 <= 0 ? 0 : (model?.episodeLast ?? 1)-1 | |
| 672 | + var page = (self.roundUpToNearestTen(toIndex))/10 | |
| 673 | + if page == 0 { | |
| 674 | + page = 1 | |
| 675 | + } | |
| 676 | + self.pageNum = page | |
| 677 | + self.playTheIndex(index: toIndex) | |
| 678 | + }else{ | |
| 679 | + print("加载更多列表") | |
| 680 | + } | |
| 589 | 681 | } |
| 590 | - self.pageNum = page | |
| 591 | - self.playTheIndex(index: toIndex) | |
| 592 | 682 | } else { |
| 593 | 683 | if self.tableView.mj_footer != nil { |
| 594 | 684 | self.tableView.mj_footer?.endRefreshing() |
| ... | ... | @@ -608,6 +698,7 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 608 | 698 | tableView.scrollToRow(at: indexPath, at: .none, animated: false) |
| 609 | 699 | DispatchQueue.main.asyncAfter(deadline: .now() + 1) { |
| 610 | 700 | self.player.scrollView?.setContentOffset(CGPoint(x: 0, y:CGFloat(index)*KSreenHeight), animated: true)//校正偏移量 |
| 701 | + self.playVideo(at: IndexPath(row: index, section: 0)) | |
| 611 | 702 | } |
| 612 | 703 | |
| 613 | 704 | // 使用zf_filterShouldPlayCellWhileScrolled过滤播放 |
| ... | ... | @@ -667,24 +758,44 @@ class CNLiveShortVideoViewController : CNLiveBaseViewController, UITableViewDele |
| 667 | 758 | |
| 668 | 759 | if self.isDuanJuPlayer{ |
| 669 | 760 | self.currentDuanJuIndex = indexPath.row |
| 670 | - let arr1 = self.realHotAllTotalArr[self.currentDuanJuIndex] as! Array<Any> | |
| 671 | - let arr = NSMutableArray() | |
| 672 | - arr1.forEach { obj in | |
| 673 | - let duanjuMdl = obj as! CNLiveAlbumListModel | |
| 674 | - arr.add(duanjuMdl) | |
| 675 | - } | |
| 676 | - if self.pickerView != nil { | |
| 677 | - self.pickerView.setupWithArray(dataArray: arr) | |
| 761 | + if self.currentDuanJuIndex < self.realHotAllTotalArr.count{ | |
| 762 | + let arr1 = self.realHotAllTotalArr[self.currentDuanJuIndex] as! Array<Any> | |
| 763 | + let arr = NSMutableArray() | |
| 764 | + arr1.forEach { obj in | |
| 765 | + let duanjuMdl = obj as! CNLiveAlbumListModel | |
| 766 | + arr.add(duanjuMdl) | |
| 767 | + } | |
| 768 | + if self.pickerView != nil { | |
| 769 | + self.pickerView.setupWithArray(dataArray: arr) | |
| 770 | + } | |
| 678 | 771 | } |
| 679 | 772 | }else{ |
| 680 | 773 | if self.pickerView != nil { |
| 681 | 774 | self.pickerView.setupWithArray(dataArray: self.dataArray) |
| 682 | 775 | } |
| 683 | 776 | } |
| 684 | - let data: CNLiveAlbumListModel = dataArray[indexPath.row] as! CNLiveAlbumListModel | |
| 685 | - self.player.playTheIndexPath(indexPath, assetURL: URL(string: data.videoUrl)!) | |
| 686 | - controlView.resetControlView() | |
| 687 | - controlView.showCoverView(withUrl: data.poster) | |
| 777 | + if self.isPausePlayer == true{ | |
| 778 | +// self.playerManager.pause() | |
| 779 | + print("111") | |
| 780 | + }else{ | |
| 781 | + var index = 0 | |
| 782 | + if self.isHomePagePush == true{ | |
| 783 | + //是主页push | |
| 784 | + self.isHomePagePush = false | |
| 785 | + index = self.currentIndex | |
| 786 | + }else{ | |
| 787 | + //不是主页push | |
| 788 | + self.currentIndex = indexPath.row | |
| 789 | + index = self.currentIndex | |
| 790 | + | |
| 791 | + } | |
| 792 | + let idxPath = IndexPath(row: index, section: indexPath.section) | |
| 793 | + if let data: CNLiveAlbumListModel = dataArray[index] as? CNLiveAlbumListModel{ | |
| 794 | + self.player.playTheIndexPath(idxPath, assetURL: URL(string: data.videoUrl)!) | |
| 795 | + controlView.resetControlView() | |
| 796 | + controlView.showCoverView(withUrl: data.poster) | |
| 797 | + } | |
| 798 | + } | |
| 688 | 799 | } |
| 689 | 800 | //10倍数向上取整 |
| 690 | 801 | func roundUpToNearestTen(_ number: Int) -> Int { |
| ... | ... | @@ -761,12 +872,17 @@ extension CNLiveShortVideoViewController { |
| 761 | 872 | } |
| 762 | 873 | } |
| 763 | 874 | func listActionMethod(viewcell: CNLiveShortVideoListTableViewCell, button: UIButton) { |
| 764 | - var arr = NSMutableArray() | |
| 875 | + let arr = NSMutableArray() | |
| 765 | 876 | var pageNum:NSInteger = 1 |
| 766 | 877 | if self.isDuanJuPlayer{ |
| 767 | 878 | let listArr = self.realHotAllTotalArr[self.currentDuanJuIndex] as! [CNLiveAlbumListModel] |
| 768 | 879 | arr.addObjects(from: listArr) |
| 769 | 880 | pageNum = 1 |
| 881 | + self.aid = listArr.first?.albumMsgModel?.albumId | |
| 882 | + self.tempDataArray.removeAllObjects() | |
| 883 | + self.tempDataArray.addObjects(from: self.realHotAllTotalArr[self.currentDuanJuIndex] as! [CNLiveAlbumListModel]) | |
| 884 | + self.tempDataURLArray.removeAllObjects() | |
| 885 | + self.tempDataURLArray.addObjects(from: self.realHotAllTotalVideoUrlArr[self.currentDuanJuIndex] as! [String]) | |
| 770 | 886 | }else{ |
| 771 | 887 | arr.addObjects(from: self.dataArray as! [Any]) |
| 772 | 888 | pageNum = self.pageNum |
| ... | ... | @@ -774,36 +890,42 @@ extension CNLiveShortVideoViewController { |
| 774 | 890 | |
| 775 | 891 | self.isTempDuanJuPlayer = self.isDuanJuPlayer |
| 776 | 892 | self.isDuanJuPlayer = false |
| 893 | + self.isPausePlayer = true | |
| 894 | + | |
| 777 | 895 | pickerView = CNLiveShortVideoContentListView.showVideoContentListView(aid: viewcell.homeModel.albumMsgModel!.albumId,pageNum: pageNum,title: viewcell.homeModel.albumMsgModel!.albumName,dataArray: arr, episodeNow: viewcell.homeModel.albumMsgModel!.episodeNow, result: {[weak self] listModel in |
| 778 | 896 | guard let self = self else { return } |
| 779 | 897 | |
| 780 | 898 | if listModel is String{ |
| 781 | 899 | //点击了x |
| 782 | 900 | self.isDuanJuPlayer = self.isTempDuanJuPlayer |
| 901 | + self.isPausePlayer = false | |
| 783 | 902 | }else{ |
| 784 | - //点击了cell | |
| 903 | + // MARK: - 点击了剧集列表cell | |
| 785 | 904 | //切换为剧集播放器 |
| 905 | + self.isPausePlayer = false | |
| 786 | 906 | self.isDuanJuPlayer = false |
| 787 | 907 | self.isTempDuanJuPlayer = false |
| 788 | 908 | //更改数据源 |
| 789 | 909 | self.dataArray.removeAllObjects() |
| 790 | 910 | self.dataURLArray.removeAllObjects() |
| 791 | - let arr = self.realHotAllTotalArr[self.currentDuanJuIndex] as! [CNLiveAlbumListModel] | |
| 792 | - self.dataArray.addObjects(from: arr) | |
| 793 | - let urlArr = self.realHotAllTotalVideoUrlArr [self.currentDuanJuIndex] as! [String] | |
| 794 | - self.dataURLArray.addObjects(from: urlArr) | |
| 911 | + | |
| 912 | + self.dataArray.addObjects(from: self.tempDataArray as! [CNLiveAlbumListModel]) | |
| 913 | + | |
| 914 | + self.dataURLArray.addObjects(from: self.tempDataURLArray as! [String]) | |
| 915 | + | |
| 795 | 916 | self.tableView.reloadData() |
| 796 | 917 | let index = self.dataArray.index(of: listModel) as NSInteger |
| 918 | + self.currentIndex = index | |
| 797 | 919 | self.playTheIndex(index: index) |
| 798 | - | |
| 799 | 920 | } |
| 800 | 921 | }, reload: {[weak self] page in |
| 801 | 922 | guard let self = self else { return } |
| 802 | 923 | self.player.stopCurrentPlayingCell() |
| 803 | - self.currentIndex = 0 | |
| 924 | + if page == 1{ | |
| 925 | + self.currentIndex = 0 | |
| 926 | + } | |
| 804 | 927 | self.pageNum = page |
| 805 | 928 | |
| 806 | - | |
| 807 | 929 | self.requestData { noMore in |
| 808 | 930 | self.pickerView.tableView.mj_footer?.endRefreshing() |
| 809 | 931 | if noMore { | ... | ... |