Commit abc95e48 authored by yqz's avatar yqz

Merge branch 'develop_0409' into yQz0507

* develop_0409:
  【修复】合并代码问题
  【优化】修改部分bug、优化功能
  【优化】部分逻辑新增和bug修复
  优化
parents 0328cde7 2f09d72d
......@@ -21,14 +21,12 @@ class CompressController : BaseViewController {
private var compressNav:CompressNavView?
// 排序
var currentSort : Int = 0 {
var currentSort : ResouceSortType = .largest {
didSet{
clearSelected()
}
}
// 资源类型 - 相册或者视频
var currentResourceType : CompressType = .compressPhoto
......@@ -122,22 +120,17 @@ class CompressController : BaseViewController {
let datas = Singleton.shared.resourceModel
if datas.count > 0 {
// 这里需要重新排序下
if self.currentSort == 0 {
self.resourceData = datas.sorted {$0.assetSize > $1.assetSize }
}else if self.currentSort == 1 {
self.resourceData = datas.sorted {$0.assetSize < $1.assetSize }
}else if self.currentSort == 2 {
self.resourceData = datas.sorted {$0.createDate > $1.createDate }
}else{
self.resourceData = datas.sorted {$0.createDate < $1.createDate }
}
self.resourceData = datas
self.sortByType(sortType: self.currentSort)
}else{
PMLoadingHUD.share.show()
PMLoadingHUD.share.show("Loading...", "Please wait on the screen. This might take several minutes.")
CompressViewModel().getAllPhotosToAssets(sortType: self.currentSort, assetType: self.currentResourceType) { [weak self] models in
guard let self else {return}
self.resourceData = models
Singleton.shared.resourceModel = self.resourceData
PMLoadingHUD.share.disMiss()
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
PMLoadingHUD.share.disMiss()
}
}
}
}
......@@ -238,20 +231,10 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if kind == UICollectionView.elementKindSectionHeader {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "CompressCustomHeaderView", for: indexPath) as! CompressCustomHeaderView
header.callBack = {[weak self] text in
header.sortViewSubmitCallBack = { [weak self] fileterModel in
guard let self else {return}
let sortView = CompressSortView(frame: self.view.bounds)
// 这两行是为了进入页面的时候选中
sortView.currentIndex = self.currentSort
sortView.tableView.reloadData()
self.view.addSubview(sortView)
sortView.callBack = {[weak self] sortType in
guard let self else {return}
self.currentSort = sortType as! Int
self.sortByType(sortType: self.currentSort, header: header)
}
self.currentSort = fileterModel.sortType
self.sortByType(sortType: self.currentSort)
}
header.changeView.callBack = {[weak self] flag in
guard let self else {return}
......@@ -264,9 +247,13 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
if self.currentResourceType == .compressPhoto {
self.getViewData()
}else{
PMLoadingHUD.share.show("Loading...", "Please wait on the screen. This might take several minutes.")
CompressViewModel().getAllPhotosToAssets(sortType: self.currentSort, assetType: flag) { [weak self] models in
guard let self else {return}
self.resourceData = models
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
PMLoadingHUD.share.disMiss()
}
}
}
}
......@@ -284,34 +271,21 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
}
}
func sortByType(sortType:Int,header:CompressCustomHeaderView){
let viewModel = CompressViewModel()
func sortByType(sortType:ResouceSortType){
switch sortType {
case 0:
header.selectlabel.text = "Largest"
// 按照文件大小降序
self.resourceData = viewModel.sortRsource(resource: self.resourceData, sortType: 1, sortKind: 0)
case .largest:
self.resourceData = self.resourceData.sorted { $0.assetSize > $1.assetSize }
break
case 1:
header.selectlabel.text = "Smallest"
// 按照文件大小升序
self.resourceData = viewModel.sortRsource(resource: self.resourceData, sortType: 0, sortKind: 0)
case .smallest:
self.resourceData = self.resourceData.sorted { $0.assetSize < $1.assetSize }
break
case 2:
header.selectlabel.text = "Newest"
// 按照时间降序
self.resourceData = viewModel.sortRsource(resource: self.resourceData, sortType: 1, sortKind: 1)
case .latest:
self.resourceData = self.resourceData.sorted { $0.createDate > $1.createDate }
break
case 3:
header.selectlabel.text = "Oldest"
// 按照时间升序
self.resourceData = viewModel.sortRsource(resource: self.resourceData, sortType: 0, sortKind: 1)
break
default:
case .oldest:
self.resourceData = self.resourceData.sorted { $0.createDate < $1.createDate }
break
}
}
func updateSubmitButton(){
......
......@@ -9,7 +9,7 @@ import Foundation
class CompressCustomHeaderView: UICollectionReusableView{
var callBack: callBack<Any> = {text in }
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
var modeData = [AssetModel]() {
didSet{
......@@ -51,35 +51,21 @@ class CompressCustomHeaderView: UICollectionReusableView{
return label
}()
lazy var btnView :UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
view.layer.cornerRadius = 16
view.clipsToBounds = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(selectQulity))
view.isUserInteractionEnabled = true
view.addGestureRecognizer(tap)
return view
// 筛选按钮
lazy var filterButton : UIButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "Frame 1"), for: .normal)
button.setTitle("The largest", for: .normal)
button.layer.cornerRadius = 14
button.clipsToBounds = true
button.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 0.1000)
button.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
button.setTitleColor(UIColor(red: 0.07, green: 0.07, blue: 0.07, alpha: 1), for: .normal)
button.addTarget(self, action: #selector(filterButtonAction), for: .touchUpInside)
button.isHidden = false
return button
}()
lazy var selectImageView :UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "ic_newest_similar")
return view
}()
lazy var selectlabel :UILabel = {
let label = UILabel()
label.text = "Largest"
label.textAlignment = .center
label.textColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1)
label.font = UIFont.systemFont(ofSize: 14, weight: .bold)
return label
}()
lazy var siezLabel :UILabel = {
let label = UILabel()
label.text = "1.02 GB"
......@@ -128,9 +114,7 @@ class CompressCustomHeaderView: UICollectionReusableView{
private func setUI(){
self.addSubview(self.titlelabel)
self.addSubview(self.btnView)
self.btnView.addSubview(self.selectImageView)
self.btnView.addSubview(self.selectlabel)
self.addSubview(self.filterButton)
self.addSubview(self.siezLabel)
self.addSubview(self.changeView)
self.addSubview(self.tipView)
......@@ -144,27 +128,17 @@ class CompressCustomHeaderView: UICollectionReusableView{
make.height.equalTo(28)
}
self.btnView.snp.makeConstraints { make in
self.filterButton.snp.makeConstraints { make in
make.centerY.equalTo(self.titlelabel.snp.centerY)
make.right.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(12)
make.width.equalTo(103 * RScreenW())
make.height.equalTo(32)
}
self.selectImageView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12)
make.centerY.equalToSuperview()
make.width.height.equalTo(20)
}
self.selectlabel.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-12)
make.top.equalToSuperview().offset(6)
make.width.equalTo(60 * RScreenW())
make.height.equalTo(20)
make.height.equalTo(28)
make.width.equalTo(98)
}
self.siezLabel.snp.makeConstraints { make in
make.left.equalTo(0)
make.right.equalTo(0)
make.top.equalTo(self.btnView.snp.bottom).offset(8)
make.top.equalTo(self.filterButton.snp.bottom).offset(8)
make.height.equalTo(20)
}
self.changeView.snp.makeConstraints { make in
......@@ -193,10 +167,20 @@ class CompressCustomHeaderView: UICollectionReusableView{
}
@objc func selectQulity(){
callBack("selectedQulity")
@objc func filterButtonAction(){
if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds)
// 添加毛玻璃效果
cWindow.showBlur()
cWindow.addSubview(filterView)
filterView.submitCallBack = {model in
DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
}
self.sortViewSubmitCallBack(model)
}
}
}
......
......@@ -67,7 +67,7 @@ class CompressViewModel{
/// 获取相册所有图片
/// - Returns: 图片信息
func getAllPhotosToAssets(sortType: Int, assetType : CompressType,_ finished: @escaping Finished){
func getAllPhotosToAssets(sortType: ResouceSortType, assetType : CompressType,_ finished: @escaping Finished){
var models : [AssetModel] = []
......@@ -108,11 +108,11 @@ class CompressViewModel{
group.leave()
if count == assetsArray.count {
// 默认按照文件大小排序
if sortType == 0 {
if sortType == .largest {
finished(models.sorted { $0.assetSize > $1.assetSize })
}else if sortType == 1 {
}else if sortType == .smallest {
finished(models.sorted { $0.assetSize < $1.assetSize })
}else if sortType == 2 {
}else if sortType == .latest {
finished(models.sorted { $0.createDate > $1.createDate })
}else{
finished(models.sorted { $0.createDate < $1.createDate })
......@@ -122,30 +122,7 @@ class CompressViewModel{
}
}
}
/// 对资源进行排序
/// - Parameters:
/// - resource: 原资源
/// - sortType: 排序的类型,升序或者降序。0-升序,1-降序
/// - sortKind: 排序的种类 大小或者时间 0-大小,1-时间
/// - Returns: 返回排序结果
func sortRsource(resource:[AssetModel],sortType:Int,sortKind:Int)->[AssetModel]{
if sortKind == 0 {
if sortType == 0 {
return resource.sorted { $0.assetSize < $1.assetSize }
}else{
return resource.sorted { $0.assetSize > $1.assetSize }
}
}else{
if sortType == 0 {
return resource.sorted { $0.createDate < $1.createDate }
}else{
return resource.sorted { $0.createDate > $1.createDate }
}
}
}
/// 视频压缩
/// - Parameters:
......
......@@ -313,6 +313,11 @@ class HomeInfoViewController:BaseViewController {
titleView.model.title = ""
showTipsVC()
self.tablewView.keepAllNoDataCallBack = {
self.ids = []
self.setDefaultPage()
}
}
......
......@@ -23,6 +23,7 @@ class PhotoDetailViewController : BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
self.view.addSubview(self.closeButton)
self.closeButton.snp.makeConstraints { make in
......
......@@ -77,6 +77,9 @@ class PhotoRemoveViewController: BaseViewController {
// MARK: - 生命周期
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
formatter.dateStyle = .medium
formatter.timeStyle = .none
if let type = self.mediaType {
......@@ -295,7 +298,8 @@ class PhotoRemoveViewController: BaseViewController {
photoView.mediaType = self.mediaType
photoView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan)))
view.addSubview(photoView)
photoView.frame = CGRectMake(15, statusBarHeight + 44, self.view.width - 30, self.view.height - 78 - safeHeight - statusBarHeight - 44)
photoView.frame = CGRectMake(0, 0, self.view.width - 30, 509 * RScreenH())
photoView.center = self.view.center
photoViews.append(photoView)
}
......@@ -470,7 +474,8 @@ class PhotoRemoveViewController: BaseViewController {
private func resetViewPosition(_ view: PhotosRemoveBaseView) {
UIView.animate(withDuration: 0.3) {
view.transform = .identity
view.frame = CGRectMake(15, statusBarHeight + 44, self.view.width - 30, self.view.height - 78 - safeHeight - statusBarHeight - 44)
view.frame = CGRectMake(0, 0, self.view.width - 30, 509 * RScreenH())
view.center = self.view.center
view.hideButtons()
}
}
......@@ -487,7 +492,8 @@ class PhotoRemoveViewController: BaseViewController {
// 创建新视图并更新内容
let newView = PhotosRemoveBaseView()
newView.frame = CGRectMake(15, statusBarHeight + 44, self.view.width - 30, self.view.height - 78 - safeHeight - statusBarHeight - 44)
newView.frame = CGRectMake(0, 0, self.view.width - 30, 509 * RScreenH())
newView.center = self.view.center
newView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan)))
newView.alpha = 0
view.addSubview(newView)
......
//
// HomeDetailDeleteView.swift
// PhoneManager
//
// Created by edy on 2025/5/19.
//
import UIKit
class HomeDetailDeleteView: UIView {
var deleteCallBack:(()->Void) = {}
lazy var deleteButton : UIButton = {
let view = UIButton()
view.setTitle("Delete", for: UIControl.State.normal)
view.setTitleColor(.white, for: .normal)
view.clipsToBounds = true
view.layer.cornerRadius = 23
view.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
view.addTarget(self, action: #selector(deleteButtonAction), for: .touchUpInside)
return view
}()
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = .white
self.addSubview(self.deleteButton)
self.deleteButton.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15)
make.height.equalTo(46)
}
}
@objc func deleteButtonAction(){
self.deleteCallBack()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
......@@ -13,12 +13,16 @@ class HomeInfoView :UIView {
var titleText : String?
var isDragEnd : Bool = false
var type : PhotsFileType?
var models:[HomeInfoTableItem] = []
var callBack:callBack<Any> = {text in}
var keepAllNoDataCallBack : ()->Void = {}
var deleteCallBack:callBack<[AssetModel]> = {array in }
var titleShowHideCallBack:callBack<Bool> = {isShow in}
......@@ -42,6 +46,7 @@ class HomeInfoView :UIView {
lazy var headerView:HomeInfoTitleView = {
let sview:HomeInfoTitleView = HomeInfoTitleView(frame: CGRect(x: 0, y: 0, width: width, height: 84))
sview.titleLabel.text = self.titleText
sview.type = self.type
sview.filterButton.isHidden = self.type != .similar && self.type != .SimilarVideos
return sview
}()
......@@ -308,6 +313,7 @@ class HomeInfoView :UIView {
tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: deleteView.isHidden ? 12 : deleteView.height + 12 , right: 0)
self.nextRowButton.isHidden = !self.isShowNextRowButton()
}
}
......@@ -315,45 +321,28 @@ class HomeInfoView :UIView {
extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
@objc func nextRowButtonAction(){
self.tableScrollToNextRow()
}
// 重新设置models
func resetModels(){
var newArray : [HomeInfoTableItem] = []
for array in ids ?? [] {
var smodels:[ImageSeletedCollectionItem] = []
for id in array {
let smodel = ImageSeletedCollectionItem()
smodel.id = id
smodel.isSeleted = false
smodels.append(smodel)
}
let smodel = HomeInfoTableItem()
smodel.type = type
smodel.smodels = smodels
smodel.titleText = titleText
newArray.append(smodel)
}
self.models = newArray
}
/// 让表格自动滚动一行
private func tableScrollToNextRow() {
guard let indexPath = tableView.indexPathsForVisibleRows?.first else { return }
let nextRow = indexPath.row + 1
// let nextRow = self.isDragEnd == true ? indexPath.row + 1 : indexPath.row + 2
let nextRow = indexPath.row + 2
let nextSection = indexPath.section
// 获取最后一个cell 看看是不是存在
guard let lastIndexPath = tableView.indexPathsForVisibleRows?.last else {return}
let lastNextRow = lastIndexPath.row + 1
guard lastNextRow < tableView.numberOfRows(inSection: nextSection) else {
// 滚动到最底部
tableView.scrollToRow(at: lastIndexPath, at: .bottom, animated: true)
return
}
// 检查下一行是否存在
guard nextRow < tableView.numberOfRows(inSection: nextSection) else { return }
......@@ -370,6 +359,7 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
// 直接滚动到调整后的位置
tableView.setContentOffset(adjustedOffset, animated: true)
self.isDragEnd = false
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
......@@ -386,6 +376,10 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
tableView.bringSubviewToFront(self.headerView)
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
self.isDragEnd = true
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return models.count
......@@ -394,10 +388,25 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: HomeInfoTableViewCell.identifier, for: indexPath) as! HomeInfoTableViewCell
cell.saveKeepListFinishedCallback = {
self.ids?.remove(at: indexPath.section)
self.resetModels()
tableView.deleteRows(at: [indexPath], with: .automatic)
cell.saveKeepListFinishedCallback = {[weak self] index in
guard let self else {return}
self.ids?.remove(at: index.section)
self.models.remove(at: index.section)
DispatchQueue.main.async {
self.setTitleView()
}
// 禁用动画
UIView.performWithoutAnimation {
tableView.beginUpdates()
tableView.deleteRows(at: [index], with: .fade)
tableView.endUpdates()
}
if let data = self.ids {
if data.count <= 0 {
self.keepAllNoDataCallBack()
}
}
}
cell.type = self.type
......@@ -439,10 +448,10 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
for item in orgModels {
var array = item
if startDate != nil {
array = array.filter({$0.createDate > startDate!})
array = array.filter({$0.createDate >= startDate!})
}
if endDate != nil {
array = array.filter({$0.createDate < endDate!})
array = array.filter({$0.createDate <= endDate!})
}
if array.count >= 2 {
......@@ -490,6 +499,8 @@ class HomeInfoTitleView:UIView {
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
var type : PhotsFileType?
lazy var titleLabel:UILabel = {
let sview:UILabel = UILabel()
......@@ -567,7 +578,12 @@ class HomeInfoTitleView:UIView {
let allNumberStr = "\(allNumber)"
let seletedCountStr = "\(seletedCount)"
let fullText = allNumberStr + " photos · \(seletedCountStr) selected"
var fullText = "0 photos · 0 selected"
if self.type == .SimilarVideos {
fullText = allNumberStr + " videos · \(seletedCountStr) selected"
}else {
fullText = allNumberStr + " photos · \(seletedCountStr) selected"
}
let attributedString2 = NSMutableAttributedString(string: fullText, attributes: [
......
......@@ -9,7 +9,7 @@ import Foundation
class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
var sortCallback : ()->Void = {}
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
lazy var modelTitlelabel :UILabel = {
let label = UILabel()
......@@ -20,33 +20,22 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
return label
}()
lazy var btnView :UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
view.layer.cornerRadius = 16
view.clipsToBounds = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(sortAction))
view.isUserInteractionEnabled = true
view.addGestureRecognizer(tap)
return view
// 筛选按钮
lazy var filterButton : UIButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "Frame 1"), for: .normal)
button.setTitle("The largest", for: .normal)
button.layer.cornerRadius = 14
button.clipsToBounds = true
button.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 0.1000)
button.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
button.setTitleColor(UIColor(red: 0.07, green: 0.07, blue: 0.07, alpha: 1), for: .normal)
button.addTarget(self, action: #selector(filterButtonAction), for: .touchUpInside)
button.isHidden = false
return button
}()
lazy var selectImageView :UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "ic_newest_similar")
return view
}()
lazy var selectlabel :UILabel = {
let label = UILabel()
label.text = "Largest"
label.textAlignment = .center
label.textColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1)
label.font = UIFont.systemFont(ofSize: 14, weight: .bold)
return label
}()
lazy var countLabel :UILabel = {
let label = UILabel()
label.text = "0 Photos"
......@@ -59,43 +48,26 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
private func setUI(){
self.addSubview(self.modelTitlelabel)
self.addSubview(self.btnView)
self.addSubview(self.countLabel)
self.btnView.addSubview(self.selectImageView)
self.btnView.addSubview(self.selectlabel)
self.addSubview(self.filterButton)
self.modelTitlelabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(14)
make.width.equalTo(150 * RScreenW())
make.height.equalTo(28)
}
self.btnView.snp.makeConstraints { make in
self.filterButton.snp.makeConstraints { make in
make.centerY.equalTo(self.modelTitlelabel.snp.centerY)
make.right.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(12)
make.width.equalTo(103 * RScreenW())
make.height.equalTo(32)
}
self.selectImageView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12)
make.centerY.equalToSuperview()
make.width.height.equalTo(20)
}
self.selectlabel.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-12)
make.top.equalToSuperview().offset(6)
make.width.equalTo(60 * RScreenW())
make.height.equalTo(20)
make.height.equalTo(28)
make.width.equalTo(98)
}
self.countLabel.snp.makeConstraints { make in
make.left.equalTo(0)
make.right.equalTo(0)
make.top.equalTo(self.btnView.snp.bottom).offset(8)
make.top.equalTo(self.filterButton.snp.bottom).offset(8)
make.height.equalTo(20)
}
}
......@@ -112,7 +84,19 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
setUI()
}
@objc func sortAction(){
sortCallback()
@objc func filterButtonAction(){
if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds)
// 添加毛玻璃效果
cWindow.showBlur()
cWindow.addSubview(filterView)
filterView.submitCallBack = {model in
DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
}
self.sortViewSubmitCallBack(model)
}
}
}
}
......@@ -8,7 +8,7 @@
import Foundation
class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
var sortCallback : ()->Void = {}
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
lazy var modelTitlelabel :UILabel = {
let label = UILabel()
......@@ -18,34 +18,19 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
label.font = UIFont.systemFont(ofSize: 20, weight: .bold)
return label
}()
lazy var btnView :UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
view.layer.cornerRadius = 16
view.clipsToBounds = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(sortAction))
view.isUserInteractionEnabled = true
view.addGestureRecognizer(tap)
return view
}()
lazy var selectImageView :UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "ic_newest_similar")
return view
}()
lazy var selectlabel :UILabel = {
let label = UILabel()
label.text = "Largest"
label.textAlignment = .center
label.textColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1)
label.font = UIFont.systemFont(ofSize: 14, weight: .bold)
return label
// 筛选按钮
lazy var filterButton : UIButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "Frame 1"), for: .normal)
button.setTitle("The largest", for: .normal)
button.layer.cornerRadius = 14
button.clipsToBounds = true
button.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 0.1000)
button.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
button.setTitleColor(UIColor(red: 0.07, green: 0.07, blue: 0.07, alpha: 1), for: .normal)
button.addTarget(self, action: #selector(filterButtonAction), for: .touchUpInside)
button.isHidden = false
return button
}()
lazy var sizeLabel :UILabel = {
let label = UILabel()
......@@ -56,72 +41,14 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
return label
}()
// lazy var tipBackView :UIView = {
// let view = UIView()
// view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
// view.layer.cornerRadius = 8
// view.clipsToBounds = true
// return view
// }()
// lazy var tipImageView :UIImageView = {
// let view = UIImageView()
// view.image = UIImage(named: "ic_cmpress_home_nor")
// return view
// }()
//
// lazy var tipLabel :UILabel = {
// let label = UILabel()
// label.text = "Video Compress"
// label.textAlignment = .left
// label.numberOfLines = 0
// label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
// return label
// }()
//
// lazy var tipDetailLabel :UILabel = {
// let label = UILabel()
// label.text = "Tap to start the process"
// label.textAlignment = .left
// label.numberOfLines = 0
// label.textColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
// label.font = UIFont.systemFont(ofSize: 12, weight: .regular)
// return label
// }()
//
// lazy var saveSizeLabel :UILabel = {
// let label = UILabel()
// label.text = "13.5M"
// label.textAlignment = .right
// label.textColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
// label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
// return label
// }()
//
// lazy var moreImageView :UIImageView = {
// let view = UIImageView()
// view.image = UIImage(named: "icon_left_setting_grey")
// return view
// }()
private func setUI(){
self.addSubview(self.modelTitlelabel)
self.addSubview(self.btnView)
self.addSubview(self.filterButton)
self.addSubview(self.sizeLabel)
self.btnView.addSubview(self.selectImageView)
self.btnView.addSubview(self.selectlabel)
// self.addSubview(self.tipBackView)
// self.tipBackView.addSubview(self.tipImageView)
// self.tipBackView.addSubview(self.tipLabel)
// self.tipBackView.addSubview(self.tipDetailLabel)
// self.tipBackView.addSubview(self.saveSizeLabel)
// self.tipBackView.addSubview(self.moreImageView)
self.modelTitlelabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(14)
......@@ -129,31 +56,23 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
make.height.equalTo(28)
}
self.btnView.snp.makeConstraints { make in
make.right.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(12)
make.width.equalTo(103 * RScreenW())
make.height.equalTo(32)
}
self.selectImageView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12)
make.centerY.equalToSuperview()
make.width.height.equalTo(20)
}
self.selectlabel.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-12)
make.top.equalToSuperview().offset(6)
make.width.equalTo(60 * RScreenW())
make.height.equalTo(20)
}
self.sizeLabel.snp.makeConstraints { make in
make.left.equalTo(0)
make.right.equalTo(0)
make.top.equalTo(self.btnView.snp.bottom).offset(8)
make.top.equalTo(self.filterButton.snp.bottom).offset(8)
make.height.equalTo(20)
}
self.filterButton.snp.makeConstraints { make in
make.centerY.equalTo(self.modelTitlelabel.snp.centerY)
make.right.equalToSuperview().offset(0)
make.height.equalTo(28)
make.width.equalTo(98)
}
addSubview(compressionTipView)
compressionTipView.snp.makeConstraints { make in
......@@ -164,47 +83,6 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
let tap = UITapGestureRecognizer(target: self, action: #selector(compressClick))
compressionTipView.addGestureRecognizer(tap)
// self.tipBackView.snp.makeConstraints { make in
// make.left.equalTo(0)
// make.right.equalTo(0)
// make.top.equalTo(self.sizeLabel.snp.bottom).offset(12)
// make.height.equalTo(70)
// }
//
// self.tipImageView.snp.makeConstraints { make in
// make.left.equalToSuperview().offset(15)
// make.centerY.equalToSuperview()
// make.width.height.equalTo(30)
//
// }
// self.tipLabel.snp.makeConstraints { make in
// make.left.equalTo(self.tipImageView.snp.right).offset(10)
// make.width.equalTo(150 * RScreenW())
// make.height.equalTo(22)
// make.top.equalToSuperview().offset(15)
// }
// self.tipDetailLabel.snp.makeConstraints { make in
// make.left.equalTo(self.tipImageView.snp.right).offset(10)
// make.width.equalTo(150 * RScreenW())
// make.height.equalTo(18)
// make.top.equalTo(self.tipLabel.snp.bottom).offset(0)
// }
//
// self.moreImageView.snp.makeConstraints { make in
// make.height.width.equalTo(20)
// make.right.equalToSuperview().offset(-15)
// make.centerY.equalToSuperview()
// }
//
// self.saveSizeLabel.snp.makeConstraints { make in
// make.centerY.equalToSuperview()
// make.right.equalTo(self.moreImageView.snp.left).offset(-10)
// make.height.equalTo(28)
// make.width.equalTo(100)
// }
}
override init(frame: CGRect) {
......@@ -219,8 +97,20 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
setUI()
}
@objc func sortAction(){
sortCallback()
@objc func filterButtonAction(){
if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds)
// 添加毛玻璃效果
cWindow.showBlur()
cWindow.addSubview(filterView)
filterView.submitCallBack = {model in
DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
}
self.sortViewSubmitCallBack(model)
}
}
}
lazy var compressionTipView:VideocompressionHeadView = {
......
......@@ -56,6 +56,7 @@ class PhotosRemoveBaseView: UIView {
self.imageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(showDeatail))
imageView.backgroundColor = .white
self.imageView.addGestureRecognizer(tap)
}
......
......@@ -118,10 +118,15 @@ class ResourceFilterBoxView : UIView {
setUpUI()
}
func getMonthEn(month: Int )-> String{
func getMonthEn(month: Int) -> String {
// 检查输入是否在有效范围内(1-12)
guard (1...12).contains(month) else {
return "Invalid Month" // 或抛出错误
}
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US")
return formatter.monthSymbols[month]
return formatter.monthSymbols[month - 1]
}
override func removeFromSuperview() {
......@@ -240,6 +245,7 @@ class ResourceFilterBoxView : UIView {
components.year = year
components.month = month
components.day = 1 // 设置为当月第一天
components.timeZone = TimeZone(identifier: "UTC")
// 使用公历日历
let calendar = Calendar(identifier: .gregorian)
......@@ -260,6 +266,7 @@ class ResourceFilterBoxView : UIView {
components.year = nextYear
components.month = nextMonth
components.day = 1
components.timeZone = TimeZone(identifier: "UTC")
let calendar = Calendar(identifier: .gregorian)
guard let nextMonthFirstDay = calendar.date(from: components) else {
......@@ -318,7 +325,6 @@ class ResourceFilterBoxView : UIView {
self.startDateButton.dateButton.setTitle("From \(self.getMonthEn(month: month)) \(year)", for: .normal)
self.startDateButton.closeButton.isHidden = false
self.startDate = self.dateFrom(year: year, month: month)
}else {
self.endDateButton.dateButton.setTitle("To \(self.getMonthEn(month: month)) \(year)", for: .normal)
self.endDateButton.closeButton.isHidden = false
......
......@@ -9,6 +9,8 @@ import UIKit
class TrashSubView: UIView {
var type : TrashTypeEnum?
var clearTashDataCallBack : ()->Void = {}
var presentTashDetailViewClickCallBack : ()->Void = {}
......@@ -32,7 +34,7 @@ class TrashSubView: UIView {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "ic_delete_duplicates"), for: .normal)
button.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
button.setTitle("Empty the garbage", for: .normal)
button.setTitle("Empty Trash", for: .normal)
button.setTitleColor(.white, for: .normal)
button.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
button.layer.cornerRadius = 19
......@@ -43,6 +45,8 @@ class TrashSubView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
self.addTopShadow()
// 给当前视图添加手势
addTapGestureToSelf()
......
......@@ -146,14 +146,14 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate {
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return component == 0 ? months[row] : "\(years.reversed()[row])"
return component == 0 ? months[row] : "\(years[row])"
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if component == 0 {
selectedMonth = row
} else {
selectedYear = years.reversed()[row]
selectedYear = years[row]
}
}
......@@ -161,4 +161,13 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate {
return component == 0 ? self.width/2 : self.width/2
}
private var currentYear: Int {
return Calendar.current.component(.year, from: Date())
}
private var currentMonth: Int {
return Calendar.current.component(.month, from: Date())
}
}
......@@ -24,7 +24,7 @@ class HomeInfoTableViewCell:UITableViewCell {
var callBack:callBack<Any> = {text in}
var saveKeepListFinishedCallback : ()->Void = {}
var saveKeepListFinishedCallback : (IndexPath)->Void = {index in}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
......@@ -119,7 +119,6 @@ class HomeInfoTableViewCell:UITableViewCell {
UIView.transition(with: collectionView!, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.collectionView?.reloadData()
// self.reloadCollectionView()
}, completion: nil)
}
}
......@@ -224,7 +223,7 @@ extension HomeInfoTableViewCell:UICollectionViewDelegate,UICollectionViewDataSou
cell.keepAllCallBack = {
//存到保留列表
saveAllDataToKeepList()
self.saveKeepListFinishedCallback()
self.saveKeepListFinishedCallback(indexPath)
}
// 存全部数据到保留列表
func saveAllDataToKeepList(){
......
......@@ -21,7 +21,8 @@ class PMLoadingHUD{
func show(_ title:String = "Deleting...",_ subTitle:String = "Please wait on the screen. This might take several minutes."){
disMiss()
DispatchQueue.main.async {
KEYWINDOW()?.addSubview(self.loadingView)
cWindow?.addSubview(self.loadingView)
cWindow?.bringSubviewToFront(self.loadingView)
self.loadingView.setTitleaAndSubTitle(title: title, subTitle: subTitle)
self.loadingView.animationView.play()
}
......
......@@ -51,6 +51,8 @@ class PMShowImgVideoController: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
}
override func viewWillAppear(_ animated: Bool) {
......
......@@ -12,13 +12,13 @@ class TrashViewController: BaseViewController {
var dissmisCallBack:()->Void = {}
var source:[TrashTypeEnum] = [.video,.other,.shot,.chat]
var source:[TrashTypeEnum] = [.video,.other,.shot]
var contentH:CGFloat = 0
var contentScrollView:UIScrollView!
var delBtn:UIButton!
var currentType:TrashTypeEnum = .other
let pageCount = 4 // 总页数
let pageCount = 3 // 总页数
var currentPage = 1 {
didSet{
self.setDelButtonUI()
......@@ -61,7 +61,7 @@ class TrashViewController: BaseViewController {
func configUI(){
view.backgroundColor = .white
contentScrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: ScreenW, height: contentH))
contentScrollView.contentSize = CGSize(width: ScreenW*4, height: view.height)
contentScrollView.contentSize = CGSize(width: ScreenW * CGFloat(self.source.count), height: view.height)
contentScrollView.isPagingEnabled = true
contentScrollView.showsHorizontalScrollIndicator = false
contentScrollView.showsVerticalScrollIndicator = false
......@@ -98,13 +98,11 @@ class TrashViewController: BaseViewController {
contentScrollView.addSubview(videoView)
contentScrollView.addSubview(otherView)
contentScrollView.addSubview(shotView)
contentScrollView.addSubview(chatView)
videoView.deleteButton = delBtn
otherView.deleteButton = delBtn
shotView.deleteButton = delBtn
chatView.deleteButton = delBtn
}
override func viewWillLayoutSubviews() {
......@@ -114,11 +112,10 @@ class TrashViewController: BaseViewController {
let viewHeight = self.view.bounds.height
contentH = viewHeight - 108
contentScrollView.frame = CGRect(x: 0, y: 34, width: viewWidth, height: contentH)
contentScrollView.contentSize = CGSize(width: viewWidth*4, height: contentH)
contentScrollView.contentSize = CGSize(width: viewWidth * CGFloat(self.source.count), height: contentH)
videoView.frame = CGRect(x: 0, y: 0, width: viewWidth, height: contentH)
otherView.frame = CGRect(x: viewWidth, y: 0, width: viewWidth, height: contentH)
shotView.frame = CGRect(x: viewWidth*2, y: 0, width: viewWidth, height: contentH)
chatView.frame = CGRect(x: viewWidth*3, y: 0, width: viewWidth, height: contentH)
}
lazy var videoView:TrashContenView = {
......@@ -139,54 +136,8 @@ class TrashViewController: BaseViewController {
return shotView
}()
lazy var chatView:TrashContenView = {
let chatView = TrashContenView()
chatView.trashType = .chat
return chatView
}()
//
// lazy var collectionView:UICollectionView = {
// let layout = UICollectionViewFlowLayout()
// layout.itemSize = CGSize(width: view.width, height: view.height)
// layout.scrollDirection = .horizontal
// layout.minimumInteritemSpacing = 0
// layout.minimumLineSpacing = 0
// let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: view.width, height: view.height), collectionViewLayout:layout)
// collectionView.isPagingEnabled = true
// collectionView.delegate = self
// collectionView.backgroundColor = .white
// collectionView.dataSource = self
// collectionView.register(UINib(nibName: "TrashContenViewCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenViewCell0")
// collectionView.register(UINib(nibName: "TrashContenViewCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenViewCell1")
// collectionView.register(UINib(nibName: "TrashContenViewCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenViewCell2")
// collectionView.register(UINib(nibName: "TrashContenViewCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenViewCell3")
//
// return collectionView
// }()
}
//extension TrashViewController:UICollectionViewDelegate,UICollectionViewDataSource{
//
// func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// return source.count
// }
//
// func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "TrashContenViewCell\(indexPath.row)", for: indexPath) as! TrashContenViewCell
// cell.trashType = source[indexPath.row]
// return cell
// }
//
//}
extension TrashViewController:UIScrollViewDelegate{
func scrollViewDidScroll(_ scrollView: UIScrollView){
......@@ -233,9 +184,6 @@ extension TrashViewController:UIScrollViewDelegate{
if self.currentPage == 3 {
return (TrashTypeEnum.shot,self.shotView)
}
if self.currentPage == 4 {
return (TrashTypeEnum.chat,self.chatView)
}
return (TrashTypeEnum.video,self.videoView)
}
......
......@@ -11,7 +11,6 @@ enum TrashTypeEnum : String, CaseIterable{
case video = "Video"
case other = "Other"
case shot = "Screenshot"
case chat = "Chat"
var dbType:Int{
switch self {
......@@ -21,8 +20,6 @@ enum TrashTypeEnum : String, CaseIterable{
return 1
case .shot:
return 2
case .chat:
return 3
}
}
}
......
......@@ -39,8 +39,6 @@ class TrashContenTitleCell: UICollectionViewCell {
scrollLine.frame = lineTwo.frame
case .shot:
scrollLine.frame = lineThree.frame
case .chat:
scrollLine.frame = lineFour.frame
}
}
}
......@@ -130,17 +128,7 @@ class TrashContenTitleCell: UICollectionViewCell {
weakSelf.scrollLine.frame = weakSelf.lineTwo.frame
}
}
case .chat:
if offset < ScreenW * 3{
UIView.animate(withDuration: 0.2) {
weakSelf.scrollLine.frame = weakSelf.lineThree.frame
}
}else{
UIView.animate(withDuration: 0.2) {
weakSelf.scrollLine.frame = weakSelf.lineFour.frame
}
}
}
}
}
......
......@@ -29,7 +29,7 @@ class TrashContenView: UIView {
var deleteButton : UIButton?
var scrollLine:UIView!
let lineW:CGFloat = (ScreenW - 62) / 4.0
let lineW:CGFloat = (ScreenW - 62) / 3.0
var dataSource:[AssetModel] = [] {
didSet{
......@@ -48,11 +48,6 @@ class TrashContenView: UIView {
}
func getData(){
// dataSource = TrashDatabase.shared.queryByMediaType(trashType.dbType).compactMap({ (localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int) in
// return AssetModel.init(localIdentifier: localIdentifier, assetSize: assetSize, createDate: createDate)
// })
collectionView.reloadData()
}
......@@ -81,7 +76,6 @@ class TrashContenView: UIView {
collectionView.backgroundColor = UIColor.colorWithHex(hexStr: "#F2F6FC")
collectionView.dataSource = self
collectionView.register(UINib(nibName: "TrashContenAssetCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenAssetCell")
// collectionView.register(UINib(nibName: "TrashContenTitleCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenTitleCell")
addSubview(collectionView)
......@@ -134,14 +128,9 @@ class TrashContenView: UIView {
lineThree.backgroundColor = UIColor.colorWithHex(hexStr: "#E5E5E5")
topView.addSubview(lineThree)
lineFour = UIView()
lineFour.backgroundColor = UIColor.colorWithHex(hexStr: "#E5E5E5")
topView.addSubview(lineFour)
lineOne.frame = CGRect(x: 16, y: 62, width: lineW, height: 6)
lineTwo.frame = CGRect(x: 10+lineOne.rightX, y: 62, width: lineW, height: 6)
lineThree.frame = CGRect(x: 10+lineTwo.rightX, y: 62, width: lineW, height: 6)
lineFour.frame = CGRect(x: 10+lineThree.rightX, y: 62, width: lineW, height: 6)
scrollLine = UIView()
......@@ -218,23 +207,6 @@ class TrashContenView: UIView {
}else{
weakSelf.scrollLine.frame = weakSelf.lineThree.frame
}
case .chat:
if page == 4{
if offset < ScreenW * 3{
UIView.animate(withDuration: 0.2) {
weakSelf.scrollLine.frame = weakSelf.lineThree.frame
}
}else{
UIView.animate(withDuration: 0.2) {
weakSelf.scrollLine.frame = weakSelf.lineFour.frame
}
}
}else{
weakSelf.scrollLine.frame = weakSelf.lineFour.frame
}
}
}
}
......@@ -245,8 +217,6 @@ class TrashContenView: UIView {
lineOne.cornerCut(radius: 2, corner: .allCorners)
lineTwo.cornerCut(radius: 2, corner: .allCorners)
lineThree.cornerCut(radius: 2, corner: .allCorners)
lineFour.cornerCut(radius: 2, corner: .allCorners)
// collectionView.frame = self.bounds
}
var trashType:TrashTypeEnum = .video{
......@@ -258,8 +228,6 @@ class TrashContenView: UIView {
scrollLine.frame = lineTwo.frame
case .shot:
scrollLine.frame = lineThree.frame
case .chat:
scrollLine.frame = lineFour.frame
}
getData()
}
......
......@@ -103,8 +103,6 @@ class TrashDefaultView: UIView {
case .other,.shot:
jumpToPhotosDetailPage(type: type)
break
case .chat:
break
}
}
}
......@@ -113,14 +111,6 @@ class TrashDefaultView: UIView {
self.responderViewController()?.dismiss(animated: true, completion: {
NotificationCenter.default.post(name: TrashDefaultView.jumpToPhotosDetailPageName, object: nil,userInfo: ["type":self.mediaType?.rawValue ?? ""])
})
// PhotoDataManager.manager.loadFromFileSystem { model in
// let data = type == .other ? model.otherModelArray[4] : model.otherModelArray[2]
// let vc:HomePhotosDetailViewController = HomePhotosDetailViewController(model: data)
// vc.mediaType = type == .other ? .Other : PhotsFileType.screenshots
// vc.dealData()
// self.responderViewController()?.navigationController?.pushViewController(vc, animated: true)
// }
}
func jumpToVideoDetailPage(type: TrashTypeEnum){
self.responderViewController()?.dismiss(animated: true, completion: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment