1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- //
- // BFImageCoverViewCell.swift
- // BFRecordScreenKit
- //
- // Created by SanW on 2021/12/15.
- // Copyright © 2021 BytesFlow. All rights reserved.
- //
- import BFUIKit
- import GPUImage
- import UIKit
- open class BFImageCoverViewCell: UICollectionViewCell {
- var btnClickHandle: ((_ sender: UIButton, _ recordItem: BFRecordItemModel?) -> Void)?
- public lazy var playBtn: UIButton = {
- let btn = UIButton(type: .custom)
- btn.setImage(imageInRecordScreenKit(by: "preview_play"), for: .normal)
- let vv = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))
- btn.setImage(vv.graphicsGetImage(), for: .selected)
- btn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
- return btn
- }()
- lazy var playView: GPUImageView = {
- let playView = GPUImageView(frame: bounds)
- return playView
- }()
- lazy var filter: GPUImageFilter = {
- let filter = GPUImageFilter()
- return filter
- }()
- lazy var picture: GPUImagePicture = {
- let picture = GPUImagePicture()
- return picture
- }()
- @objc public class func gpuImageViewCell(collectionView: UICollectionView, indexPath: IndexPath) -> BFImageCoverViewCell {
- let cell: BFImageCoverViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: BFImageCoverViewCell.self), for: indexPath) as! BFImageCoverViewCell
- return cell
- }
- override public func prepareForReuse() {
- super.prepareForReuse()
- filter.removeTarget(playView)
- picture.removeTarget(filter)
- playBtn.isSelected = false
- }
- override public init(frame: CGRect) {
- super.init(frame: frame)
- contentView.addSubview(playView)
- contentView.addSubview(playBtn)
- }
- public required init?(coder _: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- public var recordItem: BFRecordItemModel? {
- didSet {
- addData()
- addLayout()
- }
- }
- public func addData() {
- guard let coverImg = recordItem?.coverImg else {
- filter.removeTarget(playView)
- picture.removeTarget(filter)
- return
- }
- picture = GPUImagePicture(image: coverImg)
- picture.addTarget(filter)
- filter.addTarget(playView)
- picture.processImage()
- // 暂停状态--如果是图片素材同时没有录音文件时不显示播放按钮
- playBtn.isSelected = (recordItem?.mediaType == .IMAGE && (recordItem?.voiceStickers.count ?? 0) <= 0)
- }
- public func addLayout() {
- playView.frame = contentView.bounds
- playBtn.frame = CGRect(x: 0, y: cDevice_iPhoneNavBarAndStatusBarHei, width: cScreenWidth, height: cScreenHeigth - cDevice_iPhoneNavBarAndStatusBarHei * 2)
- playBtn.center = contentView.center
- }
- @objc func btnClick(sender: UIButton) {
- sender.isSelected = !sender.isSelected
- if btnClickHandle != nil {
- btnClickHandle!(sender, recordItem)
- }
- }
- }
|