Commit 18dcf1a5 authored by yqz's avatar yqz

Merge branch 'dev_zhaoqian' into yQz0507

* dev_zhaoqian:
  【优化】部分图表替换
  【优化】选择框时间选择记住时间
  【优化】修复bug
  【新增】列表页垃圾桶

# Conflicts:
#	PhoneManager/Class/Page/Secret/PMShowImgVideoController.swift
parents 6e9fa4c3 ab524572
{
"images" : [
{
"filename" : "Frame.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Frame@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Frame@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"filename" : "Frame.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Frame@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Frame@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"filename" : "Frame.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Frame@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Frame@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"filename" : "Frame.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Frame@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Frame@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"filename" : "Frame.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Frame@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Frame@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"filename" : "Frame_1318.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Frame_1318@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Frame_1318@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"filename" : "重复项说明-icon-未选中.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "重复项说明-icon-未选中@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "重复项说明-icon-未选中@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"filename" : "重复项说明-icon-选中.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "重复项说明-icon-选中@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "重复项说明-icon-选中@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"filename" : "重复项说明-icon-选中.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "重复项说明-icon-选中@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "重复项说明-icon-选中@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
...@@ -370,8 +370,6 @@ class CompressCompletedViewController : BaseViewController{ ...@@ -370,8 +370,6 @@ class CompressCompletedViewController : BaseViewController{
// 移除VC中的数据 // 移除VC中的数据
let compressVC = self.navigationController?.viewControllers.first(where: { $0 is CompressController }) as! CompressController as CompressController let compressVC = self.navigationController?.viewControllers.first(where: { $0 is CompressController }) as! CompressController as CompressController
compressVC.resourceData.removeAll { $0.localIdentifier == flag } compressVC.resourceData.removeAll { $0.localIdentifier == flag }
// 移除单利中的数据
Singleton.shared.resourceModel.removeAll{ $0.localIdentifier == flag }
} }
} }
......
...@@ -117,21 +117,9 @@ class CompressController : BaseViewController { ...@@ -117,21 +117,9 @@ class CompressController : BaseViewController {
} }
self.resourceData.removeAll() self.resourceData.removeAll()
let datas = Singleton.shared.resourceModel
if datas.count > 0 {
// 这里需要重新排序下
self.resourceData = datas
self.sortByType(sortType: self.currentSort)
}else{
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 CompressViewModel().getAllPhotosToAssets(sortType: self.currentSort, assetType: self.currentResourceType) { [weak self] models in
guard let self else {return} guard let self else {return}
self.resourceData = models self.resourceData = models
Singleton.shared.resourceModel = self.resourceData
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
PMLoadingHUD.share.disMiss()
}
}
} }
} }
...@@ -231,10 +219,16 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo ...@@ -231,10 +219,16 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if kind == UICollectionView.elementKindSectionHeader { if kind == UICollectionView.elementKindSectionHeader {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "CompressCustomHeaderView", for: indexPath) as! CompressCustomHeaderView let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "CompressCustomHeaderView", for: indexPath) as! CompressCustomHeaderView
header.sortViewSubmitCallBack = { [weak self] fileterModel in header.sortViewSubmitCallBack = { [weak self] filterModel in
guard let self else {return} guard let self else {return}
self.currentSort = fileterModel.sortType // 重新获取数据,过滤数据
self.sortByType(sortType: self.currentSort) self.currentSort = filterModel.sortType
CompressViewModel().getAllPhotosToAssets(sortType: self.currentSort, assetType: self.currentResourceType) { [weak self] models in
guard let self else {return}
// 过滤数据
let tempData = self.filterDataByDate(orgModels: models , startDate: filterModel.startDate, endDate: filterModel.endDate)
self.resourceData = tempData
}
} }
header.changeView.callBack = {[weak self] flag in header.changeView.callBack = {[weak self] flag in
guard let self else {return} guard let self else {return}
...@@ -247,13 +241,9 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo ...@@ -247,13 +241,9 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
if self.currentResourceType == .compressPhoto { if self.currentResourceType == .compressPhoto {
self.getViewData() self.getViewData()
}else{ }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 CompressViewModel().getAllPhotosToAssets(sortType: self.currentSort, assetType: flag) { [weak self] models in
guard let self else {return} guard let self else {return}
self.resourceData = models self.resourceData = models
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
PMLoadingHUD.share.disMiss()
}
} }
} }
} }
...@@ -271,6 +261,17 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo ...@@ -271,6 +261,17 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
} }
} }
private func filterDataByDate(orgModels : [AssetModel], startDate:Date? ,endDate : Date?)->[AssetModel]{
var array = orgModels
if startDate != nil {
array = array.filter({$0.createDate >= startDate!})
}
if endDate != nil {
array = array.filter({$0.createDate <= endDate!})
}
return array
}
func sortByType(sortType:ResouceSortType){ func sortByType(sortType:ResouceSortType){
switch sortType { switch sortType {
case .largest: case .largest:
......
...@@ -9,6 +9,8 @@ import Foundation ...@@ -9,6 +9,8 @@ import Foundation
class CompressCustomHeaderView: UICollectionReusableView{ class CompressCustomHeaderView: UICollectionReusableView{
var filterBoxModel : ResourceFilterBoxModel?
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in} var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
var modeData = [AssetModel]() { var modeData = [AssetModel]() {
...@@ -169,12 +171,15 @@ class CompressCustomHeaderView: UICollectionReusableView{ ...@@ -169,12 +171,15 @@ class CompressCustomHeaderView: UICollectionReusableView{
@objc func filterButtonAction(){ @objc func filterButtonAction(){
if let cWindow = cWindow { if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds) // 这里将原来的数据传递过去
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds,startDate: self.filterBoxModel?.startDate,endDate: self.filterBoxModel?.endDate,sortType: self.filterBoxModel?.sortType)
// 添加毛玻璃效果 // 添加毛玻璃效果
cWindow.showBlur() cWindow.showBlur()
cWindow.addSubview(filterView) cWindow.addSubview(filterView)
filterView.submitCallBack = {model in filterView.submitCallBack = {model in
self.filterBoxModel = model
DispatchQueue.main.async { DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal) self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
} }
......
...@@ -68,45 +68,13 @@ class CompressViewModel{ ...@@ -68,45 +68,13 @@ class CompressViewModel{
/// 获取相册所有图片 /// 获取相册所有图片
/// - Returns: 图片信息 /// - Returns: 图片信息
func getAllPhotosToAssets(sortType: ResouceSortType, assetType : CompressType,_ finished: @escaping Finished){ func getAllPhotosToAssets(sortType: ResouceSortType, assetType : CompressType,_ finished: @escaping Finished){
var models : [AssetModel] = [] var models : [AssetModel] = []
PhotoManager.shared.reloadTrashAndKeep()
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
var photosAssets : PHFetchResult<PHAsset>
if assetType == .compressPhoto { if assetType == .compressPhoto {
photosAssets = PHAsset.fetchAssets(with: .image, options: fetchOptions) models = PhotoManager.shared.filterOtherModels + PhotoManager.shared.filterScreenShotModels
}else{ }else {
photosAssets = PHAsset.fetchAssets(with: .video, options: fetchOptions) models = PhotoManager.shared.filterVideoModels
} }
// 获取到了所有图片的assets
let assetsArray = photosAssets.objects(at: IndexSet(0..<photosAssets.count))
let group = DispatchGroup()
var count = 0
for asset in assetsArray {
group.enter()
DispatchQueue.global().async {
// 图片大小
let resources = PHAssetResource.assetResources(for: asset)
var assetSize : Int = 0
for resource in resources {
if let fileSize = resource.value(forKey: "fileSize") as? Int64 {
assetSize += Int(fileSize)
}
}
let sizeInMB = assetSize
// 获取图片的日期
let creationDate = asset.creationDate!
// 获取图片的localIdentifier
let localIdentifier = asset.localIdentifier
let model = AssetModel.init(localIdentifier: localIdentifier, assetSize: Double(sizeInMB), createDate: creationDate)
models.append(model)
count = count + 1
group.leave()
if count == assetsArray.count {
// 默认按照文件大小排序 // 默认按照文件大小排序
if sortType == .largest { if sortType == .largest {
finished(models.sorted { $0.assetSize > $1.assetSize }) finished(models.sorted { $0.assetSize > $1.assetSize })
...@@ -117,10 +85,6 @@ class CompressViewModel{ ...@@ -117,10 +85,6 @@ class CompressViewModel{
}else{ }else{
finished(models.sorted { $0.createDate < $1.createDate }) finished(models.sorted { $0.createDate < $1.createDate })
} }
}
}
}
} }
......
...@@ -47,21 +47,21 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -47,21 +47,21 @@ class HomePhotosDetailViewController : BaseViewController {
self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
UIView.animate(withDuration: 0.1) { UIView.animate(withDuration: 0.1) {
// 更新约束 // 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight + 78) 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) self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height)
}else if self.selectedModel.count == 1{ }else if self.selectedModel.count == 1{
self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Photo", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Photo", for: .normal)
UIView.animate(withDuration: 0.1) { UIView.animate(withDuration: 0.1) {
// 更新约束 // 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight) self.deleteViewBottomConstraint?.update(offset: 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) 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{ }else{
self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Photos", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Photos", for: .normal)
UIView.animate(withDuration: 0.1) { UIView.animate(withDuration: 0.1) {
// 更新约束 // 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight) self.deleteViewBottomConstraint?.update(offset: 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) 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)
} }
...@@ -194,10 +194,10 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -194,10 +194,10 @@ class HomePhotosDetailViewController : BaseViewController {
self.view.addSubview(self.deleteButtonView) self.view.addSubview(self.deleteButtonView)
self.deleteButtonView.snp.makeConstraints { make in self.deleteButtonView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15) make.left.equalToSuperview()
make.right.equalToSuperview().offset(-15) make.right.equalToSuperview()
make.height.equalTo(78) make.height.equalTo(78 + safeHeight)
self.deleteViewBottomConstraint = make.bottom.equalToSuperview().offset(-safeHeight + 78).constraint self.deleteViewBottomConstraint = make.bottom.equalToSuperview().offset(safeHeight + 78).constraint
} }
self.view.addSubview(self.defaultImageView) self.view.addSubview(self.defaultImageView)
...@@ -224,8 +224,8 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -224,8 +224,8 @@ class HomePhotosDetailViewController : BaseViewController {
self.view.addSubview(self.trashSubView) self.view.addSubview(self.trashSubView)
self.trashSubView.snp.makeConstraints { make in self.trashSubView.snp.makeConstraints { make in
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
make.bottom.equalToSuperview().offset(-safeHeight) make.bottom.equalToSuperview().offset(0)
make.height.equalTo(78) make.height.equalTo(78 + safeHeight)
} }
// 判断垃圾桶有没有数据 // 判断垃圾桶有没有数据
let array = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: self.mediaType == PhotsFileType.Other ? TrashTypeEnum.other : TrashTypeEnum.shot) let array = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: self.mediaType == PhotsFileType.Other ? TrashTypeEnum.other : TrashTypeEnum.shot)
...@@ -238,7 +238,7 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -238,7 +238,7 @@ class HomePhotosDetailViewController : BaseViewController {
if array.count > 0 { 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) 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{ }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) self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height)
} }
} }
} }
...@@ -290,6 +290,9 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -290,6 +290,9 @@ class HomePhotosDetailViewController : BaseViewController {
let vc : TrashViewController = TrashViewController() let vc : TrashViewController = TrashViewController()
vc.currentPage = self.mediaType == PhotsFileType.Other ? 2 : 3 vc.currentPage = self.mediaType == PhotsFileType.Other ? 2 : 3
vc.dissmisCallBack = { vc.dissmisCallBack = {
self.getCurrentPageData {
self.collectionView.reloadData()
}
self.addTrashView() self.addTrashView()
} }
self.present(vc, animated: true) self.present(vc, animated: true)
...@@ -303,8 +306,13 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -303,8 +306,13 @@ class HomePhotosDetailViewController : BaseViewController {
self.addTrashView() self.addTrashView()
} }
} }
self.addListener()
} }
deinit {
NotificationCenter.default.removeObserver(self)
}
func showTipsVC(){ func showTipsVC(){
guard let mediaType = mediaType else{ guard let mediaType = mediaType else{
...@@ -409,6 +417,7 @@ class HomePhotosDetailViewController : BaseViewController { ...@@ -409,6 +417,7 @@ class HomePhotosDetailViewController : BaseViewController {
completed(cachedImage!) completed(cachedImage!)
} }
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: [model.localIdentifier], options: nil) let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: [model.localIdentifier], options: nil)
let assetsArray = fetchResult.objects(at: IndexSet(0..<fetchResult.count)) let assetsArray = fetchResult.objects(at: IndexSet(0..<fetchResult.count))
let options = PHImageRequestOptions() let options = PHImageRequestOptions()
...@@ -561,13 +570,13 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -561,13 +570,13 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
if kind == UICollectionView.elementKindSectionHeader { if kind == UICollectionView.elementKindSectionHeader {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "HomePhotosDetailCustomHeaderView", for: indexPath) as! HomePhotosDetailCustomHeaderView let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "HomePhotosDetailCustomHeaderView", for: indexPath) as! HomePhotosDetailCustomHeaderView
// 记录当前的 headerView // 记录当前的 headerView
header.countLabel.text = "\(self.resourceData.count) Photos" header.countLabel.attributedText = header.getAttrText(fullText: "\(self.resourceData.count) Photos")
header.modelTitlelabel.text = self.mediaType?.rawValue header.modelTitlelabel.text = self.mediaType?.rawValue
currentHeaderView = header currentHeaderView = header
header.sortViewSubmitCallBack = {[weak self] filterModel in header.sortViewSubmitCallBack = {[weak self] filterModel in
guard let self else {return} guard let self else {return}
PhotoManager.shared.reloadTrashAndKeep()
var dataS : [AssetModel] = [] var dataS : [AssetModel] = []
if self.mediaType == .Other{ if self.mediaType == .Other{
dataS = PhotoManager.shared.filterOtherModels dataS = PhotoManager.shared.filterOtherModels
...@@ -823,7 +832,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -823,7 +832,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
// 更新下头部数量 // 更新下头部数量
DispatchQueue.main.async { DispatchQueue.main.async {
if self.currentHeaderView != nil { if self.currentHeaderView != nil {
self.currentHeaderView?.countLabel.text = "\(self.resourceData.count) Photos" self.currentHeaderView?.countLabel.attributedText = self.currentHeaderView?.getAttrText(fullText: "\(self.resourceData.count) Photos")
} }
} }
...@@ -848,5 +857,26 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -848,5 +857,26 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
} }
private func addListener(){
NotificationCenter.default.addObserver(forName: TrashDefaultView.jumpToPhotosDetailPageName, object: nil, queue: .main) { [weak self] notification in
guard let self = self,
let type = notification.userInfo?["type"] as? String else { return }
if let targetVC = self.navigationController?.viewControllers.first(where: { $0 is HomeViewController }) as? HomeViewController {
self.navigationController?.popToViewController(targetVC, animated: false)
let vc:HomePhotosDetailViewController = HomePhotosDetailViewController(mediaType: type == "Other" ? PhotsFileType.Other : PhotsFileType.screenshots)
targetVC.navigationController?.pushViewController(vc, animated: true)
}
}
NotificationCenter.default.addObserver(forName: TrashDefaultView.jumpToVideosDetailPageName, object: nil, queue: .main) { [weak self] notification in
guard let self else {return}
if let targetVC = self.navigationController?.viewControllers.first(where: { $0 is HomeViewController }) as? HomeViewController {
self.navigationController?.popToViewController(targetVC, animated: false)
let vc:HomeVideoDetailController = HomeVideoDetailController()
targetVC.navigationController?.pushViewController(vc, animated: true)
}
}
}
} }
...@@ -40,21 +40,21 @@ class HomeVideoDetailController :BaseViewController { ...@@ -40,21 +40,21 @@ class HomeVideoDetailController :BaseViewController {
self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete", for: .normal)
UIView.animate(withDuration: 0.1) { UIView.animate(withDuration: 0.1) {
// 更新约束 // 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight + 78) 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) self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height)
} else if self.selectedModel.count == 1{ } else if self.selectedModel.count == 1{
self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Video", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Video", for: .normal)
UIView.animate(withDuration: 0.1) { UIView.animate(withDuration: 0.1) {
// 更新约束 // 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight) self.deleteViewBottomConstraint?.update(offset: 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) self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height - 78)
}else{ }else{
self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Videos", for: .normal) self.deleteButtonView.deleteButton.setTitle("Delete \(self.selectedModel.count) Videos", for: .normal)
UIView.animate(withDuration: 0.1) { UIView.animate(withDuration: 0.1) {
// 更新约束 // 更新约束
self.deleteViewBottomConstraint?.update(offset: -safeHeight) self.deleteViewBottomConstraint?.update(offset: 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) 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)
} }
...@@ -146,6 +146,10 @@ class HomeVideoDetailController :BaseViewController { ...@@ -146,6 +146,10 @@ class HomeVideoDetailController :BaseViewController {
completed() completed()
} }
deinit {
NotificationCenter.default.removeObserver(self)
}
// MARK: 数据操作 - 辅助方法 // MARK: 数据操作 - 辅助方法
/// 过滤垃圾桶数据 - 当前页面数据本身就是已经过滤了垃圾桶数据库的数据了,所以只需要过滤掉单利中的数据 /// 过滤垃圾桶数据 - 当前页面数据本身就是已经过滤了垃圾桶数据库的数据了,所以只需要过滤掉单利中的数据
...@@ -228,10 +232,10 @@ class HomeVideoDetailController :BaseViewController { ...@@ -228,10 +232,10 @@ class HomeVideoDetailController :BaseViewController {
self.view.addSubview(self.deleteButtonView) self.view.addSubview(self.deleteButtonView)
self.deleteButtonView.snp.makeConstraints { make in self.deleteButtonView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15) make.left.equalToSuperview()
make.right.equalToSuperview().offset(-15) make.right.equalToSuperview()
make.height.equalTo(78) make.height.equalTo(78 + safeHeight)
self.deleteViewBottomConstraint = make.bottom.equalToSuperview().offset(-safeHeight + 78).constraint 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
...@@ -269,6 +273,9 @@ class HomeVideoDetailController :BaseViewController { ...@@ -269,6 +273,9 @@ class HomeVideoDetailController :BaseViewController {
let vc : TrashViewController = TrashViewController() let vc : TrashViewController = TrashViewController()
vc.currentPage = 1 vc.currentPage = 1
vc.dissmisCallBack = { vc.dissmisCallBack = {
self.getCurrentPageData {
self.collectionView.reloadData()
}
self.addTrashView() self.addTrashView()
} }
self.present(vc, animated: true) self.present(vc, animated: true)
...@@ -282,6 +289,8 @@ class HomeVideoDetailController :BaseViewController { ...@@ -282,6 +289,8 @@ class HomeVideoDetailController :BaseViewController {
self.addTrashView() self.addTrashView()
} }
} }
self.addListener()
} }
/// 是否添加垃圾桶数据 /// 是否添加垃圾桶数据
...@@ -291,8 +300,8 @@ class HomeVideoDetailController :BaseViewController { ...@@ -291,8 +300,8 @@ class HomeVideoDetailController :BaseViewController {
self.view.addSubview(self.trashSubView) self.view.addSubview(self.trashSubView)
self.trashSubView.snp.makeConstraints { make in self.trashSubView.snp.makeConstraints { make in
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
make.bottom.equalToSuperview().offset(-safeHeight) make.bottom.equalToSuperview().offset(0)
make.height.equalTo(78) make.height.equalTo(78 + safeHeight)
} }
// 判断垃圾桶有没有数据 // 判断垃圾桶有没有数据
let array = TrashDataManager.getCurrentMediaTypeTrashData(mediaType:TrashTypeEnum.video) let array = TrashDataManager.getCurrentMediaTypeTrashData(mediaType:TrashTypeEnum.video)
...@@ -305,7 +314,7 @@ class HomeVideoDetailController :BaseViewController { ...@@ -305,7 +314,7 @@ class HomeVideoDetailController :BaseViewController {
if array.count > 0 { 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) 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{ }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) self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height)
} }
} }
} }
...@@ -385,6 +394,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -385,6 +394,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
self.navigationController?.pushViewController(vc, animated: true) self.navigationController?.pushViewController(vc, animated: true)
}else { }else {
let vc = PMShowImgVideoController() let vc = PMShowImgVideoController()
vc.oldPageIndexPath = indexPath
vc.state = .similarVideos vc.state = .similarVideos
vc.currentIdx = 0 vc.currentIdx = 0
let dataSource = ImageSeletedCollectionItem() let dataSource = ImageSeletedCollectionItem()
...@@ -429,8 +439,6 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -429,8 +439,6 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
} }
} }
} }
self.navigationController?.pushViewController(vc, animated: true)
} }
} errorHandler: { } errorHandler: {
...@@ -487,10 +495,10 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -487,10 +495,10 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
// 记录当前的 headerView // 记录当前的 headerView
currentHeaderView = header currentHeaderView = header
header.compressionTipView.reloadData() header.compressionTipView.reloadData()
header.sizeLabel.text = "\(self.resourceData.count) Videos" header.sizeLabel.attributedText = header.getAttrText(fullText: "\(self.resourceData.count) Videos")
header.sortViewSubmitCallBack = {[weak self] filterModel in header.sortViewSubmitCallBack = {[weak self] filterModel in
guard let self else {return} guard let self else {return}
PhotoManager.shared.reloadTrashAndKeep()
let dataS : [AssetModel] = PhotoManager.shared.filterVideoModels let dataS : [AssetModel] = PhotoManager.shared.filterVideoModels
let tempData = self.filterDataByDate(orgModels: dataS , startDate: filterModel.startDate, endDate: filterModel.endDate) let tempData = self.filterDataByDate(orgModels: dataS , startDate: filterModel.startDate, endDate: filterModel.endDate)
// 重新更新下数据源 // 重新更新下数据源
...@@ -751,7 +759,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -751,7 +759,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
self.deleteButtonView.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.attributedText = self.currentHeaderView?.getAttrText(fullText: "\(self.resourceData.count) Videos")
} }
UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: { UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
...@@ -779,4 +787,24 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -779,4 +787,24 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
} }
} }
private func addListener(){
NotificationCenter.default.addObserver(forName: TrashDefaultView.jumpToPhotosDetailPageName, object: nil, queue: .main) { [weak self] notification in
guard let self = self,
let type = notification.userInfo?["type"] as? String else { return }
if let targetVC = self.navigationController?.viewControllers.first(where: { $0 is HomeViewController }) as? HomeViewController {
self.navigationController?.popToViewController(targetVC, animated: false)
let vc:HomePhotosDetailViewController = HomePhotosDetailViewController(mediaType: type == "Other" ? PhotsFileType.Other : PhotsFileType.screenshots)
targetVC.navigationController?.pushViewController(vc, animated: true)
}
}
NotificationCenter.default.addObserver(forName: TrashDefaultView.jumpToVideosDetailPageName, object: nil, queue: .main) { [weak self] notification in
guard let self else {return}
if let targetVC = self.navigationController?.viewControllers.first(where: { $0 is HomeViewController }) as? HomeViewController {
self.navigationController?.popToViewController(targetVC, animated: false)
let vc:HomeVideoDetailController = HomeVideoDetailController()
targetVC.navigationController?.pushViewController(vc, animated: true)
}
}
}
} }
...@@ -26,8 +26,8 @@ class PhotoRemoveViewController: BaseViewController { ...@@ -26,8 +26,8 @@ class PhotoRemoveViewController: BaseViewController {
let formatter = DateFormatter() let formatter = DateFormatter()
lazy var navView : PhotoRemoveNavView = { lazy var navView : PhotoVideoDetailNavView = {
let view = PhotoRemoveNavView() let view = PhotoVideoDetailNavView()
return view return view
}() }()
...@@ -83,7 +83,7 @@ class PhotoRemoveViewController: BaseViewController { ...@@ -83,7 +83,7 @@ class PhotoRemoveViewController: BaseViewController {
formatter.dateStyle = .medium formatter.dateStyle = .medium
formatter.timeStyle = .none formatter.timeStyle = .none
if let type = self.mediaType { if let type = self.mediaType {
self.navView.mediaType = type self.navView.showType = type == .video ? .dateAndSizeNav : .dateTimeNav
} }
self.view.addSubview(self.navView) self.view.addSubview(self.navView)
self.navView.snp.makeConstraints { make in self.navView.snp.makeConstraints { make in
...@@ -95,8 +95,8 @@ class PhotoRemoveViewController: BaseViewController { ...@@ -95,8 +95,8 @@ class PhotoRemoveViewController: BaseViewController {
self.view.addSubview(self.trashSubView) self.view.addSubview(self.trashSubView)
self.trashSubView.snp.makeConstraints { make in self.trashSubView.snp.makeConstraints { make in
make.left.right.equalToSuperview() make.left.right.equalToSuperview()
self.bottomConstraint = make.bottom.equalToSuperview().offset(78).constraint self.bottomConstraint = make.bottom.equalToSuperview().offset(78 + safeHeight).constraint
make.height.equalTo(78) make.height.equalTo(78 + safeHeight)
} }
self.trashSubView.clearTashDataCallBack = {[weak self] in self.trashSubView.clearTashDataCallBack = {[weak self] in
...@@ -239,7 +239,7 @@ class PhotoRemoveViewController: BaseViewController { ...@@ -239,7 +239,7 @@ class PhotoRemoveViewController: BaseViewController {
self.trashSubView.isHidden = false self.trashSubView.isHidden = false
UIView.animate(withDuration: 0.1) { UIView.animate(withDuration: 0.1) {
// 更新约束 // 更新约束
self.bottomConstraint?.update(offset: -safeHeight) self.bottomConstraint?.update(offset: 0)
} }
} }
} }
...@@ -247,7 +247,7 @@ class PhotoRemoveViewController: BaseViewController { ...@@ -247,7 +247,7 @@ class PhotoRemoveViewController: BaseViewController {
DispatchQueue.main.async { DispatchQueue.main.async {
UIView.animate(withDuration: 0.1) { UIView.animate(withDuration: 0.1) {
// 更新约束 // 更新约束
self.bottomConstraint?.update(offset: -78) self.bottomConstraint?.update(offset: 78 + safeHeight)
}completion: { finished in }completion: { finished in
self.trashSubView.isHidden = true self.trashSubView.isHidden = true
} }
...@@ -552,16 +552,6 @@ class PhotoRemoveViewController: BaseViewController { ...@@ -552,16 +552,6 @@ class PhotoRemoveViewController: BaseViewController {
} }
} }
} }
@objc func popCurrentPage(){
}
deinit { deinit {
NotificationCenter.default.removeObserver(self) NotificationCenter.default.removeObserver(self)
} }
......
...@@ -9,6 +9,8 @@ import Foundation ...@@ -9,6 +9,8 @@ import Foundation
class DateSelectButtonView : UIView { class DateSelectButtonView : UIView {
var closeCallBack : ()->Void = {}
var type : PikerDateType? var type : PikerDateType?
lazy var dateButton : UIButton = { lazy var dateButton : UIButton = {
...@@ -54,6 +56,7 @@ class DateSelectButtonView : UIView { ...@@ -54,6 +56,7 @@ class DateSelectButtonView : UIView {
@objc func closeButtonAction(){ @objc func closeButtonAction(){
reSetButtonTitle() reSetButtonTitle()
self.closeCallBack()
} }
func reSetButtonTitle() { func reSetButtonTitle() {
......
...@@ -117,6 +117,7 @@ class HomeInfoView :UIView { ...@@ -117,6 +117,7 @@ class HomeInfoView :UIView {
self.headerView.sortViewSubmitCallBack = {[weak self]filterModel in self.headerView.sortViewSubmitCallBack = {[weak self]filterModel in
PhotoManager.shared.reloadTrashAndKeep()
guard let self else {return} guard let self else {return}
var dataS : [[AssetModel]] = [] var dataS : [[AssetModel]] = []
if self.type == .SimilarVideos{ if self.type == .SimilarVideos{
...@@ -497,6 +498,8 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate { ...@@ -497,6 +498,8 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
class HomeInfoTitleView:UIView { class HomeInfoTitleView:UIView {
var filterBoxModel : ResourceFilterBoxModel?
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in} var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
var type : PhotsFileType? var type : PhotsFileType?
...@@ -610,12 +613,13 @@ class HomeInfoTitleView:UIView { ...@@ -610,12 +613,13 @@ class HomeInfoTitleView:UIView {
@objc func filterButtonAction(){ @objc func filterButtonAction(){
if let cWindow = cWindow { if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds) let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds,startDate: self.filterBoxModel?.startDate,endDate: self.filterBoxModel?.endDate,sortType: self.filterBoxModel?.sortType)
// 添加毛玻璃效果 // 添加毛玻璃效果
cWindow.showBlur() cWindow.showBlur()
cWindow.addSubview(filterView) cWindow.addSubview(filterView)
filterView.submitCallBack = {model in filterView.submitCallBack = {model in
self.filterBoxModel = model
DispatchQueue.main.async { DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal) self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
} }
......
...@@ -9,6 +9,8 @@ import Foundation ...@@ -9,6 +9,8 @@ import Foundation
class HomePhotosDetailCustomHeaderView : UICollectionReusableView { class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
var filterBoxModel : ResourceFilterBoxModel?
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in} var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
lazy var modelTitlelabel :UILabel = { lazy var modelTitlelabel :UILabel = {
...@@ -38,13 +40,21 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView { ...@@ -38,13 +40,21 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
lazy var countLabel :UILabel = { lazy var countLabel :UILabel = {
let label = UILabel() let label = UILabel()
label.text = "0 Photos"
label.textAlignment = .left label.textAlignment = .left
label.textColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1) label.textColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
label.font = UIFont.systemFont(ofSize: 14, weight: .regular) label.font = UIFont.systemFont(ofSize: 14, weight: .regular)
label.attributedText = self.getAttrText(fullText: "0 Photos")
return label return label
}() }()
func getAttrText(fullText:String)->NSMutableAttributedString{
let attributedString = NSMutableAttributedString(string: fullText)
let range = (fullText as NSString).range(of: "Photos")
attributedString.addAttribute(.foregroundColor, value: UIColor(red: 0.6, green: 0.6, blue: 0.6,alpha:1), range: range)
return attributedString
}
private func setUI(){ private func setUI(){
self.addSubview(self.modelTitlelabel) self.addSubview(self.modelTitlelabel)
...@@ -86,12 +96,13 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView { ...@@ -86,12 +96,13 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
@objc func filterButtonAction(){ @objc func filterButtonAction(){
if let cWindow = cWindow { if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds) let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds,startDate: self.filterBoxModel?.startDate,endDate: self.filterBoxModel?.endDate,sortType: self.filterBoxModel?.sortType)
// 添加毛玻璃效果 // 添加毛玻璃效果
cWindow.showBlur() cWindow.showBlur()
cWindow.addSubview(filterView) cWindow.addSubview(filterView)
filterView.submitCallBack = {model in filterView.submitCallBack = {model in
self.filterBoxModel = model
DispatchQueue.main.async { DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal) self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
} }
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
import Foundation import Foundation
class HomeVideoDetailCustomHeaderView : UICollectionReusableView { class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
var filterBoxModel : ResourceFilterBoxModel?
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in} var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
lazy var modelTitlelabel :UILabel = { lazy var modelTitlelabel :UILabel = {
...@@ -34,14 +36,23 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView { ...@@ -34,14 +36,23 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
}() }()
lazy var sizeLabel :UILabel = { lazy var sizeLabel :UILabel = {
let label = UILabel() let label = UILabel()
label.text = "0 Videos"
label.textAlignment = .left label.textAlignment = .left
label.textColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1) label.textColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
label.font = UIFont.systemFont(ofSize: 14, weight: .regular) label.font = UIFont.systemFont(ofSize: 14, weight: .regular)
label.attributedText = self.getAttrText(fullText: "0 Videos")
return label return label
}() }()
func getAttrText(fullText:String)->NSMutableAttributedString{
let attributedString = NSMutableAttributedString(string: fullText)
let range = (fullText as NSString).range(of: "Videos")
attributedString.addAttribute(.foregroundColor, value: UIColor(red: 0.6, green: 0.6, blue: 0.6,alpha:1), range: range)
return attributedString
}
private func setUI(){ private func setUI(){
self.addSubview(self.modelTitlelabel) self.addSubview(self.modelTitlelabel)
...@@ -99,12 +110,13 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView { ...@@ -99,12 +110,13 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
@objc func filterButtonAction(){ @objc func filterButtonAction(){
if let cWindow = cWindow { if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds) let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds,startDate: self.filterBoxModel?.startDate,endDate: self.filterBoxModel?.endDate,sortType: self.filterBoxModel?.sortType)
// 添加毛玻璃效果 // 添加毛玻璃效果
cWindow.showBlur() cWindow.showBlur()
cWindow.addSubview(filterView) cWindow.addSubview(filterView)
filterView.submitCallBack = {model in filterView.submitCallBack = {model in
self.filterBoxModel = model
DispatchQueue.main.async { DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal) self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
} }
......
...@@ -111,10 +111,6 @@ class PhotoDataManager { ...@@ -111,10 +111,6 @@ class PhotoDataManager {
let dataUpdated = Notification.Name("DataUpdatedNotification") let dataUpdated = Notification.Name("DataUpdatedNotification")
NotificationCenter.default.post(name: dataUpdated, object: nil, userInfo: nil) NotificationCenter.default.post(name: dataUpdated, object: nil, userInfo: nil)
}) })
// 将单利中的数据也删除
for item in data {
Singleton.shared.resourceModel.removeAll{ $0.localIdentifier == item.localIdentifier }
}
} }
// 从文件读取 // 从文件读取
......
...@@ -8,7 +8,12 @@ ...@@ -8,7 +8,12 @@
import UIKit import UIKit
import SnapKit import SnapKit
class PhotoRemoveNavView: UIView { enum PhotoVideoDetailNavType {
case dateTimeNav
case dateAndSizeNav
}
class PhotoVideoDetailNavView: UIView {
public var backButton:UIButton! public var backButton:UIButton!
...@@ -22,11 +27,11 @@ class PhotoRemoveNavView: UIView { ...@@ -22,11 +27,11 @@ class PhotoRemoveNavView: UIView {
var reSetCallBack:()->Void = {} var reSetCallBack:()->Void = {}
public var mediaType : TrashTypeEnum = .shot { public var showType : PhotoVideoDetailNavType = .dateTimeNav {
didSet{ didSet{
if mediaType == .video { if showType == .dateAndSizeNav {
self.sizeLbel.isHidden = false self.sizeLbel.isHidden = false
self.topConstraint?.update(offset: 22 + statusBarHeight) self.topConstraint?.update(offset: 19 + statusBarHeight)
}else{ }else{
self.sizeLbel.isHidden = true self.sizeLbel.isHidden = true
self.topConstraint?.update(offset: 6 + statusBarHeight) self.topConstraint?.update(offset: 6 + statusBarHeight)
...@@ -68,7 +73,7 @@ class PhotoRemoveNavView: UIView { ...@@ -68,7 +73,7 @@ class PhotoRemoveNavView: UIView {
sizeLbel.snp.makeConstraints { make in sizeLbel.snp.makeConstraints { make in
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(statusBarHeight) make.top.equalToSuperview().offset(statusBarHeight - 3)
make.height.equalTo(22) make.height.equalTo(22)
} }
......
...@@ -35,7 +35,7 @@ class ResourceFilterBoxView : UIView { ...@@ -35,7 +35,7 @@ class ResourceFilterBoxView : UIView {
var startDate : Date? var startDate : Date?
var endDate : Date? var endDate : Date?
var currentIndex: Int = 0 var currentSortType: ResouceSortType = .largest
let tableData: [String] = ["The largest", "The smallest", "The latest", "The oldest"] let tableData: [String] = ["The largest", "The smallest", "The latest", "The oldest"]
var callBack : callBack<Any> = {sortType in} var callBack : callBack<Any> = {sortType in}
...@@ -112,12 +112,75 @@ class ResourceFilterBoxView : UIView { ...@@ -112,12 +112,75 @@ class ResourceFilterBoxView : UIView {
return view return view
}() }()
override init(frame: CGRect) { init(frame: CGRect,startDate : Date?, endDate :Date?,sortType: ResouceSortType?) {
super.init(frame: frame) super.init(frame: frame)
self.startDate = startDate
self.endDate = endDate
if let sortType = sortType {
self.currentSortType = sortType
}
addViews() addViews()
setUpUI() setUpUI()
self.setDefaultDataInPage()
}
private func setDefaultDataInPage(){
// 设置按钮
resetByType(date: self.startDate, type: PikerDateType.start)
resetByType(date: self.endDate, type: PikerDateType.end)
// 设置选择框
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
/// 设置当前年月
/// - Parameters:
/// - date: 时间
/// - type: 类型
private func resetByType(date:Date?,type:PikerDateType){
if let date = date {
let timeNumber = getYearAndMonthFromDate(currentDate: date)
if let year = timeNumber.0{
if let month = timeNumber.1 {
self.resetDateStringFromYearAndMonth(year: year, month: month, type: type)
}
}
}
}
/// 通过时间获取年月
/// - Parameter currentDate: 当前时间
/// - Returns: 年和月
private func getYearAndMonthFromDate(currentDate : Date)->(Int?,Int?){
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month], from: currentDate)
return (components.year,components.month)
} }
/// 设置按钮显示
/// - Parameters:
/// - year: 年
/// - month: 月
/// - type: 按钮类型
func resetDateStringFromYearAndMonth(year: Int, month: Int ,type: PikerDateType){
DispatchQueue.main.async {
if type == .start {
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
self.endDate = self.lastDayOfMonth(year: year, month: month)
}
}
}
func getMonthEn(month: Int) -> String { func getMonthEn(month: Int) -> String {
// 检查输入是否在有效范围内(1-12) // 检查输入是否在有效范围内(1-12)
guard (1...12).contains(month) else { guard (1...12).contains(month) else {
...@@ -149,6 +212,13 @@ class ResourceFilterBoxView : UIView { ...@@ -149,6 +212,13 @@ class ResourceFilterBoxView : UIView {
self.selectedView.addSubview(self.tableView) self.selectedView.addSubview(self.tableView)
self.selectedView.addSubview(self.applyButton) self.selectedView.addSubview(self.applyButton)
self.startDateButton.closeCallBack = {
self.startDate = nil
}
self.endDateButton.closeCallBack = {
self.endDate = nil
}
self.startDateButton.reSetButtonTitle() self.startDateButton.reSetButtonTitle()
self.endDateButton.reSetButtonTitle() self.endDateButton.reSetButtonTitle()
...@@ -219,27 +289,10 @@ class ResourceFilterBoxView : UIView { ...@@ -219,27 +289,10 @@ class ResourceFilterBoxView : UIView {
self.removeFromSuperview() self.removeFromSuperview()
cWindow?.hideBlur() cWindow?.hideBlur()
self.submitCallBack(ResourceFilterBoxModel.init(startDate: self.startDate, endDate: self.endDate, sortType: getSortTypeByTag(tag:self.currentIndex))) self.submitCallBack(ResourceFilterBoxModel.init(startDate: self.startDate, endDate: self.endDate, sortType: self.currentSortType))
// 开始排序 // 开始排序
} }
func getSortTypeByTag(tag : Int) -> ResouceSortType{
var tempType : ResouceSortType = .largest
switch self.currentIndex {
case 0:
tempType = .largest
case 1:
tempType = .smallest
case 2:
tempType = .latest
case 3:
tempType = .oldest
default:
break
}
return tempType
}
func dateFrom(year: Int, month: Int) -> Date? { func dateFrom(year: Int, month: Int) -> Date? {
var components = DateComponents() var components = DateComponents()
components.year = year components.year = year
...@@ -320,17 +373,7 @@ class ResourceFilterBoxView : UIView { ...@@ -320,17 +373,7 @@ class ResourceFilterBoxView : UIView {
self.dismissDatePicker() self.dismissDatePicker()
} }
self.datePicker?.onConfirm = {type,year,month in self.datePicker?.onConfirm = {type,year,month in
DispatchQueue.main.async { self.resetDateStringFromYearAndMonth(year: year, month: month, type: type)
if type == .start {
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
self.endDate = self.lastDayOfMonth(year: year, month: month)
}
}
self.dismissDatePicker() self.dismissDatePicker()
} }
} }
...@@ -359,10 +402,10 @@ extension ResourceFilterBoxView : UITableViewDataSource,UITableViewDelegate { ...@@ -359,10 +402,10 @@ extension ResourceFilterBoxView : UITableViewDataSource,UITableViewDelegate {
cell.selectButton.setTitle(tableData[indexPath.row], for: .normal) cell.selectButton.setTitle(tableData[indexPath.row], for: .normal)
cell.callBack = { [weak self] cellTag in cell.callBack = { [weak self] cellTag in
guard let self = self else { return } guard let self = self else { return }
self.currentIndex = cellTag as! Int self.currentSortType = getSortTypeByTag(index: cellTag as! Int)
self.tableView.reloadData() self.tableView.reloadData()
} }
if indexPath.row == currentIndex { if getSortTypeByTag(index: indexPath.row) == currentSortType {
cell.selectButton.layer.borderWidth = 1.0 cell.selectButton.layer.borderWidth = 1.0
cell.selectButton.setTitleColor(UIColor(red: 0, green: 0.51, blue: 1, alpha: 1), for: .normal) cell.selectButton.setTitleColor(UIColor(red: 0, green: 0.51, blue: 1, alpha: 1), for: .normal)
} else { } else {
...@@ -375,4 +418,20 @@ extension ResourceFilterBoxView : UITableViewDataSource,UITableViewDelegate { ...@@ -375,4 +418,20 @@ extension ResourceFilterBoxView : UITableViewDataSource,UITableViewDelegate {
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 56 return 56
} }
func getSortTypeByTag(index : Int) -> ResouceSortType {
if index == 0 {
return ResouceSortType.largest
}
if index == 1 {
return ResouceSortType.smallest
}
if index == 2 {
return ResouceSortType.latest
}
if index == 3 {
return ResouceSortType.oldest
}
return ResouceSortType.largest
}
} }
...@@ -64,20 +64,20 @@ class TrashSubView: UIView { ...@@ -64,20 +64,20 @@ class TrashSubView: UIView {
private func setUILocation(){ private func setUILocation(){
self.resourceCountlabel.snp.makeConstraints { make in self.resourceCountlabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16) make.left.equalToSuperview().offset(16)
make.centerY.equalToSuperview() make.top.equalToSuperview().offset(28)
make.height.equalTo(22) make.height.equalTo(22)
make.width.equalTo(30) make.width.equalTo(30)
} }
self.tipLabel.snp.makeConstraints { make in self.tipLabel.snp.makeConstraints { make in
make.top.equalToSuperview().offset(17) make.top.equalToSuperview().offset(17)
make.bottom.equalToSuperview().offset(-17) make.bottom.equalToSuperview().offset(-17 - safeHeight)
make.left.equalTo(self.resourceCountlabel.snp.right).offset(11) make.left.equalTo(self.resourceCountlabel.snp.right).offset(11)
make.width.equalTo(100) make.width.equalTo(100)
} }
self.emptyButton.snp.makeConstraints { make in self.emptyButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-9) make.right.equalToSuperview().offset(-9)
make.height.equalTo(38) make.height.equalTo(38)
make.centerY.equalToSuperview() make.top.equalToSuperview().offset(20)
make.width.equalTo(145) make.width.equalTo(145)
} }
} }
......
...@@ -20,9 +20,9 @@ class HomePhotosDetailCollectionCell : UICollectionViewCell { ...@@ -20,9 +20,9 @@ class HomePhotosDetailCollectionCell : UICollectionViewCell {
var choose : Bool = false { var choose : Bool = false {
didSet{ didSet{
if choose { if choose {
self.selectImageView.image = UIImage(named: "ic_unsel_com") self.selectImageView.image = UIImage(named: "重复项说明-icon-选中")
}else{ }else{
self.selectImageView.image = UIImage(named: "ic_sel_com") self.selectImageView.image = UIImage(named: "Frame 6")
} }
} }
} }
...@@ -101,8 +101,8 @@ class HomePhotosDetailCollectionCell : UICollectionViewCell { ...@@ -101,8 +101,8 @@ class HomePhotosDetailCollectionCell : UICollectionViewCell {
} }
self.selectImageView.snp.makeConstraints { make in self.selectImageView.snp.makeConstraints { make in
make.bottom.right.equalToSuperview().offset(-12) make.bottom.right.equalToSuperview().offset(-6)
make.height.width.equalTo(24) make.height.width.equalTo(18)
} }
} }
......
...@@ -59,8 +59,6 @@ class HomeVideoDetailCell : UICollectionViewCell { ...@@ -59,8 +59,6 @@ class HomeVideoDetailCell : UICollectionViewCell {
print("无法获取图片") print("无法获取图片")
} }
} }
} }
} }
} }
...@@ -70,9 +68,9 @@ class HomeVideoDetailCell : UICollectionViewCell { ...@@ -70,9 +68,9 @@ class HomeVideoDetailCell : UICollectionViewCell {
var choose : Bool = false { var choose : Bool = false {
didSet{ didSet{
if choose { if choose {
self.selectImageView.image = UIImage(named: "ic_unsel_com") self.selectImageView.image = UIImage(named: "重复项说明-icon-选中")
}else{ }else{
self.selectImageView.image = UIImage(named: "ic_sel_com") self.selectImageView.image = UIImage(named: "Frame 6")
} }
} }
} }
...@@ -104,7 +102,7 @@ class HomeVideoDetailCell : UICollectionViewCell { ...@@ -104,7 +102,7 @@ class HomeVideoDetailCell : UICollectionViewCell {
lazy var playImageView: UIImageView = { lazy var playImageView: UIImageView = {
let view = UIImageView() let view = UIImageView()
view.backgroundColor = .clear view.backgroundColor = .clear
view.image = UIImage(named: "btn_play_home") view.image = UIImage(named: "Frame 5")
view.isUserInteractionEnabled = true view.isUserInteractionEnabled = true
return view return view
}() }()
...@@ -114,7 +112,7 @@ class HomeVideoDetailCell : UICollectionViewCell { ...@@ -114,7 +112,7 @@ class HomeVideoDetailCell : UICollectionViewCell {
lazy var saveSizeView: UIView = { lazy var saveSizeView: UIView = {
let view = UIView() let view = UIView()
view.layer.masksToBounds = true view.layer.masksToBounds = true
view.layer.cornerRadius = 4 view.layer.cornerRadius = 12
view.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1) view.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
return view return view
}() }()
...@@ -123,21 +121,21 @@ class HomeVideoDetailCell : UICollectionViewCell { ...@@ -123,21 +121,21 @@ class HomeVideoDetailCell : UICollectionViewCell {
let view = UILabel() let view = UILabel()
view.textAlignment = .left view.textAlignment = .left
view.textColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1) view.textColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1)
view.font = UIFont.systemFont(ofSize: 12, weight: .regular) view.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
view.text = "0.0MB" view.text = "0.0MB"
return view return view
}() }()
lazy var moreImageView: UIImageView = { lazy var moreImageView: UIImageView = {
let view = UIImageView() let view = UIImageView()
view.image = UIImage(named: "icon_left_setting_grey") view.image = UIImage(named: "Frame 9")
view.backgroundColor = .clear view.backgroundColor = .clear
return view return view
}() }()
lazy var selectImageView: UIImageView = { lazy var selectImageView: UIImageView = {
let view = UIImageView() let view = UIImageView()
view.image = UIImage(named: "ic_sel_com") view.image = UIImage(named: "Frame 6")
view.backgroundColor = .clear view.backgroundColor = .clear
view.isUserInteractionEnabled = true view.isUserInteractionEnabled = true
...@@ -181,30 +179,28 @@ class HomeVideoDetailCell : UICollectionViewCell { ...@@ -181,30 +179,28 @@ class HomeVideoDetailCell : UICollectionViewCell {
} }
self.playImageView.snp.makeConstraints { make in self.playImageView.snp.makeConstraints { make in
make.center.equalToSuperview() make.center.equalToSuperview()
make.width.height.equalTo(43) make.width.height.equalTo(18.38)
} }
self.saveSizeView.snp.makeConstraints { make in self.saveSizeView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12) make.left.top.equalToSuperview().offset(6)
make.bottom.equalToSuperview().offset(-12) make.height.equalTo(24)
make.height.equalTo(25) make.width.equalTo(100)
make.width.equalTo(120)
} }
self.saveSizeLabel.snp.makeConstraints { make in self.saveSizeLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(8) make.left.equalToSuperview().offset(11)
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
make.height.equalTo(25) make.height.equalTo(17)
make.width.equalTo(105)
} }
self.moreImageView.snp.makeConstraints { make in self.moreImageView.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-4) make.right.equalToSuperview().offset(-10)
make.centerY.equalToSuperview() make.centerY.equalToSuperview()
make.height.width.equalTo(16) make.height.width.equalTo(16)
} }
self.selectImageView.snp.makeConstraints { make in self.selectImageView.snp.makeConstraints { make in
make.bottom.right.equalToSuperview().offset(-12) make.bottom.right.equalToSuperview().offset(-6)
make.height.width.equalTo(24) make.height.width.equalTo(18)
} }
self.extensionView.snp.makeConstraints { make in self.extensionView.snp.makeConstraints { make in
make.center.equalTo(self.selectImageView.snp.center) make.center.equalTo(self.selectImageView.snp.center)
......
...@@ -156,8 +156,8 @@ class ImageSeletedCollectionCell:UICollectionViewCell { ...@@ -156,8 +156,8 @@ class ImageSeletedCollectionCell:UICollectionViewCell {
seletedBtn = UIButton() seletedBtn = UIButton()
seletedBtn?.setImage(UIImage(named: "home_info_norl"), for: .normal) seletedBtn?.setImage(UIImage(named: "重复项说明-icon-未选中"), for: .normal)
seletedBtn?.setImage(UIImage(named: "home_info_seleted"), for: .selected) seletedBtn?.setImage(UIImage(named: "重复项说明-icon-选中"), for: .selected)
seletedBtn?.addTarget(self, action: #selector(seletedBtnClick), for: .touchUpInside) seletedBtn?.addTarget(self, action: #selector(seletedBtnClick), for: .touchUpInside)
self.backgroundColor = .clear self.backgroundColor = .clear
......
...@@ -28,6 +28,17 @@ class PMLoadingHUD{ ...@@ -28,6 +28,17 @@ class PMLoadingHUD{
} }
} }
func showLoding(_ title:String = "Loding...",_ subTitle:String = "Please wait on the screen. This might take several minutes."){
disMiss()
DispatchQueue.main.async {
cWindow?.addSubview(self.loadingView)
cWindow?.bringSubviewToFront(self.loadingView)
self.loadingView.setTitleaAndSubTitle(title: title, subTitle: subTitle)
self.loadingView.animationView.play()
}
}
func disMiss(){ func disMiss(){
DispatchQueue.main.async { DispatchQueue.main.async {
self.loadingView.animationView.stop() self.loadingView.animationView.stop()
......
...@@ -54,8 +54,8 @@ class PMShowImgCell: UICollectionViewCell { ...@@ -54,8 +54,8 @@ class PMShowImgCell: UICollectionViewCell {
lazy var selectBtn: UIButton = { lazy var selectBtn: UIButton = {
let select = UIButton(type: .custom) let select = UIButton(type: .custom)
select.setImage(UIImage(named: "home_info_norl"), for: .normal) select.setImage(UIImage(named: "Frame_1318"), for: .normal)
select.setImage(UIImage(named: "home_info_seleted"), for: .selected) select.setImage(UIImage(named: "重复项说明-icon-选中 1"), for: .selected)
select.addTarget(self, action: #selector(selectTap), for: .touchUpInside) select.addTarget(self, action: #selector(selectTap), for: .touchUpInside)
contentView.addSubview(select) contentView.addSubview(select)
return select return select
......
...@@ -33,8 +33,8 @@ class PMShowItemCell: UICollectionViewCell { ...@@ -33,8 +33,8 @@ class PMShowItemCell: UICollectionViewCell {
private lazy var selectBtn: UIButton = { private lazy var selectBtn: UIButton = {
let select = UIButton(type: .custom) let select = UIButton(type: .custom)
select.setImage(UIImage(named: "home_info_norl"), for: .normal) select.setImage(UIImage(named: "Frame 7"), for: .normal)
select.setImage(UIImage(named: "home_info_seleted"), for: .selected) select.setImage(UIImage(named: "Frame 8"), for: .selected)
contentView.addSubview(select) contentView.addSubview(select)
select.isUserInteractionEnabled = false select.isUserInteractionEnabled = false
return select return select
......
...@@ -88,8 +88,8 @@ class PMShowVideoCell: UICollectionViewCell { ...@@ -88,8 +88,8 @@ class PMShowVideoCell: UICollectionViewCell {
lazy var selectBtn: UIButton = { lazy var selectBtn: UIButton = {
let select = UIButton(type: .custom) let select = UIButton(type: .custom)
select.setImage(UIImage(named: "home_info_norl"), for: .normal) select.setImage(UIImage(named: "Frame_1318"), for: .normal)
select.setImage(UIImage(named: "home_info_seleted"), for: .selected) select.setImage(UIImage(named: "重复项说明-icon-选中 1"), for: .selected)
select.addTarget(self, action: #selector(selectTap), for: .touchUpInside) select.addTarget(self, action: #selector(selectTap), for: .touchUpInside)
contentView.addSubview(select) contentView.addSubview(select)
return select return select
......
...@@ -29,6 +29,12 @@ class PMShowImgVideoController: BaseViewController { ...@@ -29,6 +29,12 @@ class PMShowImgVideoController: BaseViewController {
var imageVideoPath:[String] = [] var imageVideoPath:[String] = []
lazy var navView : PhotoVideoDetailNavView = {
let view = PhotoVideoDetailNavView()
return view
}()
// 首页过来的数据 // 首页过来的数据
var homeDataSource : [ImageSeletedCollectionItem]? { var homeDataSource : [ImageSeletedCollectionItem]? {
didSet{ didSet{
...@@ -42,7 +48,11 @@ class PMShowImgVideoController: BaseViewController { ...@@ -42,7 +48,11 @@ class PMShowImgVideoController: BaseViewController {
} }
} }
var currentIdx = 0 var currentIdx = 0 {
didSet {
changeNavInfo()
}
}
var selectSet = NSMutableSet() var selectSet = NSMutableSet()
var backOrgPageCallBack : (IndexPath?,[ImageSeletedCollectionItem]?)->Void = {index,data in} var backOrgPageCallBack : (IndexPath?,[ImageSeletedCollectionItem]?)->Void = {index,data in}
...@@ -52,6 +62,13 @@ class PMShowImgVideoController: BaseViewController { ...@@ -52,6 +62,13 @@ class PMShowImgVideoController: BaseViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
self.view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1) self.view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
self.view.addSubview(self.navView)
self.navView.showType = .dateAndSizeNav
self.navView.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(statusBarHeight + 44)
}
} }
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
...@@ -72,6 +89,17 @@ class PMShowImgVideoController: BaseViewController { ...@@ -72,6 +89,17 @@ class PMShowImgVideoController: BaseViewController {
} }
self.view.layoutIfNeeded() self.view.layoutIfNeeded()
self.MaxCollection.scrollToItem(at: IndexPath(row: currentIdx, section: 0), at: .centeredHorizontally, animated: false) self.MaxCollection.scrollToItem(at: IndexPath(row: currentIdx, section: 0), at: .centeredHorizontally, animated: false)
changeNavInfo()
}
private func changeNavInfo(){
DispatchQueue.main.async {
if let model = self.homeDataSource?[self.currentIdx].id {
self.navView.sizeLbel.text = formatFileSize(model.assetSize)
self.navView.titleLbel.text = self.changeDateToString(model: model)
}
}
} }
...@@ -87,6 +115,13 @@ class PMShowImgVideoController: BaseViewController { ...@@ -87,6 +115,13 @@ class PMShowImgVideoController: BaseViewController {
self.backOrgPageCallBack(self.oldPageIndexPath,self.homeDataSource) self.backOrgPageCallBack(self.oldPageIndexPath,self.homeDataSource)
} }
private func changeDateToString(model : AssetModel) -> String{
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
return formatter.string(from: model.createDate)
}
private lazy var MaxCollection: UICollectionView = { private lazy var MaxCollection: UICollectionView = {
let flowlayout = UICollectionViewFlowLayout() let flowlayout = UICollectionViewFlowLayout()
flowlayout.sectionInset = UIEdgeInsets() flowlayout.sectionInset = UIEdgeInsets()
...@@ -140,10 +175,20 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -140,10 +175,20 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
let offsetx = MaxCollection.contentOffset.x let offsetx = MaxCollection.contentOffset.x
let width = collectView.width let width = collectView.width
let current:Int = Int(offsetx / width) let current:Int = Int(offsetx / width)
self.currentIdx = current
bottItems.scrollToItem(at: IndexPath(row: current, section: 0), at: .left, animated: true) bottItems.scrollToItem(at: IndexPath(row: current, section: 0), at: .left, animated: true)
} }
} }
func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
guard let collectView = scrollView as? UICollectionView else { return }
if collectView == MaxCollection {
let offsetx = MaxCollection.contentOffset.x
let width = collectView.width
self.currentIdx = Int(offsetx / width)
}
}
private func setMaxCollection(collectionView:UICollectionView) -> Void { private func setMaxCollection(collectionView:UICollectionView) -> Void {
if collectionView == bottItems { if collectionView == bottItems {
...@@ -152,15 +197,13 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -152,15 +197,13 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
UIView.animate(withDuration: 0.5) { UIView.animate(withDuration: 0.5) {
collectionView.contentOffset = CGPointMake( idx * (68 + 10) , 0) collectionView.contentOffset = CGPointMake( idx * (68 + 10) , 0)
} }
self.currentIdx = Int(idx)
MaxCollection.scrollToItem(at: IndexPath(row: Int(idx), section: 0), at: .centeredHorizontally, animated: true) MaxCollection.scrollToItem(at: IndexPath(row: Int(idx), section: 0), at: .centeredHorizontally, animated: true)
} }
} }
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
guard let collectView = scrollView as? UICollectionView else { return } guard let collectView = scrollView as? UICollectionView else { return }
// if collectView == MaxCollection {
// bottItems.reloadData()
// }
self.setMaxCollection(collectionView: collectView) self.setMaxCollection(collectionView: collectView)
} }
...@@ -218,7 +261,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -218,7 +261,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
showName.loadPhotoOrVideo { durs, icon in showName.loadPhotoOrVideo { durs, icon in
cell.icon = icon cell.icon = icon
} }
cell.bestResultButton.isHidden = indexPath.row != 0 if let data = self.homeDataSource {
cell.bestResultButton.isHidden = indexPath.row != 0 || data.count <= 1
}
cell.isCurrent = selectSet.contains(indexPath.row) cell.isCurrent = selectSet.contains(indexPath.row)
cell.callblock = {[weak self] in cell.callblock = {[weak self] in
guard let self = self else { return } guard let self = self else { return }
...@@ -275,7 +320,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -275,7 +320,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PMShowImgCellID, for: indexPath) as! PMShowImgCell let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PMShowImgCellID, for: indexPath) as! PMShowImgCell
cell.icon = self.homeDataSource![indexPath.row].image ?? UIImage() cell.icon = self.homeDataSource![indexPath.row].image ?? UIImage()
cell.isCurrent = selectSet.contains(indexPath.row) cell.isCurrent = selectSet.contains(indexPath.row)
cell.bestResultButton.isHidden = indexPath.row != 0 if let data = self.homeDataSource {
cell.bestResultButton.isHidden = indexPath.row != 0 || data.count <= 1
}
cell.callblock = {[weak self] in cell.callblock = {[weak self] in
guard let self = self else { return } guard let self = self else { return }
self.vibrate() self.vibrate()
...@@ -319,7 +366,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -319,7 +366,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
// 表示这个是视频 // 表示这个是视频
cell.type = 1 cell.type = 1
cell.isCurrent = selectSet.contains(indexPath.row) cell.isCurrent = selectSet.contains(indexPath.row)
cell.bestResultButton.isHidden = indexPath.row != 0 if let data = self.homeDataSource {
cell.bestResultButton.isHidden = indexPath.row != 0 || data.count <= 1
}
cell.callblock = {[weak self] in cell.callblock = {[weak self] in
guard let self = self else { return } guard let self = self else { return }
self.vibrate() self.vibrate()
......
...@@ -29,6 +29,7 @@ class TrashDataManager { ...@@ -29,6 +29,7 @@ class TrashDataManager {
clearCurrentMediaTypeTrashSigtonData(mediaType: mediaType) clearCurrentMediaTypeTrashSigtonData(mediaType: mediaType)
clearCurrentMediaTypeTrashDBData(mediaType: mediaType) clearCurrentMediaTypeTrashDBData(mediaType: mediaType)
// 删除完成之后回调 // 删除完成之后回调
PhotoManager.shared.removeDataWhenDeleteInPage(data: trashData)
comlete() comlete()
} }
}else{ }else{
......
...@@ -15,8 +15,6 @@ class Singleton { ...@@ -15,8 +15,6 @@ class Singleton {
// 私有化初始化方法,防止外部创建新实例 // 私有化初始化方法,防止外部创建新实例
private init() {} private init() {}
var resourceModel : [AssetModel] = []
var maxDeleteCount : Int = 25 var maxDeleteCount : Int = 25
var trashData : [TrashTypeEnum : [AssetModel]] = [:] var trashData : [TrashTypeEnum : [AssetModel]] = [:]
......
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