PublishEditVideoCoverImageTableViewCell.swift 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // PublishEditVideoCoverImageTableViewCell.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/11/11.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import RxSwift
  10. class PublishEditVideoCoverImageTableViewCell: UITableViewCell {
  11. let disposeBag = DisposeBag()
  12. class func cellWith(tableView:UITableView,indexPath:IndexPath) -> PublishEditVideoCoverImageTableViewCell {
  13. let ID = "PublishEditVideoCoverImageTableViewCell"
  14. tableView.register(PublishEditVideoCoverImageTableViewCell.self, forCellReuseIdentifier: ID)
  15. let cell : PublishEditVideoCoverImageTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! PublishEditVideoCoverImageTableViewCell
  16. cell.indexPath = indexPath
  17. cell.tableView = tableView
  18. return cell
  19. }
  20. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  21. super.init(style: style, reuseIdentifier: reuseIdentifier)
  22. setupViews()
  23. setupLayouts()
  24. setupUpdata()
  25. }
  26. required init?(coder aDecoder: NSCoder) {
  27. fatalError("init(coder:) has not been implemented")
  28. }
  29. //MRAK: - 设置View
  30. private func setupViews() {
  31. self.selectionStyle = .none
  32. addSubview(coverImageButton)
  33. coverImageButton.addSubview(selectedCoverLabel)
  34. }
  35. private func setupLayouts() {
  36. coverImageButton.snp.makeConstraints { (make) in
  37. make.top.equalTo(15)
  38. make.left.equalTo(14)
  39. make.size.equalTo(100)
  40. }
  41. selectedCoverLabel.snp.makeConstraints { (make) in
  42. make.bottom.left.right.equalToSuperview()
  43. make.height.equalTo(24)
  44. }
  45. }
  46. func setupUpdata() {
  47. coverImageButton.rx.tap.subscribe(onNext: {
  48. [weak self] (_) in
  49. let vc = PublishCoverVideoViewController()
  50. vc.publishManagerVideoModel = self?.publishManagerVideoModel
  51. vc.selectedOutCoverImagePathClosure = {
  52. [weak self] (coverImage) in
  53. guard let strongSelf = self else { return }
  54. strongSelf.coverImage = coverImage
  55. }
  56. UIViewController.topMost?.navigationController?.pushViewController(vc, animated: true)
  57. }).disposed(by: disposeBag)
  58. }
  59. lazy var coverImageButton: UIButton = {
  60. let coverImageButton = UIButton()
  61. coverImageButton.setImage(kImage(name: "default_pic"), for: UIControl.State.normal)
  62. coverImageButton.imageView?.contentMode = .scaleAspectFill
  63. coverImageButton.cornerRadius = 2
  64. coverImageButton.masksToBounds = true
  65. return coverImageButton
  66. }()
  67. lazy var selectedCoverLabel: UILabel = {
  68. let selectedCoverLabel = UILabel()
  69. selectedCoverLabel.text = "选封面"
  70. selectedCoverLabel.textColor = kffffffColor
  71. selectedCoverLabel.font = kRegularFont12
  72. selectedCoverLabel.textAlignment = .center
  73. selectedCoverLabel.backgroundColor = k000000Color.withAlphaComponent(0.36)
  74. return selectedCoverLabel
  75. }()
  76. var tableView: UITableView?
  77. var indexPath: IndexPath?
  78. /// 封面路径
  79. var publishManagerVideoModel : PublishManagerVideoModel? {
  80. didSet {
  81. coverImageButton.setImage(UIImage(named: publishManagerVideoModel?.outCoverImagePath ?? "default_pic"), for: UIControl.State.normal)
  82. }
  83. }
  84. var coverImage : UIImage? {
  85. didSet {
  86. coverImageButton.setImage(coverImage, for: UIControl.State.normal)
  87. let imgData: Data? = UIImage.pngData(coverImage!)()
  88. do {
  89. // 清除图片路径
  90. PathURLManager.clearPath(pathURL:
  91. PathURLManager.projectPicturesPath(parentURL:
  92. PathURLManager.projectResourcesPath(parentURL:
  93. PathURLManager.projectRecordssPath(parentURL:
  94. PathURLManager.projectDocumentPath())))!)
  95. //设置录制视频封面输出路径
  96. let outCoverImagePathURL =
  97. PathURLManager.projectPathExtensionPng(parentURL:
  98. PathURLManager.projectFilePath(fileName:
  99. PathURLManager.randomString(), parentURL:
  100. PathURLManager.projectDateFormatPath(dateFormat: "yyyyMM", parentURL:
  101. PathURLManager.projectPicturesPath(parentURL:
  102. PathURLManager.projectResourcesPath(parentURL:
  103. PathURLManager.projectRecordssPath(parentURL:
  104. PathURLManager.projectDocumentPath()))))))!
  105. try imgData?.write(to: outCoverImagePathURL)
  106. publishManagerVideoModel?.outCoverImagePath = outCoverImagePathURL.path
  107. publishManagerVideoModel?.outCoverImagePathURL = outCoverImagePathURL
  108. }
  109. catch {
  110. SwiftProgressHUD.shared().showText("封面写入失败")
  111. NXLLog("存入失败")
  112. return
  113. }
  114. }
  115. }
  116. }