Commit 873ecde3 authored by CZ1004's avatar CZ1004

【优化】部分逻辑新增和bug修复

parent 78b769f8
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
import Foundation import Foundation
import Photos import Photos
import SnapKit
class HomePhotosDetailViewController : BaseViewController { class HomePhotosDetailViewController : BaseViewController {
private var headerHeight : CGFloat = 98 private var headerHeight : CGFloat = 98
...@@ -15,7 +16,18 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -15,7 +16,18 @@ class HomePhotosDetailViewController : BaseViewController {
private var currentHeaderView: HomePhotosDetailCustomHeaderView? private var currentHeaderView: HomePhotosDetailCustomHeaderView?
var mediaType : PhotsFileType?
private var deleteViewBottomConstraint: Constraint?
var mediaType : PhotsFileType? {
didSet {
if mediaType == PhotsFileType.videos {
self.trashSubView.tipLabel.text = "The video in the trash can"
}else {
self.trashSubView.tipLabel.text = "The photo in the trash can"
}
}
}
var imageCache = NSCache<NSString, UIImage>() var imageCache = NSCache<NSString, UIImage>()
...@@ -30,12 +42,37 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -30,12 +42,37 @@ class HomePhotosDetailViewController : BaseViewController {
// 当前页面选中的 // 当前页面选中的
var selectedModel : [AssetModel] = [] { var selectedModel : [AssetModel] = [] {
didSet{ didSet{
if self.selectedModel.count == 0{ DispatchQueue.main.async {
self.deleteButton.setTitle("Delete", for: .normal) if self.selectedModel.count == 0{
}else if self.selectedModel.count == 1{ self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
self.deleteButton.setTitle("Delete \(self.selectedModel.count) Photo", for: .normal) UIView.animate(withDuration: 0.1) {
}else{ // 更新约束
self.deleteButton.setTitle("Delete \(selectedModel.count) Photos", for: .normal) self.deleteViewBottomConstraint?.update(offset: -safeHeight + 78)
}
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - safeHeight)
}else if self.selectedModel.count == 1{
self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Photo", for: .normal)
UIView.animate(withDuration: 0.1) {
// 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight)
}
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - 78 - safeHeight)
}else{
self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Photos", for: .normal)
UIView.animate(withDuration: 0.1) {
// 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight)
}
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - 78 - safeHeight)
}
if self.selectedModel.count > 0 {
self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{
self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
}
} }
} }
} }
...@@ -63,7 +100,7 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -63,7 +100,7 @@ class HomePhotosDetailViewController : BaseViewController {
let layout = WaterfallMutiSectionFlowLayout() let layout = WaterfallMutiSectionFlowLayout()
layout.delegate = self layout.delegate = self
let sview:UICollectionView = UICollectionView.init(frame: CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - 104), collectionViewLayout: layout) let sview:UICollectionView = UICollectionView.init(frame: CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - safeHeight), collectionViewLayout: layout)
sview.register(HomePhotosDetailCollectionCell.self, forCellWithReuseIdentifier: "HomePhotosDetailCollectionCell") sview.register(HomePhotosDetailCollectionCell.self, forCellWithReuseIdentifier: "HomePhotosDetailCollectionCell")
sview.register(HomePhotosDetailCustomHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "HomePhotosDetailCustomHeaderView") sview.register(HomePhotosDetailCustomHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "HomePhotosDetailCustomHeaderView")
...@@ -80,18 +117,20 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -80,18 +117,20 @@ class HomePhotosDetailViewController : BaseViewController {
}() }()
lazy var deleteButton : UIButton = { lazy var deleteButtonView : HomeDetailDeleteView = {
let view = UIButton() let view = HomeDetailDeleteView()
view.setTitle("Delete", for: UIControl.State.normal) view.addTopShadow()
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 return view
}() }()
lazy var trashSubView : TrashSubView = {
let view = TrashSubView()
view.backgroundColor = .white
view.isHidden = true
return view
}()
func setUI(){ func setUI(){
...@@ -113,17 +152,17 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -113,17 +152,17 @@ class HomePhotosDetailViewController : BaseViewController {
self.selectedModel.removeAll() self.selectedModel.removeAll()
} }
DispatchQueue.main.async { DispatchQueue.main.async {
UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: { UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.collectionView.reloadData() self.collectionView.reloadData()
}, completion: nil) }, completion: nil)
if self.selectedModel.count > 0 { if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{ }else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
} }
} }
...@@ -134,17 +173,17 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -134,17 +173,17 @@ class HomePhotosDetailViewController : BaseViewController {
self.selectedModel.removeAll() self.selectedModel.removeAll()
} }
DispatchQueue.main.async { DispatchQueue.main.async {
UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: { UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.collectionView.reloadData() self.collectionView.reloadData()
}, completion: nil) }, completion: nil)
if self.selectedModel.count > 0 { if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{ }else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
} }
} }
} }
...@@ -153,12 +192,12 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -153,12 +192,12 @@ class HomePhotosDetailViewController : BaseViewController {
self.view.insertSubview(collectionView, at: 0) self.view.insertSubview(collectionView, at: 0)
self.view.addSubview(self.deleteButton) self.view.addSubview(self.deleteButtonView)
self.deleteButton.snp.makeConstraints { make in self.deleteButtonView.snp.makeConstraints { make in
make.top.equalTo(self.collectionView.snp.bottom).offset(16)
make.left.equalToSuperview().offset(15) make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15) make.right.equalToSuperview().offset(-15)
make.height.equalTo(46) make.height.equalTo(78)
self.deleteViewBottomConstraint = make.bottom.equalToSuperview().offset(-safeHeight + 78).constraint
} }
self.view.addSubview(self.defaultImageView) self.view.addSubview(self.defaultImageView)
...@@ -174,9 +213,34 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -174,9 +213,34 @@ class HomePhotosDetailViewController : BaseViewController {
make.top.equalTo(self.defaultImageView.snp.bottom).offset(-30) make.top.equalTo(self.defaultImageView.snp.bottom).offset(-30)
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
} }
setDefaultPage() self.setDefaultPage()
}
/// 是否添加垃圾桶数据
func addTrashView(){
DispatchQueue.main.async {
self.trashSubView.removeFromSuperview()
self.view.addSubview(self.trashSubView)
self.trashSubView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalToSuperview().offset(-safeHeight)
make.height.equalTo(78)
}
// 判断垃圾桶有没有数据
let array = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: self.mediaType == PhotsFileType.Other ? TrashTypeEnum.other : TrashTypeEnum.shot)
self.trashSubView.resourceCountlabel.text = String(array.count)
self.trashSubView.isHidden = array.count <= 0
self.deleteButtonView.isHidden = array.count > 0
self.videoDetailNavView?.startSelectButton.isHidden = array.count > 0
// 改变collection的位置
if array.count > 0 {
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - 78 - safeHeight)
}else{
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - safeHeight)
}
}
} }
...@@ -191,16 +255,16 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -191,16 +255,16 @@ class HomePhotosDetailViewController : BaseViewController {
self.defaultTipLabel.isHidden = false self.defaultTipLabel.isHidden = false
self.currentHeaderView?.btnView.isHidden = true self.currentHeaderView?.btnView.isHidden = true
self.videoDetailNavView?.startSelectButton.isHidden = true self.videoDetailNavView?.startSelectButton.isHidden = true
self.deleteButton.isHidden = true self.deleteButtonView.isHidden = true
}else{ }else{
self.defaultImageView.isHidden = true self.defaultImageView.isHidden = true
self.defaultTipLabel.isHidden = true self.defaultTipLabel.isHidden = true
self.currentHeaderView?.btnView.isHidden = false self.currentHeaderView?.btnView.isHidden = false
self.videoDetailNavView?.startSelectButton.isHidden = false self.videoDetailNavView?.startSelectButton.isHidden = false
self.deleteButton.isHidden = false self.deleteButtonView.isHidden = false
} }
} }
self.addTrashView()
} }
} }
...@@ -212,6 +276,33 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -212,6 +276,33 @@ class HomePhotosDetailViewController : BaseViewController {
setUI() setUI()
showTipsVC() showTipsVC()
self.deleteButtonView.deleteCallBack = {
self.deleteButtonAction()
}
self.trashSubView.presentTashDetailViewClickCallBack = {[weak self] in
guard let self else {return}
// 进入垃圾桶详情页面
DispatchQueue.main.async {
let vc : TrashViewController = TrashViewController()
vc.currentPage = self.mediaType == PhotsFileType.Other ? 2 : 3
vc.dissmisCallBack = {
self.addTrashView()
}
self.present(vc, animated: true)
}
}
self.trashSubView.clearTashDataCallBack = {[weak self] in
guard let self else {return}
// 清除垃圾桶数据
TrashDataManager.clearTrashData(mediaType: self.mediaType == PhotsFileType.Other ? TrashTypeEnum.other : TrashTypeEnum.shot) {[weak self] in
guard let self else {return}
self.addTrashView()
}
}
} }
func showTipsVC(){ func showTipsVC(){
...@@ -235,7 +326,7 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -235,7 +326,7 @@ class HomePhotosDetailViewController : BaseViewController {
} }
TipsManager.saveLoadStatus(mediaType) TipsManager.saveLoadStatus(mediaType)
} }
// MARK:系统方法 // MARK:系统方法
...@@ -256,6 +347,7 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -256,6 +347,7 @@ class HomePhotosDetailViewController : BaseViewController {
self.collectionView.reloadData() self.collectionView.reloadData()
} }
} }
addTrashView()
} }
...@@ -265,7 +357,7 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -265,7 +357,7 @@ class HomePhotosDetailViewController : BaseViewController {
/// 获取当前页面数据 /// 获取当前页面数据
/// - Parameter completed: 完成回调 /// - Parameter completed: 完成回调
func getCurrentPageData(completed:@escaping ()->Void){ func getCurrentPageData(completed:@escaping ()->Void){
PhotoManager.shared.reloadTrashAndKeep() PhotoManager.shared.reloadTrashAndKeep()
var data = self.mediaType == .Other ? PhotoManager.shared.filterOtherModels : PhotoManager.shared.filterScreenShotModels var data = self.mediaType == .Other ? PhotoManager.shared.filterOtherModels : PhotoManager.shared.filterScreenShotModels
...@@ -371,15 +463,54 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -371,15 +463,54 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
cell.cellCallBack = {[weak self] ident,order in cell.cellCallBack = {[weak self] ident,order in
guard let self else {return} guard let self else {return}
DispatchQueue.main.async { DispatchQueue.main.async {
// 点击之后跳转详情页面 // 这里还需要判断下当前cell 是不是被选中了,选中了就不跳转左滑右滑动页面
if self.mediaType == .screenshots { if self.videoDetailNavView?.startSelectButton.isSelected == false {
let vc = PhotoRemoveViewController(data: self.resourceData,currentIndex: indexPath.row,mediaType: .shot) // 点击之后跳转详情页面
self.navigationController?.pushViewController(vc, animated: true) if self.mediaType == .screenshots {
} let vc = PhotoRemoveViewController(data: self.resourceData,currentIndex: indexPath.row,mediaType: .shot)
if self.mediaType == .Other { self.navigationController?.pushViewController(vc, animated: true)
let vc = PhotoRemoveViewController(data: self.resourceData,currentIndex: indexPath.row,mediaType: .other) }
if self.mediaType == .Other {
let vc = PhotoRemoveViewController(data: self.resourceData,currentIndex: indexPath.row,mediaType: .other)
self.navigationController?.pushViewController(vc, animated: true)
}
}else {
// 跳转PMSHow页面
// 点击之后跳转详情页面
let vc = PMShowImgVideoController()
vc.state = .similarPhotos
vc.currentIdx = 0
vc.oldPageIndexPath = indexPath
let dataSource = ImageSeletedCollectionItem()
dataSource.isSeleted = cell.choose
dataSource.id = ident
// 获取image
dataSource.image = PhotoAndVideoMananger.mananger.getImageFromAssetID(id: ident.localIdentifier)
vc.homeDataSource = [dataSource]
vc.backOrgPageCallBack = {index,data in
if let data = data{
if let item = data.first{
if let selected = item.isSeleted {
if let index = index {
if selected == true {
self.selectedModel.append(self.resourceData[index.row])
}else {
self.selectedModel.removeAll(where: {$0.localIdentifier == self.resourceData[index.row].localIdentifier})
}
DispatchQueue.main.async {
if let tempCell = collectionView.cellForItem(at: index) as? HomePhotosDetailCollectionCell {
tempCell.choose = selected
}
}
}
}
}
}
}
self.navigationController?.pushViewController(vc, animated: true) self.navigationController?.pushViewController(vc, animated: true)
} }
} }
} }
cell.clickCallBack = {[weak self] click,order in cell.clickCallBack = {[weak self] click,order in
...@@ -389,14 +520,6 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -389,14 +520,6 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}else{ }else{
self.selectedModel.removeAll { $0.localIdentifier == self.resourceData[order].localIdentifier } self.selectedModel.removeAll { $0.localIdentifier == self.resourceData[order].localIdentifier }
} }
DispatchQueue.main.async {
if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal)
}
}
} }
return cell return cell
...@@ -525,7 +648,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -525,7 +648,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
} }
@objc func deleteButtonAction(){ func deleteButtonAction(){
if selectedModel.count <= 0 { if selectedModel.count <= 0 {
return return
} }
...@@ -631,9 +754,9 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -631,9 +754,9 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}else{ }else{
self.deleteAction(count: self.selectedModel.count,isAfterAdv: false) self.deleteAction(count: self.selectedModel.count,isAfterAdv: false)
} }
} }
/// 弹出广告 /// 弹出广告
...@@ -664,7 +787,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -664,7 +787,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
self.showDeleteSuccess(fileCount: allIdent.count, fileSize: fileSize) self.showDeleteSuccess(fileCount: allIdent.count, fileSize: fileSize)
self.updateCurrentPageWhenDeleteAny() self.updateCurrentPageWhenDeleteAny()
} }
}else { }else {
PMLoadingHUD.share.disMiss() PMLoadingHUD.share.disMiss()
if let error = error { if let error = error {
...@@ -672,7 +795,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -672,7 +795,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
} }
} }
} }
} }
...@@ -712,7 +835,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -712,7 +835,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
} }
// 清理下缓存数据 // 清理下缓存数据
// PhotoDataManager.manager.removeDataWhenDeleteInPage(data: self.selectedModel) // PhotoDataManager.manager.removeDataWhenDeleteInPage(data: self.selectedModel)
PhotoManager.shared.removeDataWhenDeleteInPage(data: self.selectedModel) { PhotoManager.shared.removeDataWhenDeleteInPage(data: self.selectedModel) {
//删除完成刷新数据 //删除完成刷新数据
} }
...@@ -720,8 +843,8 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -720,8 +843,8 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
DispatchQueue.main.async { DispatchQueue.main.async {
// 删除完成之后,移除下当前选择的数据 // 删除完成之后,移除下当前选择的数据
self.selectedModel.removeAll() self.selectedModel.removeAll()
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: { UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.collectionView.reloadSections(IndexSet(integer: 0)) self.collectionView.reloadSections(IndexSet(integer: 0))
...@@ -730,4 +853,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -730,4 +853,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
setDefaultPage() setDefaultPage()
} }
} }
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
import Foundation import Foundation
import Photos import Photos
import SnapKit
class HomeVideoDetailController :BaseViewController { class HomeVideoDetailController :BaseViewController {
...@@ -14,6 +15,8 @@ class HomeVideoDetailController :BaseViewController { ...@@ -14,6 +15,8 @@ class HomeVideoDetailController :BaseViewController {
private var currentHeaderView: HomeVideoDetailCustomHeaderView? private var currentHeaderView: HomeVideoDetailCustomHeaderView?
private var deleteViewBottomConstraint: Constraint?
@MainActor required init?(coder: NSCoder) { @MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
...@@ -32,17 +35,37 @@ class HomeVideoDetailController :BaseViewController { ...@@ -32,17 +35,37 @@ class HomeVideoDetailController :BaseViewController {
// 当前页面选中的 // 当前页面选中的
var selectedModel : [AssetModel] = [] { var selectedModel : [AssetModel] = [] {
didSet{ didSet{
DispatchQueue.main.async { [self] in DispatchQueue.main.async {
if self.selectedModel.count != 0 { if self.selectedModel.count == 0{
if self.selectedModel.count == 1{ self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
self.deleteButton.setTitle("Delete", for: .normal) UIView.animate(withDuration: 0.1) {
} else if self.selectedModel.count == 1{ // 更新约束
self.deleteButton.setTitle("Delete \(self.selectedModel.count) Video", for: .normal) self.deleteViewBottomConstraint?.update(offset: -safeHeight + 78)
}else{ }
self.deleteButton.setTitle("Delete \(selectedModel.count) Videos", for: .normal) self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - safeHeight)
} else if self.selectedModel.count == 1{
self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Video", for: .normal)
UIView.animate(withDuration: 0.1) {
// 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight)
} }
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - 78 - safeHeight)
}else{
self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Videos", for: .normal)
UIView.animate(withDuration: 0.1) {
// 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight)
}
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - 78 - safeHeight)
}
if self.selectedModel.count > 0 {
self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{
self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
} }
self.collectionView.collectionViewLayout.invalidateLayout()
} }
} }
} }
...@@ -52,7 +75,7 @@ class HomeVideoDetailController :BaseViewController { ...@@ -52,7 +75,7 @@ class HomeVideoDetailController :BaseViewController {
let layout = WaterfallMutiSectionFlowLayout() let layout = WaterfallMutiSectionFlowLayout()
layout.delegate = self layout.delegate = self
let sview:UICollectionView = UICollectionView.init(frame: CGRect(x: marginLR, y: statusBarHeight + 44, width: self.view.width - 2 * marginLR, height: self.view.height - (statusBarHeight + 44) - 102), collectionViewLayout: layout) let sview:UICollectionView = UICollectionView.init(frame: CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - safeHeight), collectionViewLayout: layout)
sview.register(HomeVideoDetailCell.self, forCellWithReuseIdentifier: "HomeVideoDetailCell") sview.register(HomeVideoDetailCell.self, forCellWithReuseIdentifier: "HomeVideoDetailCell")
sview.register(HomeVideoDetailCustomHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "HomeVideoDetailCustomHeaderView") sview.register(HomeVideoDetailCustomHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "HomeVideoDetailCustomHeaderView")
...@@ -69,14 +92,18 @@ class HomeVideoDetailController :BaseViewController { ...@@ -69,14 +92,18 @@ class HomeVideoDetailController :BaseViewController {
}() }()
lazy var deleteButton : UIButton = { lazy var deleteButtonView : HomeDetailDeleteView = {
let view = UIButton() let view = HomeDetailDeleteView()
view.setTitle("Delete", for: UIControl.State.normal) view.addTopShadow()
view.setTitleColor(.white, for: .normal) return view
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) lazy var trashSubView : TrashSubView = {
let view = TrashSubView()
view.backgroundColor = .white
view.tipLabel.text = "The video in the trash can"
view.isHidden = true
return view return view
}() }()
...@@ -165,11 +192,11 @@ class HomeVideoDetailController :BaseViewController { ...@@ -165,11 +192,11 @@ class HomeVideoDetailController :BaseViewController {
self.collectionView.reloadData() self.collectionView.reloadData()
}, completion: nil) }, completion: nil)
if self.selectedModel.count > 0 { if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{ }else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
} }
} }
...@@ -181,17 +208,17 @@ class HomeVideoDetailController :BaseViewController { ...@@ -181,17 +208,17 @@ class HomeVideoDetailController :BaseViewController {
self.selectedModel.removeAll() self.selectedModel.removeAll()
} }
DispatchQueue.main.async { DispatchQueue.main.async {
UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: { UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.collectionView.reloadData() self.collectionView.reloadData()
}, completion: nil) }, completion: nil)
if self.selectedModel.count > 0 { if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{ }else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
} }
} }
} }
...@@ -199,12 +226,12 @@ class HomeVideoDetailController :BaseViewController { ...@@ -199,12 +226,12 @@ class HomeVideoDetailController :BaseViewController {
self.view.insertSubview(collectionView, at: 0) self.view.insertSubview(collectionView, at: 0)
self.view.addSubview(self.deleteButton) self.view.addSubview(self.deleteButtonView)
self.deleteButton.snp.makeConstraints { make in self.deleteButtonView.snp.makeConstraints { make in
make.top.equalTo(self.collectionView.snp.bottom).offset(16)
make.left.equalToSuperview().offset(15) make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15) make.right.equalToSuperview().offset(-15)
make.height.equalTo(46) make.height.equalTo(78)
self.deleteViewBottomConstraint = make.bottom.equalToSuperview().offset(-safeHeight + 78).constraint
} }
self.view.addSubview(self.defaultImageView) self.view.addSubview(self.defaultImageView)
self.defaultImageView.snp.makeConstraints { make in self.defaultImageView.snp.makeConstraints { make in
...@@ -230,8 +257,59 @@ class HomeVideoDetailController :BaseViewController { ...@@ -230,8 +257,59 @@ class HomeVideoDetailController :BaseViewController {
setUI() setUI()
showTipsVC() showTipsVC()
self.deleteButtonView.deleteCallBack = {
self.deleteButtonAction()
}
self.trashSubView.presentTashDetailViewClickCallBack = {[weak self] in
guard let self else {return}
// 进入垃圾桶详情页面
DispatchQueue.main.async {
let vc : TrashViewController = TrashViewController()
vc.currentPage = 1
vc.dissmisCallBack = {
self.addTrashView()
}
self.present(vc, animated: true)
}
}
self.trashSubView.clearTashDataCallBack = {[weak self] in
guard let self else {return}
// 清除垃圾桶数据
TrashDataManager.clearTrashData(mediaType: TrashTypeEnum.video) {[weak self] in
guard let self else {return}
self.addTrashView()
}
}
} }
/// 是否添加垃圾桶数据
func addTrashView(){
DispatchQueue.main.async {
self.trashSubView.removeFromSuperview()
self.view.addSubview(self.trashSubView)
self.trashSubView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalToSuperview().offset(-safeHeight)
make.height.equalTo(78)
}
// 判断垃圾桶有没有数据
let array = TrashDataManager.getCurrentMediaTypeTrashData(mediaType:TrashTypeEnum.video)
self.trashSubView.resourceCountlabel.text = String(array.count)
self.trashSubView.isHidden = array.count <= 0
self.deleteButtonView.isHidden = array.count > 0
self.videoDetailNavView?.startSelectButton.isHidden = array.count > 0
// 改变collection的位置
if array.count > 0 {
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - 78 - safeHeight)
}else{
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - safeHeight)
}
}
}
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated) super.viewWillAppear(animated)
// 重新设置下数据源 // 重新设置下数据源
...@@ -240,6 +318,7 @@ class HomeVideoDetailController :BaseViewController { ...@@ -240,6 +318,7 @@ class HomeVideoDetailController :BaseViewController {
self.collectionView.reloadData() self.collectionView.reloadData()
} }
} }
addTrashView()
} }
func showTipsVC(){ func showTipsVC(){
...@@ -294,15 +373,6 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -294,15 +373,6 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
}else{ }else{
self.selectedModel.removeAll { $0.localIdentifier == self.resourceData[order].localIdentifier } self.selectedModel.removeAll { $0.localIdentifier == self.resourceData[order].localIdentifier }
} }
DispatchQueue.main.async {
if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal)
}
}
} }
cell.cellCallBack = {[weak self] ident,order in cell.cellCallBack = {[weak self] ident,order in
guard let self else {return} guard let self else {return}
...@@ -310,8 +380,59 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -310,8 +380,59 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
// 获取视频的图片 // 获取视频的图片
PhotoAndVideoMananger.mananger.getVideoImageByIdent(ident: ident) { image in PhotoAndVideoMananger.mananger.getVideoImageByIdent(ident: ident) { image in
// 点击之后跳转详情页面 // 点击之后跳转详情页面
let vc = PhotoRemoveViewController(data: self.resourceData,currentIndex: indexPath.row,mediaType: .video) if self.videoDetailNavView?.startSelectButton.isSelected == false {
self.navigationController?.pushViewController(vc, animated: true) let vc = PhotoRemoveViewController(data: self.resourceData,currentIndex: indexPath.row,mediaType: .video)
self.navigationController?.pushViewController(vc, animated: true)
}else {
let vc = PMShowImgVideoController()
vc.state = .similarVideos
vc.currentIdx = 0
let dataSource = ImageSeletedCollectionItem()
dataSource.isSeleted = cell.choose
dataSource.id = ident
dataSource.image = image
// 表示这个是视频
vc.homeDataSource = [dataSource]
vc.backOrgPageCallBack = {index,data in
if let data = data{
if let item = data.first{
if let selected = item.isSeleted {
if let index = index {
if selected == true {
self.selectedModel.append(self.resourceData[index.row])
}else {
self.selectedModel.removeAll(where: {$0.localIdentifier == self.resourceData[index.row].localIdentifier})
}
DispatchQueue.main.async {
if let tempCell = collectionView.cellForItem(at: index) as? HomePhotosDetailCollectionCell {
tempCell.choose = selected
}
}
}
}
}
}
}
vc.getVideoURLFromLocalIdentifier(localIdentifier: ident.localIdentifier) { url, error in
if url != nil{
DispatchQueue.main.async {
vc.url = url
self.navigationController?.pushViewController(vc, animated: true)
}
}else{
let alert = UIAlertController(title: nil, message: "ICloud video cannot be viewed", preferredStyle: .alert)
self.present(alert, animated: true, completion: nil)
// 2 秒后关闭弹窗
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
alert.dismiss(animated: true, completion: nil)
}
}
}
self.navigationController?.pushViewController(vc, animated: true)
}
} errorHandler: { } errorHandler: {
DispatchQueue.main.async { DispatchQueue.main.async {
let alert = UIAlertController(title: nil, message: "Get Video image failure", preferredStyle: .alert) let alert = UIAlertController(title: nil, message: "Get Video image failure", preferredStyle: .alert)
...@@ -402,7 +523,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -402,7 +523,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
} }
@objc func deleteButtonAction(){ func deleteButtonAction(){
if selectedModel.count <= 0 { if selectedModel.count <= 0 {
return return
...@@ -545,7 +666,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -545,7 +666,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
SystemCommentManager.showCommentPage() SystemCommentManager.showCommentPage()
if isAfterAdv == false { if isAfterAdv == false {
self.updateFreeTimes() self.updateFreeTimes()
} }
self.showDeleteSuccess(fileCount: self.selectedModel.count, fileSize: fileSize) self.showDeleteSuccess(fileCount: self.selectedModel.count, fileSize: fileSize)
// 移除当前总数据源的数据 // 移除当前总数据源的数据
...@@ -582,15 +703,16 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -582,15 +703,16 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
self.defaultTipLabel.isHidden = false self.defaultTipLabel.isHidden = false
self.currentHeaderView?.btnView.isHidden = true self.currentHeaderView?.btnView.isHidden = true
self.videoDetailNavView?.startSelectButton.isHidden = true self.videoDetailNavView?.startSelectButton.isHidden = true
self.deleteButton.isHidden = true self.deleteButtonView.deleteButton.isHidden = true
}else{ }else{
self.defaultImageView.isHidden = true self.defaultImageView.isHidden = true
self.defaultTipLabel.isHidden = true self.defaultTipLabel.isHidden = true
self.currentHeaderView?.btnView.isHidden = false self.currentHeaderView?.btnView.isHidden = false
self.videoDetailNavView?.startSelectButton.isHidden = false self.videoDetailNavView?.startSelectButton.isHidden = false
self.deleteButton.isHidden = false self.deleteButtonView.deleteButton.isHidden = false
} }
} }
self.addTrashView()
} }
} }
...@@ -608,8 +730,8 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -608,8 +730,8 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
// 更新页面 // 更新页面
DispatchQueue.main.async { DispatchQueue.main.async {
self.selectedModel.removeAll() self.selectedModel.removeAll()
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1) self.deleteButtonView.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
if self.currentHeaderView != nil { if self.currentHeaderView != nil {
self.currentHeaderView?.sizeLabel.text = "\(self.resourceData.count) Videos" self.currentHeaderView?.sizeLabel.text = "\(self.resourceData.count) Videos"
......
//
// 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")
}
}
...@@ -44,6 +44,7 @@ class HomeInfoView :UIView { ...@@ -44,6 +44,7 @@ class HomeInfoView :UIView {
lazy var headerView:HomeInfoTitleView = { lazy var headerView:HomeInfoTitleView = {
let sview:HomeInfoTitleView = HomeInfoTitleView(frame: CGRect(x: 0, y: 0, width: width, height: 84)) let sview:HomeInfoTitleView = HomeInfoTitleView(frame: CGRect(x: 0, y: 0, width: width, height: 84))
sview.titleLabel.text = self.titleText sview.titleLabel.text = self.titleText
sview.type = self.type
sview.filterButton.isHidden = self.type != .similar && self.type != .SimilarVideos sview.filterButton.isHidden = self.type != .similar && self.type != .SimilarVideos
return sview return sview
}() }()
...@@ -354,9 +355,19 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate { ...@@ -354,9 +355,19 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
guard let indexPath = tableView.indexPathsForVisibleRows?.first else { return } guard let indexPath = tableView.indexPathsForVisibleRows?.first else { return }
let nextRow = self.isDragEnd == true ? indexPath.row + 1 : indexPath.row + 2 // let nextRow = self.isDragEnd == true ? indexPath.row + 1 : indexPath.row + 2
let nextRow = indexPath.row + 2
let nextSection = indexPath.section 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 } guard nextRow < tableView.numberOfRows(inSection: nextSection) else { return }
...@@ -498,6 +509,8 @@ class HomeInfoTitleView:UIView { ...@@ -498,6 +509,8 @@ class HomeInfoTitleView:UIView {
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in} var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
var type : PhotsFileType?
lazy var titleLabel:UILabel = { lazy var titleLabel:UILabel = {
let sview:UILabel = UILabel() let sview:UILabel = UILabel()
...@@ -575,7 +588,12 @@ class HomeInfoTitleView:UIView { ...@@ -575,7 +588,12 @@ class HomeInfoTitleView:UIView {
let allNumberStr = "\(allNumber)" let allNumberStr = "\(allNumber)"
let seletedCountStr = "\(seletedCount)" 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: [ let attributedString2 = NSMutableAttributedString(string: fullText, attributes: [
......
...@@ -56,6 +56,7 @@ class PhotosRemoveBaseView: UIView { ...@@ -56,6 +56,7 @@ class PhotosRemoveBaseView: UIView {
self.imageView.isUserInteractionEnabled = true self.imageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer() let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(showDeatail)) tap.addTarget(self, action: #selector(showDeatail))
imageView.backgroundColor = .white
self.imageView.addGestureRecognizer(tap) self.imageView.addGestureRecognizer(tap)
} }
......
...@@ -9,6 +9,8 @@ import UIKit ...@@ -9,6 +9,8 @@ import UIKit
class TrashSubView: UIView { class TrashSubView: UIView {
var type : TrashTypeEnum?
var clearTashDataCallBack : ()->Void = {} var clearTashDataCallBack : ()->Void = {}
var presentTashDetailViewClickCallBack : ()->Void = {} var presentTashDetailViewClickCallBack : ()->Void = {}
...@@ -32,7 +34,7 @@ class TrashSubView: UIView { ...@@ -32,7 +34,7 @@ class TrashSubView: UIView {
let button = UIButton(type: .custom) let button = UIButton(type: .custom)
button.setImage(UIImage(named: "ic_delete_duplicates"), for: .normal) button.setImage(UIImage(named: "ic_delete_duplicates"), for: .normal)
button.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1) 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.setTitleColor(.white, for: .normal)
button.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .semibold) button.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
button.layer.cornerRadius = 19 button.layer.cornerRadius = 19
...@@ -43,6 +45,8 @@ class TrashSubView: UIView { ...@@ -43,6 +45,8 @@ class TrashSubView: UIView {
override init(frame: CGRect) { override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
self.addTopShadow()
// 给当前视图添加手势 // 给当前视图添加手势
addTapGestureToSelf() addTapGestureToSelf()
......
...@@ -146,14 +146,14 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate { ...@@ -146,14 +146,14 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate {
} }
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 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) { func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if component == 0 { if component == 0 {
selectedMonth = row selectedMonth = row
} else { } else {
selectedYear = years.reversed()[row] selectedYear = years[row]
} }
} }
......
...@@ -12,13 +12,13 @@ class TrashViewController: BaseViewController { ...@@ -12,13 +12,13 @@ class TrashViewController: BaseViewController {
var dissmisCallBack:()->Void = {} var dissmisCallBack:()->Void = {}
var source:[TrashTypeEnum] = [.video,.other,.shot,.chat] var source:[TrashTypeEnum] = [.video,.other,.shot]
var contentH:CGFloat = 0 var contentH:CGFloat = 0
var contentScrollView:UIScrollView! var contentScrollView:UIScrollView!
var delBtn:UIButton! var delBtn:UIButton!
var currentType:TrashTypeEnum = .other var currentType:TrashTypeEnum = .other
let pageCount = 4 // 总页数 let pageCount = 3 // 总页数
var currentPage = 1 { var currentPage = 1 {
didSet{ didSet{
self.setDelButtonUI() self.setDelButtonUI()
...@@ -61,7 +61,7 @@ class TrashViewController: BaseViewController { ...@@ -61,7 +61,7 @@ class TrashViewController: BaseViewController {
func configUI(){ func configUI(){
view.backgroundColor = .white view.backgroundColor = .white
contentScrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: ScreenW, height: contentH)) 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.isPagingEnabled = true
contentScrollView.showsHorizontalScrollIndicator = false contentScrollView.showsHorizontalScrollIndicator = false
contentScrollView.showsVerticalScrollIndicator = false contentScrollView.showsVerticalScrollIndicator = false
...@@ -98,13 +98,11 @@ class TrashViewController: BaseViewController { ...@@ -98,13 +98,11 @@ class TrashViewController: BaseViewController {
contentScrollView.addSubview(videoView) contentScrollView.addSubview(videoView)
contentScrollView.addSubview(otherView) contentScrollView.addSubview(otherView)
contentScrollView.addSubview(shotView) contentScrollView.addSubview(shotView)
contentScrollView.addSubview(chatView)
videoView.deleteButton = delBtn videoView.deleteButton = delBtn
otherView.deleteButton = delBtn otherView.deleteButton = delBtn
shotView.deleteButton = delBtn shotView.deleteButton = delBtn
chatView.deleteButton = delBtn
} }
override func viewWillLayoutSubviews() { override func viewWillLayoutSubviews() {
...@@ -114,11 +112,10 @@ class TrashViewController: BaseViewController { ...@@ -114,11 +112,10 @@ class TrashViewController: BaseViewController {
let viewHeight = self.view.bounds.height let viewHeight = self.view.bounds.height
contentH = viewHeight - 108 contentH = viewHeight - 108
contentScrollView.frame = CGRect(x: 0, y: 34, width: viewWidth, height: contentH) 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) videoView.frame = CGRect(x: 0, y: 0, width: viewWidth, height: contentH)
otherView.frame = CGRect(x: viewWidth, 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) 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 = { lazy var videoView:TrashContenView = {
...@@ -139,54 +136,8 @@ class TrashViewController: BaseViewController { ...@@ -139,54 +136,8 @@ class TrashViewController: BaseViewController {
return shotView 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{ extension TrashViewController:UIScrollViewDelegate{
func scrollViewDidScroll(_ scrollView: UIScrollView){ func scrollViewDidScroll(_ scrollView: UIScrollView){
...@@ -233,9 +184,6 @@ extension TrashViewController:UIScrollViewDelegate{ ...@@ -233,9 +184,6 @@ extension TrashViewController:UIScrollViewDelegate{
if self.currentPage == 3 { if self.currentPage == 3 {
return (TrashTypeEnum.shot,self.shotView) return (TrashTypeEnum.shot,self.shotView)
} }
if self.currentPage == 4 {
return (TrashTypeEnum.chat,self.chatView)
}
return (TrashTypeEnum.video,self.videoView) return (TrashTypeEnum.video,self.videoView)
} }
......
...@@ -11,7 +11,6 @@ enum TrashTypeEnum : String, CaseIterable{ ...@@ -11,7 +11,6 @@ enum TrashTypeEnum : String, CaseIterable{
case video = "Video" case video = "Video"
case other = "Other" case other = "Other"
case shot = "Screenshot" case shot = "Screenshot"
case chat = "Chat"
var dbType:Int{ var dbType:Int{
switch self { switch self {
...@@ -21,8 +20,6 @@ enum TrashTypeEnum : String, CaseIterable{ ...@@ -21,8 +20,6 @@ enum TrashTypeEnum : String, CaseIterable{
return 1 return 1
case .shot: case .shot:
return 2 return 2
case .chat:
return 3
} }
} }
} }
......
...@@ -39,8 +39,6 @@ class TrashContenTitleCell: UICollectionViewCell { ...@@ -39,8 +39,6 @@ class TrashContenTitleCell: UICollectionViewCell {
scrollLine.frame = lineTwo.frame scrollLine.frame = lineTwo.frame
case .shot: case .shot:
scrollLine.frame = lineThree.frame scrollLine.frame = lineThree.frame
case .chat:
scrollLine.frame = lineFour.frame
} }
} }
} }
...@@ -130,17 +128,7 @@ class TrashContenTitleCell: UICollectionViewCell { ...@@ -130,17 +128,7 @@ class TrashContenTitleCell: UICollectionViewCell {
weakSelf.scrollLine.frame = weakSelf.lineTwo.frame 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 { ...@@ -29,7 +29,7 @@ class TrashContenView: UIView {
var deleteButton : UIButton? var deleteButton : UIButton?
var scrollLine:UIView! var scrollLine:UIView!
let lineW:CGFloat = (ScreenW - 62) / 4.0 let lineW:CGFloat = (ScreenW - 62) / 3.0
var dataSource:[AssetModel] = [] { var dataSource:[AssetModel] = [] {
didSet{ didSet{
...@@ -48,11 +48,6 @@ class TrashContenView: UIView { ...@@ -48,11 +48,6 @@ class TrashContenView: UIView {
} }
func getData(){ 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() collectionView.reloadData()
} }
...@@ -81,7 +76,6 @@ class TrashContenView: UIView { ...@@ -81,7 +76,6 @@ class TrashContenView: UIView {
collectionView.backgroundColor = UIColor.colorWithHex(hexStr: "#F2F6FC") collectionView.backgroundColor = UIColor.colorWithHex(hexStr: "#F2F6FC")
collectionView.dataSource = self collectionView.dataSource = self
collectionView.register(UINib(nibName: "TrashContenAssetCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenAssetCell") collectionView.register(UINib(nibName: "TrashContenAssetCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenAssetCell")
// collectionView.register(UINib(nibName: "TrashContenTitleCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenTitleCell")
addSubview(collectionView) addSubview(collectionView)
...@@ -134,14 +128,9 @@ class TrashContenView: UIView { ...@@ -134,14 +128,9 @@ class TrashContenView: UIView {
lineThree.backgroundColor = UIColor.colorWithHex(hexStr: "#E5E5E5") lineThree.backgroundColor = UIColor.colorWithHex(hexStr: "#E5E5E5")
topView.addSubview(lineThree) 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) lineOne.frame = CGRect(x: 16, y: 62, width: lineW, height: 6)
lineTwo.frame = CGRect(x: 10+lineOne.rightX, 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) 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() scrollLine = UIView()
...@@ -218,23 +207,6 @@ class TrashContenView: UIView { ...@@ -218,23 +207,6 @@ class TrashContenView: UIView {
}else{ }else{
weakSelf.scrollLine.frame = weakSelf.lineThree.frame 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 { ...@@ -245,8 +217,6 @@ class TrashContenView: UIView {
lineOne.cornerCut(radius: 2, corner: .allCorners) lineOne.cornerCut(radius: 2, corner: .allCorners)
lineTwo.cornerCut(radius: 2, corner: .allCorners) lineTwo.cornerCut(radius: 2, corner: .allCorners)
lineThree.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{ var trashType:TrashTypeEnum = .video{
...@@ -258,8 +228,6 @@ class TrashContenView: UIView { ...@@ -258,8 +228,6 @@ class TrashContenView: UIView {
scrollLine.frame = lineTwo.frame scrollLine.frame = lineTwo.frame
case .shot: case .shot:
scrollLine.frame = lineThree.frame scrollLine.frame = lineThree.frame
case .chat:
scrollLine.frame = lineFour.frame
} }
getData() getData()
} }
......
...@@ -103,8 +103,6 @@ class TrashDefaultView: UIView { ...@@ -103,8 +103,6 @@ class TrashDefaultView: UIView {
case .other,.shot: case .other,.shot:
jumpToPhotosDetailPage(type: type) jumpToPhotosDetailPage(type: type)
break break
case .chat:
break
} }
} }
} }
...@@ -113,14 +111,6 @@ class TrashDefaultView: UIView { ...@@ -113,14 +111,6 @@ class TrashDefaultView: UIView {
self.responderViewController()?.dismiss(animated: true, completion: { self.responderViewController()?.dismiss(animated: true, completion: {
NotificationCenter.default.post(name: TrashDefaultView.jumpToPhotosDetailPageName, object: nil,userInfo: ["type":self.mediaType?.rawValue ?? ""]) 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){ func jumpToVideoDetailPage(type: TrashTypeEnum){
self.responderViewController()?.dismiss(animated: true, completion: { 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