MVMineProductCell.swift 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //
  2. // MVMineProductCell.swift
  3. // MusicVideoPlus
  4. //
  5. // Created by SanW on 2021/6/22.
  6. //
  7. import BFFramework
  8. import UIKit
  9. class MVMineProductCell: UICollectionViewCell {
  10. var btnClickHandle: ((_ sender: UIButton, _ videoData: PQVideoListModel?) -> Void)?
  11. lazy var coverImageView: UIImageView = {
  12. let coverImageView = UIImageView()
  13. coverImageView.contentMode = .scaleAspectFill
  14. coverImageView.clipsToBounds = true
  15. coverImageView.isUserInteractionEnabled = true
  16. coverImageView.tag = cCellTag
  17. coverImageView.backgroundColor = UIColor.white
  18. return coverImageView
  19. }()
  20. lazy var moreBtn: UIButton = {
  21. let moreBtn = UIButton(type: .custom)
  22. moreBtn.setImage(UIImage(named: "video_pause"), for: .selected)
  23. moreBtn.setImage(nil, for: .normal)
  24. moreBtn.tag = 1
  25. moreBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
  26. return moreBtn
  27. }()
  28. lazy var titleLabel: UILabel = {
  29. let titleLabel = UILabel()
  30. titleLabel.textAlignment = .left
  31. titleLabel.textColor = .white
  32. titleLabel.numberOfLines = 1
  33. titleLabel.lineBreakMode = .byCharWrapping
  34. titleLabel.font = UIFont.systemFont(ofSize: 16, weight: .bold)
  35. return titleLabel
  36. }()
  37. override init(frame: CGRect) {
  38. super.init(frame: frame)
  39. contentView.addSubview(coverImageView)
  40. contentView.addSubview(moreBtn)
  41. contentView.addSubview(titleLabel)
  42. }
  43. required init?(coder _: NSCoder) {
  44. fatalError("init(coder:) has not been implemented")
  45. }
  46. @objc class func productCell(collectionView: UICollectionView, indexPath: IndexPath) -> MVMineProductCell {
  47. let cell: MVMineProductCell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: MVMineProductCell.self), for: indexPath) as! MVMineProductCell
  48. return cell
  49. }
  50. var videoData: PQVideoListModel? {
  51. didSet {
  52. addData()
  53. addLayout()
  54. }
  55. }
  56. func addData() {
  57. let coverImg = (videoData?.videoCoverSnapshotPath != nil && (videoData?.videoCoverSnapshotPath?.count ?? 0) > 0) ? videoData?.videoCoverSnapshotPath ?? "" : videoData?.coverImg?["coverImgPath"] as! String
  58. netImage(url: coverImg, mainView: coverImageView)
  59. titleLabel.text = videoData?.title ?? ""
  60. }
  61. func addLayout() {
  62. let margin: CGFloat = 12
  63. let moreH: CGFloat = 56
  64. coverImageView.snp.remakeConstraints { make in
  65. make.size.equalToSuperview()
  66. }
  67. moreBtn.snp.remakeConstraints { make in
  68. make.width.height.equalTo(moreH)
  69. make.bottom.right.equalToSuperview()
  70. }
  71. titleLabel.snp.remakeConstraints { make in
  72. make.width.height.equalTo(moreH)
  73. make.centerY.equalTo(moreBtn)
  74. make.left.equalToSuperview().offset(margin)
  75. make.right.equalTo(moreBtn.snp_left).offset(-margin)
  76. }
  77. }
  78. @objc func btnClick(sender: UIButton) {
  79. if btnClickHandle != nil {
  80. btnClickHandle!(sender, videoData)
  81. }
  82. }
  83. }