|
@@ -20,7 +20,7 @@ class TSDiscoverBannerCell: TSDiscoverBaseCell {
|
|
|
guard let collectionView = self.cyclePagerView.collectionView else { return }
|
|
|
let visibleCells = collectionView.getAllLoadedCells()
|
|
|
for cell in visibleCells {
|
|
|
- if let cl = cell as? TSDiscoverBannerViewCell {
|
|
|
+ if let cl = cell as? TSDiscoverBannerViewVideoCell {
|
|
|
cl.setVideoPlayer()
|
|
|
}
|
|
|
}
|
|
@@ -50,13 +50,13 @@ class TSDiscoverBannerCell: TSDiscoverBaseCell {
|
|
|
pagerView.delegate = self
|
|
|
pagerView.dataSource = self
|
|
|
pagerView.layout.layoutType = TYCyclePagerTransformLayoutType.linear
|
|
|
- pagerView.register(TSDiscoverBannerViewCell.classForCoder(), forCellWithReuseIdentifier: TSDiscoverBannerViewCell.reuseIdentifier)
|
|
|
-
|
|
|
+ pagerView.register(TSDiscoverBannerViewVideoCell.classForCoder(), forCellWithReuseIdentifier: "TSDiscoverBannerViewVideoCell")
|
|
|
+ pagerView.register(TSDiscoverBannerViewImageCell.classForCoder(), forCellWithReuseIdentifier: "TSDiscoverBannerViewImageCell")
|
|
|
pagerView.addSubview(pageControl)
|
|
|
pageControl.snp.makeConstraints { make in
|
|
|
- make.bottom.equalTo(-58)
|
|
|
+ make.bottom.equalTo(-52)
|
|
|
make.leading.trailing.equalTo(0)
|
|
|
- make.height.equalTo(14)
|
|
|
+ make.height.equalTo(6)
|
|
|
}
|
|
|
|
|
|
return pagerView
|
|
@@ -101,7 +101,7 @@ class TSDiscoverBannerCell: TSDiscoverBaseCell {
|
|
|
cyclePagerView.snp.makeConstraints { make in
|
|
|
make.top.equalToSuperview()
|
|
|
make.horizontalEdges.equalToSuperview()
|
|
|
- make.bottom.equalTo(imageToVideoView.snp.bottom).offset(-34)
|
|
|
+ make.bottom.equalTo(-31)
|
|
|
}
|
|
|
|
|
|
let itemViewW = (k_ScreenWidth - 32 - 13) / 2.0
|
|
@@ -142,18 +142,31 @@ class TSDiscoverBannerCell: TSDiscoverBaseCell {
|
|
|
}
|
|
|
|
|
|
extension TSDiscoverBannerCell: TYCyclePagerViewDelegate, TYCyclePagerViewDataSource {
|
|
|
+
|
|
|
+ func getReuseIdentifier(itemModel:TSDiscoverItemModel) -> String?{
|
|
|
+ if let animationModel = itemModel.viewModel as? TSDiscoverAnimationItemVM {
|
|
|
+ if animationModel.style == .video {
|
|
|
+ return "TSDiscoverBannerViewVideoCell"
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return "TSDiscoverBannerViewImageCell"
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+
|
|
|
func numberOfItems(in pageView: TYCyclePagerView) -> Int {
|
|
|
return models.count
|
|
|
}
|
|
|
|
|
|
func pagerView(_ pagerView: TYCyclePagerView, cellForItemAt index: Int) -> UICollectionViewCell {
|
|
|
- let cell = pagerView.dequeueReusableCell(withReuseIdentifier: TSDiscoverBannerViewCell.reuseIdentifier, for: index) as! TSDiscoverBannerViewCell
|
|
|
-
|
|
|
- if let itemModel = models.safeObj(At: index) {
|
|
|
+ if let itemModel = models.safeObj(At: index),
|
|
|
+ let identifier = getReuseIdentifier(itemModel: itemModel),
|
|
|
+ let cell = pagerView.dequeueReusableCell(withReuseIdentifier: identifier, for: index) as? TSDiscoverBannerViewImageCell
|
|
|
+ {
|
|
|
cell.model = itemModel
|
|
|
+ return cell
|
|
|
}
|
|
|
-
|
|
|
- return cell
|
|
|
+ return UICollectionViewCell()
|
|
|
}
|
|
|
|
|
|
func layout(for pageView: TYCyclePagerView) -> TYCyclePagerViewLayout {
|
|
@@ -194,10 +207,7 @@ extension TSDiscoverBannerCell: TYCyclePagerViewDelegate, TYCyclePagerViewDataSo
|
|
|
}
|
|
|
|
|
|
// MARK: TSDiscoverBannerViewCell
|
|
|
-
|
|
|
-class TSDiscoverBannerViewCell: TSBaseCollectionCell {
|
|
|
- static let reuseIdentifier = "TSDiscoverBannerViewCell"
|
|
|
-
|
|
|
+class TSDiscoverBannerViewImageCell: TSBaseCollectionCell {
|
|
|
lazy var textLabel: UILabel = {
|
|
|
let textLabel = UILabel.createLabel(font: .font(size: 22, weight: .semibold), textColor: .white)
|
|
|
return textLabel
|
|
@@ -220,20 +230,12 @@ class TSDiscoverBannerViewCell: TSBaseCollectionCell {
|
|
|
return tryNowBtn
|
|
|
}()
|
|
|
|
|
|
- var videoPlayer: TSVideoPlayer?
|
|
|
- var videoURL: URL?
|
|
|
|
|
|
var model: TSDiscoverItemModel? {
|
|
|
didSet {
|
|
|
guard let model = model else { return }
|
|
|
textLabel.text = model.name
|
|
|
-
|
|
|
- if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM, let imageNamed = animationModel.imageNameds.first {
|
|
|
- if let videoURL = Bundle.main.url(forResource: imageNamed, withExtension: nil) {
|
|
|
- self.videoURL = videoURL
|
|
|
- imageView.image = TSVideoPlayer.getFirstFrameOnly(url: videoURL)
|
|
|
- }
|
|
|
- }
|
|
|
+ imageView.image = UIImage(named: model.imageNamed)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -255,7 +257,7 @@ class TSDiscoverBannerViewCell: TSBaseCollectionCell {
|
|
|
textLabel.snp.makeConstraints { make in
|
|
|
make.leading.equalTo(16)
|
|
|
make.trailing.equalTo(-111)
|
|
|
- make.bottom.equalTo(-53)
|
|
|
+ make.bottom.equalTo(-58)
|
|
|
make.height.equalTo(52)
|
|
|
}
|
|
|
|
|
@@ -265,6 +267,25 @@ class TSDiscoverBannerViewCell: TSBaseCollectionCell {
|
|
|
make.height.equalTo(24)
|
|
|
}
|
|
|
}
|
|
|
+}
|
|
|
+class TSDiscoverBannerViewVideoCell: TSDiscoverBannerViewImageCell {
|
|
|
+
|
|
|
+ var videoPlayer: TSVideoPlayer?
|
|
|
+ var videoURL: URL?
|
|
|
+
|
|
|
+ override var model: TSDiscoverItemModel? {
|
|
|
+ didSet {
|
|
|
+ guard let model = model else { return }
|
|
|
+ textLabel.text = model.name
|
|
|
+
|
|
|
+ if let animationModel = model.viewModel as? TSDiscoverAnimationItemVM, let imageNamed = animationModel.imageNameds.first {
|
|
|
+ if let videoURL = Bundle.main.url(forResource: imageNamed, withExtension: nil) {
|
|
|
+ self.videoURL = videoURL
|
|
|
+ imageView.image = TSVideoPlayer.getFirstFrameOnly(url: videoURL)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
func setVideoPlayer() {
|
|
|
guard let videoURL = videoURL else { return }
|