Commit b2337b07 authored by CZ1004's avatar CZ1004

【优化】选择框时间选择记住时间

parent 00999a0c
...@@ -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,20 +117,12 @@ class CompressController : BaseViewController { ...@@ -117,20 +117,12 @@ class CompressController : BaseViewController {
} }
self.resourceData.removeAll() self.resourceData.removeAll()
let datas = Singleton.shared.resourceModel PMLoadingHUD.share.showLoding()
if datas.count > 0 { CompressViewModel().getAllPhotosToAssets(sortType: self.currentSort, assetType: self.currentResourceType) { [weak self] models in
// 这里需要重新排序下 guard let self else {return}
self.resourceData = datas self.resourceData = models
self.sortByType(sortType: self.currentSort) DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
}else{ PMLoadingHUD.share.disMiss()
PMLoadingHUD.share.show("Loading...", "Please wait on the screen. This might take several minutes.")
CompressViewModel().getAllPhotosToAssets(sortType: self.currentSort, assetType: self.currentResourceType) { [weak self] models in
guard let self else {return}
self.resourceData = models
Singleton.shared.resourceModel = self.resourceData
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
PMLoadingHUD.share.disMiss()
}
} }
} }
} }
...@@ -231,10 +223,20 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo ...@@ -231,10 +223,20 @@ 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
PMLoadingHUD.share.showLoding()
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
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
PMLoadingHUD.share.disMiss()
}
}
} }
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,7 +249,7 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo ...@@ -247,7 +249,7 @@ 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.") PMLoadingHUD.share.showLoding()
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
...@@ -271,6 +273,17 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo ...@@ -271,6 +273,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)
} }
......
...@@ -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
......
...@@ -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() {
......
...@@ -497,6 +497,8 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate { ...@@ -497,6 +497,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 +612,13 @@ class HomeInfoTitleView:UIView { ...@@ -610,12 +612,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 = {
...@@ -86,12 +88,13 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView { ...@@ -86,12 +88,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 = {
...@@ -99,12 +101,13 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView { ...@@ -99,12 +101,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,9 +27,9 @@ class PhotoRemoveNavView: UIView { ...@@ -22,9 +27,9 @@ 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: 22 + statusBarHeight)
}else{ }else{
......
...@@ -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
}
} }
...@@ -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()
......
...@@ -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}
...@@ -53,6 +63,13 @@ class PMShowImgVideoController: BaseViewController { ...@@ -53,6 +63,13 @@ class PMShowImgVideoController: BaseViewController {
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) {
...@@ -69,6 +86,17 @@ class PMShowImgVideoController: BaseViewController { ...@@ -69,6 +86,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)
}
}
} }
...@@ -84,6 +112,13 @@ class PMShowImgVideoController: BaseViewController { ...@@ -84,6 +112,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()
...@@ -129,11 +164,20 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -129,11 +164,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)
// currentIdx = current 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 {
...@@ -142,15 +186,13 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -142,15 +186,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)
} }
...@@ -208,7 +250,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -208,7 +250,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 }
...@@ -263,7 +307,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -263,7 +307,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()
...@@ -307,7 +353,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa ...@@ -307,7 +353,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()
......
...@@ -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