123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- //
- // PQEditPublicCoverImageView.swift
- // BFFramework
- //
- // Created by ak on 2021/7/22.
- // 功能:选择封面
- import Foundation
- class PQEditPublicCoverImageView: UIView {
-
- //确认选择回调
- public var selectImageCallBack: ((_ image: UIImage?) -> Void)?
-
- //从相册选择 BTN 点击回调 用于弹出照片选择界面
- public var selectPhotoBtnCallBack:(() -> Void)?
- //选择的封面图片
- var selectImage:UIImage?
- //最后选择的封面 btn 用于还原角标
- var lastSelectcoverImageBtn:UIButton?
-
- lazy var backView: UIView = {
- let backView = UIView()
- backView.addCorner(corner: 1.5)
- backView.backgroundColor = .white
- return backView
- }()
- lazy var closeView: UIView = {
- let closeView = UIView()
- closeView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
- return closeView
- }()
- // 确定按钮
- lazy var compliteBtn: UIButton = {
- let compliteBtn = UIButton(type: .custom)
- compliteBtn.frame = CGRect(x: 0, y: 0, width: 70, height: 70)
- compliteBtn.setImage(UIImage().BF_Image(named: "editCoverimageOk"), for: .normal)
- compliteBtn.backgroundColor = PQBFConfig.shared.styleBackGroundColor
- compliteBtn.adjustsImageWhenHighlighted = false
- compliteBtn.tag = 2
- compliteBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
- return compliteBtn
- }()
- // 从相册选择
- lazy var selectPhotoBtn: UIButton = {
- let selectPhotoBtn = UIButton(type: .custom)
- selectPhotoBtn.frame = CGRect(x: 0, y: 0, width: 70, height: 70)
- selectPhotoBtn.setImage(UIImage().BF_Image(named: "editCoverimageSelect"), for: .normal)
- selectPhotoBtn.adjustsImageWhenHighlighted = false
- selectPhotoBtn.backgroundColor = PQBFConfig.shared.styleBackGroundColor
- selectPhotoBtn.tag = 1
- selectPhotoBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
- return selectPhotoBtn
- }()
- override init(frame: CGRect) {
- super.init(frame: frame)
-
- closeView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewHidden)))
- backgroundColor = .clear
- addSubview(closeView)
- addSubview(backView)
- addSubview(compliteBtn)
- addSubview(selectPhotoBtn)
-
- // 9个封面
- for i in 0 ... 8 {
- let coverImageBtn = UIButton(type: .custom)
- var frame: CGRect = .zero
- frame.size.width = 108.0
- frame.size.height = 108.0
- // 按钮横向间隔10,左边距16
- frame.origin.x = CGFloat((i % 3) * (108 + 10) + 16)
- // 按钮竖向间隔10,左边距16
- frame.origin.y = floor(CGFloat(i / 3)) * (frame.size.height + 10) + 16
- coverImageBtn.frame = frame
- coverImageBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#F6F6F6")
- coverImageBtn.tag = (i + 1) * 100
- coverImageBtn.adjustsImageWhenHighlighted = false
- coverImageBtn.addTarget(self, action: #selector(coverImageBtnClick(sender:)), for: .touchUpInside)
- coverImageBtn.contentMode = .scaleAspectFit
- //选中后的角标
- let iconView = UIImageView.init(frame: CGRect(x: 108.0 - 22.0 - 6, y: 6, width: 22, height: 22))
- iconView.image = UIImage().BF_Image(named: "editCoverimageSelected")
- iconView.tag = 1000
- iconView.isHidden = true
- coverImageBtn.addSubview(iconView)
- backView.addSubview(coverImageBtn)
- }
- backView.snp.makeConstraints { make in
- make.right.equalToSuperview()
- make.width.equalTo(cScreenWidth)
- make.height.equalTo(459 + cAKSafeAreaHeight)
- make.bottom.equalToSuperview()
- }
- closeView.snp.makeConstraints { make in
- make.right.equalToSuperview()
- make.width.equalTo(cScreenWidth)
- make.height.equalTo(cScreenHeigth - 459)
- make.top.equalToSuperview()
- }
- selectPhotoBtn.snp.makeConstraints { make in
- make.left.equalToSuperview().offset(16)
- make.width.equalTo(164)
- make.height.equalTo(54)
- make.bottom.equalToSuperview().offset(-19 - cAKSafeAreaHeight)
- }
- compliteBtn.snp.makeConstraints { make in
- make.left.equalTo(selectPhotoBtn.snp_right).offset(14)
- make.width.equalTo(164)
- make.height.equalTo(54)
- make.top.equalTo(selectPhotoBtn.snp_top)
- }
- }
- required init?(coder _: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- @objc func viewHidden() {
- isHidden = true
- if(selectImageCallBack != nil){
- selectImageCallBack!(nil)
- }
- }
-
- func show(videoURL: URL ,duration:Float64) {
- isHidden = false
-
- PQVideoSnapshotUtil.videoSnapshot(videoURL: videoURL, duration: TimeInterval(duration), count: 9) { [weak self] images in
- DispatchQueue.main.async {
- for i in 0...(images?.count ?? 0) - 1{
-
- let btn = self?.backView.viewWithTag((i + 1) * 100) as? UIButton
- btn?.setImage(images?[i], for: .normal)
- btn?.imageView?.contentMode = .scaleAspectFill
- }
- }
- }
- }
-
-
- /// 按钮点击事件
- /// - Parameter sender: <#sender description#>
- /// - Returns: <#description#>
- @objc func btnClick(sender: UIButton?) {
- switch sender?.tag {
- case 1:
- BFLog(message: "选择图库")
- if(selectPhotoBtnCallBack != nil){
- selectPhotoBtnCallBack!()
- }
-
- break
- case 2:
- BFLog(message: "确认选择")
- if(selectImageCallBack != nil){
- selectImageCallBack!(selectImage)
- }
- isHidden = true
- break
- default:
- break
- }
- }
- // 封面选择
- @objc func coverImageBtnClick(sender: UIButton?) {
- //角标的显示
- lastSelectcoverImageBtn?.viewWithTag(1000)?.isHidden = true
- sender?.viewWithTag(1000)?.isHidden = false
- lastSelectcoverImageBtn = sender
-
- BFLog(message: "封面选择了\(String(describing: sender?.tag))")
- selectImage = sender?.currentImage
-
- }
- }
|