Commit 881bb320 authored by CZ1004's avatar CZ1004

【优化】修改部分bug、优化功能

parent 873ecde3
......@@ -21,14 +21,12 @@ class CompressController : BaseViewController {
private var compressNav:CompressNavView?
// 排序
var currentSort : Int = 0 {
var currentSort : ResouceSortType = .largest {
didSet{
clearSelected()
}
}
// 资源类型 - 相册或者视频
var currentResourceType : CompressType = .compressPhoto
......@@ -122,22 +120,17 @@ class CompressController : BaseViewController {
let datas = Singleton.shared.resourceModel
if datas.count > 0 {
// 这里需要重新排序下
if self.currentSort == 0 {
self.resourceData = datas.sorted {$0.assetSize > $1.assetSize }
}else if self.currentSort == 1 {
self.resourceData = datas.sorted {$0.assetSize < $1.assetSize }
}else if self.currentSort == 2 {
self.resourceData = datas.sorted {$0.createDate > $1.createDate }
}else{
self.resourceData = datas.sorted {$0.createDate < $1.createDate }
}
self.resourceData = datas
self.sortByType(sortType: self.currentSort)
}else{
PMLoadingHUD.share.show()
PMLoadingHUD.share.show("Loading...", "Please wait on the screen. This might take several minutes.")
CompressViewModel().getAllPhotosToAssets(sortType: self.currentSort, assetType: self.currentResourceType) { [weak self] models in
guard let self else {return}
self.resourceData = models
Singleton.shared.resourceModel = self.resourceData
PMLoadingHUD.share.disMiss()
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
PMLoadingHUD.share.disMiss()
}
}
}
}
......@@ -236,20 +229,10 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if kind == UICollectionView.elementKindSectionHeader {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "CompressCustomHeaderView", for: indexPath) as! CompressCustomHeaderView
header.callBack = {[weak self] text in
header.sortViewSubmitCallBack = { [weak self] fileterModel in
guard let self else {return}
let sortView = CompressSortView(frame: self.view.bounds)
// 这两行是为了进入页面的时候选中
sortView.currentIndex = self.currentSort
sortView.tableView.reloadData()
self.view.addSubview(sortView)
sortView.callBack = {[weak self] sortType in
guard let self else {return}
self.currentSort = sortType as! Int
self.sortByType(sortType: self.currentSort, header: header)
}
self.currentSort = fileterModel.sortType
self.sortByType(sortType: self.currentSort)
}
header.changeView.callBack = {[weak self] flag in
guard let self else {return}
......@@ -262,9 +245,13 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
if self.currentResourceType == .compressPhoto {
self.getViewData()
}else{
PMLoadingHUD.share.show("Loading...", "Please wait on the screen. This might take several minutes.")
CompressViewModel().getAllPhotosToAssets(sortType: self.currentSort, assetType: flag) { [weak self] models in
guard let self else {return}
self.resourceData = models
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
PMLoadingHUD.share.disMiss()
}
}
}
}
......@@ -282,34 +269,21 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
}
}
func sortByType(sortType:Int,header:CompressCustomHeaderView){
let viewModel = CompressViewModel()
func sortByType(sortType:ResouceSortType){
switch sortType {
case 0:
header.selectlabel.text = "Largest"
// 按照文件大小降序
self.resourceData = viewModel.sortRsource(resource: self.resourceData, sortType: 1, sortKind: 0)
case .largest:
self.resourceData = self.resourceData.sorted { $0.assetSize > $1.assetSize }
break
case 1:
header.selectlabel.text = "Smallest"
// 按照文件大小升序
self.resourceData = viewModel.sortRsource(resource: self.resourceData, sortType: 0, sortKind: 0)
case .smallest:
self.resourceData = self.resourceData.sorted { $0.assetSize < $1.assetSize }
break
case 2:
header.selectlabel.text = "Newest"
// 按照时间降序
self.resourceData = viewModel.sortRsource(resource: self.resourceData, sortType: 1, sortKind: 1)
case .latest:
self.resourceData = self.resourceData.sorted { $0.createDate > $1.createDate }
break
case 3:
header.selectlabel.text = "Oldest"
// 按照时间升序
self.resourceData = viewModel.sortRsource(resource: self.resourceData, sortType: 0, sortKind: 1)
break
default:
case .oldest:
self.resourceData = self.resourceData.sorted { $0.createDate < $1.createDate }
break
}
}
func updateSubmitButton(){
......
......@@ -9,7 +9,7 @@ import Foundation
class CompressCustomHeaderView: UICollectionReusableView{
var callBack: callBack<Any> = {text in }
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
var modeData = [AssetModel]() {
didSet{
......@@ -51,35 +51,21 @@ class CompressCustomHeaderView: UICollectionReusableView{
return label
}()
lazy var btnView :UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
view.layer.cornerRadius = 16
view.clipsToBounds = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(selectQulity))
view.isUserInteractionEnabled = true
view.addGestureRecognizer(tap)
return view
// 筛选按钮
lazy var filterButton : UIButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "Frame 1"), for: .normal)
button.setTitle("The largest", for: .normal)
button.layer.cornerRadius = 14
button.clipsToBounds = true
button.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 0.1000)
button.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
button.setTitleColor(UIColor(red: 0.07, green: 0.07, blue: 0.07, alpha: 1), for: .normal)
button.addTarget(self, action: #selector(filterButtonAction), for: .touchUpInside)
button.isHidden = false
return button
}()
lazy var selectImageView :UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "ic_newest_similar")
return view
}()
lazy var selectlabel :UILabel = {
let label = UILabel()
label.text = "Largest"
label.textAlignment = .center
label.textColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1)
label.font = UIFont.systemFont(ofSize: 14, weight: .bold)
return label
}()
lazy var siezLabel :UILabel = {
let label = UILabel()
label.text = "1.02 GB"
......@@ -128,9 +114,7 @@ class CompressCustomHeaderView: UICollectionReusableView{
private func setUI(){
self.addSubview(self.titlelabel)
self.addSubview(self.btnView)
self.btnView.addSubview(self.selectImageView)
self.btnView.addSubview(self.selectlabel)
self.addSubview(self.filterButton)
self.addSubview(self.siezLabel)
self.addSubview(self.changeView)
self.addSubview(self.tipView)
......@@ -144,27 +128,17 @@ class CompressCustomHeaderView: UICollectionReusableView{
make.height.equalTo(28)
}
self.btnView.snp.makeConstraints { make in
self.filterButton.snp.makeConstraints { make in
make.centerY.equalTo(self.titlelabel.snp.centerY)
make.right.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(12)
make.width.equalTo(103 * RScreenW())
make.height.equalTo(32)
}
self.selectImageView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12)
make.centerY.equalToSuperview()
make.width.height.equalTo(20)
}
self.selectlabel.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-12)
make.top.equalToSuperview().offset(6)
make.width.equalTo(60 * RScreenW())
make.height.equalTo(20)
make.height.equalTo(28)
make.width.equalTo(98)
}
self.siezLabel.snp.makeConstraints { make in
make.left.equalTo(0)
make.right.equalTo(0)
make.top.equalTo(self.btnView.snp.bottom).offset(8)
make.top.equalTo(self.filterButton.snp.bottom).offset(8)
make.height.equalTo(20)
}
self.changeView.snp.makeConstraints { make in
......@@ -193,10 +167,20 @@ class CompressCustomHeaderView: UICollectionReusableView{
}
@objc func selectQulity(){
callBack("selectedQulity")
@objc func filterButtonAction(){
if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds)
// 添加毛玻璃效果
cWindow.showBlur()
cWindow.addSubview(filterView)
filterView.submitCallBack = {model in
DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
}
self.sortViewSubmitCallBack(model)
}
}
}
......
......@@ -67,7 +67,7 @@ class CompressViewModel{
/// 获取相册所有图片
/// - Returns: 图片信息
func getAllPhotosToAssets(sortType: Int, assetType : CompressType,_ finished: @escaping Finished){
func getAllPhotosToAssets(sortType: ResouceSortType, assetType : CompressType,_ finished: @escaping Finished){
var models : [AssetModel] = []
......@@ -108,11 +108,11 @@ class CompressViewModel{
group.leave()
if count == assetsArray.count {
// 默认按照文件大小排序
if sortType == 0 {
if sortType == .largest {
finished(models.sorted { $0.assetSize > $1.assetSize })
}else if sortType == 1 {
}else if sortType == .smallest {
finished(models.sorted { $0.assetSize < $1.assetSize })
}else if sortType == 2 {
}else if sortType == .latest {
finished(models.sorted { $0.createDate > $1.createDate })
}else{
finished(models.sorted { $0.createDate < $1.createDate })
......@@ -122,30 +122,7 @@ class CompressViewModel{
}
}
}
/// 对资源进行排序
/// - Parameters:
/// - resource: 原资源
/// - sortType: 排序的类型,升序或者降序。0-升序,1-降序
/// - sortKind: 排序的种类 大小或者时间 0-大小,1-时间
/// - Returns: 返回排序结果
func sortRsource(resource:[AssetModel],sortType:Int,sortKind:Int)->[AssetModel]{
if sortKind == 0 {
if sortType == 0 {
return resource.sorted { $0.assetSize < $1.assetSize }
}else{
return resource.sorted { $0.assetSize > $1.assetSize }
}
}else{
if sortType == 0 {
return resource.sorted { $0.createDate < $1.createDate }
}else{
return resource.sorted { $0.createDate > $1.createDate }
}
}
}
/// 视频压缩
/// - Parameters:
......
......@@ -313,6 +313,11 @@ class HomeInfoViewController:BaseViewController {
titleView.model.title = ""
showTipsVC()
self.tablewView.keepAllNoDataCallBack = {
self.ids = []
self.setDefaultPage()
}
}
......
......@@ -37,7 +37,7 @@ class HomePhotosDetailViewController : BaseViewController {
var resourceData : [AssetModel] = []
// 排序
var currentSort : Int = 0
var currentSort : ResouceSortType = .largest
// 当前页面选中的
var selectedModel : [AssetModel] = [] {
......@@ -253,13 +253,13 @@ class HomePhotosDetailViewController : BaseViewController {
if self.resourceData.count == 0 {
self.defaultImageView.isHidden = false
self.defaultTipLabel.isHidden = false
self.currentHeaderView?.btnView.isHidden = true
self.currentHeaderView?.filterButton.isHidden = true
self.videoDetailNavView?.startSelectButton.isHidden = true
self.deleteButtonView.isHidden = true
}else{
self.defaultImageView.isHidden = true
self.defaultTipLabel.isHidden = true
self.currentHeaderView?.btnView.isHidden = false
self.currentHeaderView?.filterButton.isHidden = false
self.videoDetailNavView?.startSelectButton.isHidden = false
self.deleteButtonView.isHidden = false
}
......@@ -564,19 +564,22 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
header.modelTitlelabel.text = self.mediaType?.rawValue
currentHeaderView = header
header.sortCallback = {[weak self] in
header.sortViewSubmitCallBack = {[weak self] filterModel in
guard let self else {return}
let sortView = CompressSortView(frame: self.view.bounds)
// 这两行是为了进入页面的时候选中
sortView.currentIndex = self.currentSort
sortView.tableView.reloadData()
self.view.addSubview(sortView)
sortView.callBack = {[weak self] sortType in
guard let self else {return}
self.currentSort = sortType as! Int
self.sortByType(sortType: self.currentSort)
self.changeHeaderTitle()
var dataS : [AssetModel] = []
if self.mediaType == .Other{
dataS = PhotoManager.shared.filterOtherModels
}else {
dataS = PhotoManager.shared.filterScreenShotModels
}
let tempData = self.filterDataByDate(orgModels: dataS , startDate: filterModel.startDate, endDate: filterModel.endDate)
// 重新更新下数据源
self.resourceData = tempData
self.sortByType(sortType: filterModel.sortType)
self.currentSort = filterModel.sortType
DispatchQueue.main.async {
self.collectionView.reloadData()
}
}
......@@ -592,52 +595,33 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
}
/// 改变标题
func changeHeaderTitle(){
var title : String = "Largest"
switch self.currentSort {
case 0:
title = "Largest"
break
case 1:
title = "Smallest"
break
case 2:
title = "Newest"
break
case 3:
title = "Oldest"
break
default:
break
func filterDataByDate(orgModels : [AssetModel], startDate:Date? ,endDate : Date?)->[AssetModel]{
var array = orgModels
if startDate != nil {
array = array.filter({$0.createDate >= startDate!})
}
DispatchQueue.main.async {
self.currentHeaderView!.selectlabel.text = title
self.collectionView.reloadData()
if endDate != nil {
array = array.filter({$0.createDate <= endDate!})
}
return array
}
/// 对当前页面资源排序(注意这里获取的资源是image)
/// - Parameter sortType: 排序类型
func sortByType(sortType:Int){
func sortByType(sortType:ResouceSortType){
switch sortType {
case 0:
case .largest:
self.resourceData = self.resourceData.sorted { $0.assetSize > $1.assetSize }
break
case 1:
case .smallest:
self.resourceData = self.resourceData.sorted { $0.assetSize < $1.assetSize }
break
case 2:
case .latest:
self.resourceData = self.resourceData.sorted { $0.createDate > $1.createDate }
break
case 3:
case .oldest:
self.resourceData = self.resourceData.sorted { $0.createDate < $1.createDate }
break
default:
break
}
}
......
......@@ -30,7 +30,7 @@ class HomeVideoDetailController :BaseViewController {
var resourceData : [AssetModel] = []
// 排序
var currentSort : Int = 0
var currentSort : ResouceSortType = .largest
// 当前页面选中的
var selectedModel : [AssetModel] = [] {
......@@ -488,19 +488,17 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
currentHeaderView = header
header.compressionTipView.reloadData()
header.sizeLabel.text = "\(self.resourceData.count) Videos"
header.sortCallback = {[weak self] in
header.sortViewSubmitCallBack = {[weak self] filterModel in
guard let self else {return}
let sortView = CompressSortView(frame: self.view.bounds)
// 这两行是为了进入页面的时候选中
sortView.currentIndex = self.currentSort
sortView.tableView.reloadData()
self.view.addSubview(sortView)
sortView.callBack = {[weak self] sortType in
guard let self else {return}
self.currentSort = sortType as! Int
self.sortByType(sortType: self.currentSort)
self.changeHeaderTitle()
let dataS : [AssetModel] = PhotoManager.shared.filterVideoModels
let tempData = self.filterDataByDate(orgModels: dataS , startDate: filterModel.startDate, endDate: filterModel.endDate)
// 重新更新下数据源
self.resourceData = tempData
self.sortByType(sortType: filterModel.sortType)
self.currentSort = filterModel.sortType
DispatchQueue.main.async {
self.collectionView.reloadData()
}
}
return header
......@@ -515,6 +513,17 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
}
}
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 showPopView(popView: AdvTipDeleteView){
......@@ -701,13 +710,13 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
if self.resourceData.count == 0 {
self.defaultImageView.isHidden = false
self.defaultTipLabel.isHidden = false
self.currentHeaderView?.btnView.isHidden = true
self.currentHeaderView?.filterButton.isHidden = true
self.videoDetailNavView?.startSelectButton.isHidden = true
self.deleteButtonView.deleteButton.isHidden = true
}else{
self.defaultImageView.isHidden = true
self.defaultTipLabel.isHidden = true
self.currentHeaderView?.btnView.isHidden = false
self.currentHeaderView?.filterButton.isHidden = false
self.videoDetailNavView?.startSelectButton.isHidden = false
self.deleteButtonView.deleteButton.isHidden = false
}
......@@ -745,52 +754,20 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
setDefaultPage()
}
/// 改变标题
func changeHeaderTitle(){
var title : String = "Largest"
switch self.currentSort {
case 0:
title = "Largest"
break
case 1:
title = "Smallest"
break
case 2:
title = "Newest"
break
case 3:
title = "Oldest"
break
default:
break
}
DispatchQueue.main.async {
self.currentHeaderView!.selectlabel.text = title
self.collectionView.reloadData()
}
}
func sortByType(sortType:Int){
func sortByType(sortType:ResouceSortType){
switch sortType {
case 0:
case .largest:
self.resourceData = self.resourceData.sorted { $0.assetSize > $1.assetSize }
break
case 1:
case .smallest:
self.resourceData = self.resourceData.sorted { $0.assetSize < $1.assetSize }
break
case 2:
case .latest:
self.resourceData = self.resourceData.sorted { $0.createDate > $1.createDate }
break
case 3:
case .oldest:
self.resourceData = self.resourceData.sorted { $0.createDate < $1.createDate }
break
default:
break
}
}
......
......@@ -23,6 +23,7 @@ class PhotoDetailViewController : BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
self.view.addSubview(self.closeButton)
self.closeButton.snp.makeConstraints { make in
......
......@@ -77,6 +77,9 @@ class PhotoRemoveViewController: BaseViewController {
// MARK: - 生命周期
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
formatter.dateStyle = .medium
formatter.timeStyle = .none
if let type = self.mediaType {
......@@ -295,7 +298,8 @@ class PhotoRemoveViewController: BaseViewController {
photoView.mediaType = self.mediaType
photoView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan)))
view.addSubview(photoView)
photoView.frame = CGRectMake(15, statusBarHeight + 44, self.view.width - 30, self.view.height - 78 - safeHeight - statusBarHeight - 44)
photoView.frame = CGRectMake(0, 0, self.view.width - 30, 509 * RScreenH())
photoView.center = self.view.center
photoViews.append(photoView)
}
......@@ -467,7 +471,8 @@ class PhotoRemoveViewController: BaseViewController {
private func resetViewPosition(_ view: PhotosRemoveBaseView) {
UIView.animate(withDuration: 0.3) {
view.transform = .identity
view.frame = CGRectMake(15, statusBarHeight + 44, self.view.width - 30, self.view.height - 78 - safeHeight - statusBarHeight - 44)
view.frame = CGRectMake(0, 0, self.view.width - 30, 509 * RScreenH())
view.center = self.view.center
view.hideButtons()
}
}
......@@ -484,7 +489,8 @@ class PhotoRemoveViewController: BaseViewController {
// 创建新视图并更新内容
let newView = PhotosRemoveBaseView()
newView.frame = CGRectMake(15, statusBarHeight + 44, self.view.width - 30, self.view.height - 78 - safeHeight - statusBarHeight - 44)
newView.frame = CGRectMake(0, 0, self.view.width - 30, 509 * RScreenH())
newView.center = self.view.center
newView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan)))
newView.alpha = 0
view.addSubview(newView)
......
......@@ -21,6 +21,8 @@ class HomeInfoView :UIView {
var callBack:callBack<Any> = {text in}
var keepAllNoDataCallBack : ()->Void = {}
var deleteCallBack:callBack<[AssetModel]> = {array in }
var titleShowHideCallBack:callBack<Bool> = {isShow in}
......@@ -311,6 +313,7 @@ class HomeInfoView :UIView {
tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: deleteView.isHidden ? 12 : deleteView.height + 12 , right: 0)
self.nextRowButton.isHidden = !self.isShowNextRowButton()
}
}
......@@ -322,34 +325,6 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
self.tableScrollToNextRow()
}
// 重新设置models
func resetModels(){
var newArray : [HomeInfoTableItem] = []
for array in ids ?? [] {
var smodels:[ImageSeletedCollectionItem] = []
for id in array {
let smodel = ImageSeletedCollectionItem()
smodel.id = id
smodel.isSeleted = false
smodels.append(smodel)
}
let smodel = HomeInfoTableItem()
smodel.type = type
smodel.smodels = smodels
smodel.titleText = titleText
newArray.append(smodel)
}
self.models = newArray
}
/// 让表格自动滚动一行
private func tableScrollToNextRow() {
......@@ -413,10 +388,25 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: HomeInfoTableViewCell.identifier, for: indexPath) as! HomeInfoTableViewCell
cell.saveKeepListFinishedCallback = {
self.ids?.remove(at: indexPath.section)
self.resetModels()
tableView.deleteRows(at: [indexPath], with: .automatic)
cell.saveKeepListFinishedCallback = {[weak self] index in
guard let self else {return}
self.ids?.remove(at: index.section)
self.models.remove(at: index.section)
DispatchQueue.main.async {
self.setTitleView()
}
// 禁用动画
UIView.performWithoutAnimation {
tableView.beginUpdates()
tableView.deleteRows(at: [index], with: .fade)
tableView.endUpdates()
}
if let data = self.ids {
if data.count <= 0 {
self.keepAllNoDataCallBack()
}
}
}
cell.type = self.type
......@@ -458,10 +448,10 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
for item in orgModels {
var array = item
if startDate != nil {
array = array.filter({$0.createDate > startDate!})
array = array.filter({$0.createDate >= startDate!})
}
if endDate != nil {
array = array.filter({$0.createDate < endDate!})
array = array.filter({$0.createDate <= endDate!})
}
if array.count >= 2 {
......
......@@ -9,7 +9,7 @@ import Foundation
class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
var sortCallback : ()->Void = {}
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
lazy var modelTitlelabel :UILabel = {
let label = UILabel()
......@@ -20,33 +20,22 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
return label
}()
lazy var btnView :UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
view.layer.cornerRadius = 16
view.clipsToBounds = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(sortAction))
view.isUserInteractionEnabled = true
view.addGestureRecognizer(tap)
return view
// 筛选按钮
lazy var filterButton : UIButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "Frame 1"), for: .normal)
button.setTitle("The largest", for: .normal)
button.layer.cornerRadius = 14
button.clipsToBounds = true
button.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 0.1000)
button.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
button.setTitleColor(UIColor(red: 0.07, green: 0.07, blue: 0.07, alpha: 1), for: .normal)
button.addTarget(self, action: #selector(filterButtonAction), for: .touchUpInside)
button.isHidden = false
return button
}()
lazy var selectImageView :UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "ic_newest_similar")
return view
}()
lazy var selectlabel :UILabel = {
let label = UILabel()
label.text = "Largest"
label.textAlignment = .center
label.textColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1)
label.font = UIFont.systemFont(ofSize: 14, weight: .bold)
return label
}()
lazy var countLabel :UILabel = {
let label = UILabel()
label.text = "0 Photos"
......@@ -59,43 +48,26 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
private func setUI(){
self.addSubview(self.modelTitlelabel)
self.addSubview(self.btnView)
self.addSubview(self.countLabel)
self.btnView.addSubview(self.selectImageView)
self.btnView.addSubview(self.selectlabel)
self.addSubview(self.filterButton)
self.modelTitlelabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(14)
make.width.equalTo(150 * RScreenW())
make.height.equalTo(28)
}
self.btnView.snp.makeConstraints { make in
self.filterButton.snp.makeConstraints { make in
make.centerY.equalTo(self.modelTitlelabel.snp.centerY)
make.right.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(12)
make.width.equalTo(103 * RScreenW())
make.height.equalTo(32)
}
self.selectImageView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12)
make.centerY.equalToSuperview()
make.width.height.equalTo(20)
}
self.selectlabel.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-12)
make.top.equalToSuperview().offset(6)
make.width.equalTo(60 * RScreenW())
make.height.equalTo(20)
make.height.equalTo(28)
make.width.equalTo(98)
}
self.countLabel.snp.makeConstraints { make in
make.left.equalTo(0)
make.right.equalTo(0)
make.top.equalTo(self.btnView.snp.bottom).offset(8)
make.top.equalTo(self.filterButton.snp.bottom).offset(8)
make.height.equalTo(20)
}
}
......@@ -112,7 +84,19 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
setUI()
}
@objc func sortAction(){
sortCallback()
@objc func filterButtonAction(){
if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds)
// 添加毛玻璃效果
cWindow.showBlur()
cWindow.addSubview(filterView)
filterView.submitCallBack = {model in
DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
}
self.sortViewSubmitCallBack(model)
}
}
}
}
......@@ -8,7 +8,7 @@
import Foundation
class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
var sortCallback : ()->Void = {}
var sortViewSubmitCallBack : (ResourceFilterBoxModel)->Void = {model in}
lazy var modelTitlelabel :UILabel = {
let label = UILabel()
......@@ -18,34 +18,19 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
label.font = UIFont.systemFont(ofSize: 20, weight: .bold)
return label
}()
lazy var btnView :UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
view.layer.cornerRadius = 16
view.clipsToBounds = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(sortAction))
view.isUserInteractionEnabled = true
view.addGestureRecognizer(tap)
return view
}()
lazy var selectImageView :UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "ic_newest_similar")
return view
}()
lazy var selectlabel :UILabel = {
let label = UILabel()
label.text = "Largest"
label.textAlignment = .center
label.textColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1)
label.font = UIFont.systemFont(ofSize: 14, weight: .bold)
return label
// 筛选按钮
lazy var filterButton : UIButton = {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "Frame 1"), for: .normal)
button.setTitle("The largest", for: .normal)
button.layer.cornerRadius = 14
button.clipsToBounds = true
button.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 0.1000)
button.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
button.setTitleColor(UIColor(red: 0.07, green: 0.07, blue: 0.07, alpha: 1), for: .normal)
button.addTarget(self, action: #selector(filterButtonAction), for: .touchUpInside)
button.isHidden = false
return button
}()
lazy var sizeLabel :UILabel = {
let label = UILabel()
......@@ -56,72 +41,14 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
return label
}()
// lazy var tipBackView :UIView = {
// let view = UIView()
// view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
// view.layer.cornerRadius = 8
// view.clipsToBounds = true
// return view
// }()
// lazy var tipImageView :UIImageView = {
// let view = UIImageView()
// view.image = UIImage(named: "ic_cmpress_home_nor")
// return view
// }()
//
// lazy var tipLabel :UILabel = {
// let label = UILabel()
// label.text = "Video Compress"
// label.textAlignment = .left
// label.numberOfLines = 0
// label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
// return label
// }()
//
// lazy var tipDetailLabel :UILabel = {
// let label = UILabel()
// label.text = "Tap to start the process"
// label.textAlignment = .left
// label.numberOfLines = 0
// label.textColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
// label.font = UIFont.systemFont(ofSize: 12, weight: .regular)
// return label
// }()
//
// lazy var saveSizeLabel :UILabel = {
// let label = UILabel()
// label.text = "13.5M"
// label.textAlignment = .right
// label.textColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
// label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
// return label
// }()
//
// lazy var moreImageView :UIImageView = {
// let view = UIImageView()
// view.image = UIImage(named: "icon_left_setting_grey")
// return view
// }()
private func setUI(){
self.addSubview(self.modelTitlelabel)
self.addSubview(self.btnView)
self.addSubview(self.filterButton)
self.addSubview(self.sizeLabel)
self.btnView.addSubview(self.selectImageView)
self.btnView.addSubview(self.selectlabel)
// self.addSubview(self.tipBackView)
// self.tipBackView.addSubview(self.tipImageView)
// self.tipBackView.addSubview(self.tipLabel)
// self.tipBackView.addSubview(self.tipDetailLabel)
// self.tipBackView.addSubview(self.saveSizeLabel)
// self.tipBackView.addSubview(self.moreImageView)
self.modelTitlelabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(14)
......@@ -129,31 +56,23 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
make.height.equalTo(28)
}
self.btnView.snp.makeConstraints { make in
make.right.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(12)
make.width.equalTo(103 * RScreenW())
make.height.equalTo(32)
}
self.selectImageView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12)
make.centerY.equalToSuperview()
make.width.height.equalTo(20)
}
self.selectlabel.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-12)
make.top.equalToSuperview().offset(6)
make.width.equalTo(60 * RScreenW())
make.height.equalTo(20)
}
self.sizeLabel.snp.makeConstraints { make in
make.left.equalTo(0)
make.right.equalTo(0)
make.top.equalTo(self.btnView.snp.bottom).offset(8)
make.top.equalTo(self.filterButton.snp.bottom).offset(8)
make.height.equalTo(20)
}
self.filterButton.snp.makeConstraints { make in
make.centerY.equalTo(self.modelTitlelabel.snp.centerY)
make.right.equalToSuperview().offset(0)
make.height.equalTo(28)
make.width.equalTo(98)
}
addSubview(compressionTipView)
compressionTipView.snp.makeConstraints { make in
......@@ -164,47 +83,6 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
let tap = UITapGestureRecognizer(target: self, action: #selector(compressClick))
compressionTipView.addGestureRecognizer(tap)
// self.tipBackView.snp.makeConstraints { make in
// make.left.equalTo(0)
// make.right.equalTo(0)
// make.top.equalTo(self.sizeLabel.snp.bottom).offset(12)
// make.height.equalTo(70)
// }
//
// self.tipImageView.snp.makeConstraints { make in
// make.left.equalToSuperview().offset(15)
// make.centerY.equalToSuperview()
// make.width.height.equalTo(30)
//
// }
// self.tipLabel.snp.makeConstraints { make in
// make.left.equalTo(self.tipImageView.snp.right).offset(10)
// make.width.equalTo(150 * RScreenW())
// make.height.equalTo(22)
// make.top.equalToSuperview().offset(15)
// }
// self.tipDetailLabel.snp.makeConstraints { make in
// make.left.equalTo(self.tipImageView.snp.right).offset(10)
// make.width.equalTo(150 * RScreenW())
// make.height.equalTo(18)
// make.top.equalTo(self.tipLabel.snp.bottom).offset(0)
// }
//
// self.moreImageView.snp.makeConstraints { make in
// make.height.width.equalTo(20)
// make.right.equalToSuperview().offset(-15)
// make.centerY.equalToSuperview()
// }
//
// self.saveSizeLabel.snp.makeConstraints { make in
// make.centerY.equalToSuperview()
// make.right.equalTo(self.moreImageView.snp.left).offset(-10)
// make.height.equalTo(28)
// make.width.equalTo(100)
// }
}
override init(frame: CGRect) {
......@@ -219,8 +97,20 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
setUI()
}
@objc func sortAction(){
sortCallback()
@objc func filterButtonAction(){
if let cWindow = cWindow {
let filterView : ResourceFilterBoxView = ResourceFilterBoxView.init(frame: cWindow.bounds)
// 添加毛玻璃效果
cWindow.showBlur()
cWindow.addSubview(filterView)
filterView.submitCallBack = {model in
DispatchQueue.main.async {
self.filterButton.setTitle(model.sortType.rawValue, for: .normal)
}
self.sortViewSubmitCallBack(model)
}
}
}
lazy var compressionTipView:VideocompressionHeadView = {
......
......@@ -118,10 +118,15 @@ class ResourceFilterBoxView : UIView {
setUpUI()
}
func getMonthEn(month: Int )-> String{
func getMonthEn(month: Int) -> String {
// 检查输入是否在有效范围内(1-12)
guard (1...12).contains(month) else {
return "Invalid Month" // 或抛出错误
}
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US")
return formatter.monthSymbols[month]
return formatter.monthSymbols[month - 1]
}
override func removeFromSuperview() {
......@@ -240,6 +245,7 @@ class ResourceFilterBoxView : UIView {
components.year = year
components.month = month
components.day = 1 // 设置为当月第一天
components.timeZone = TimeZone(identifier: "UTC")
// 使用公历日历
let calendar = Calendar(identifier: .gregorian)
......@@ -260,6 +266,7 @@ class ResourceFilterBoxView : UIView {
components.year = nextYear
components.month = nextMonth
components.day = 1
components.timeZone = TimeZone(identifier: "UTC")
let calendar = Calendar(identifier: .gregorian)
guard let nextMonthFirstDay = calendar.date(from: components) else {
......@@ -318,7 +325,6 @@ class ResourceFilterBoxView : UIView {
self.startDateButton.dateButton.setTitle("From \(self.getMonthEn(month: month)) \(year)", for: .normal)
self.startDateButton.closeButton.isHidden = false
self.startDate = self.dateFrom(year: year, month: month)
}else {
self.endDateButton.dateButton.setTitle("To \(self.getMonthEn(month: month)) \(year)", for: .normal)
self.endDateButton.closeButton.isHidden = false
......
......@@ -161,4 +161,13 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate {
return component == 0 ? self.width/2 : self.width/2
}
private var currentYear: Int {
return Calendar.current.component(.year, from: Date())
}
private var currentMonth: Int {
return Calendar.current.component(.month, from: Date())
}
}
......@@ -24,7 +24,7 @@ class HomeInfoTableViewCell:UITableViewCell {
var callBack:callBack<Any> = {text in}
var saveKeepListFinishedCallback : ()->Void = {}
var saveKeepListFinishedCallback : (IndexPath)->Void = {index in}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
......@@ -119,7 +119,6 @@ class HomeInfoTableViewCell:UITableViewCell {
UIView.transition(with: collectionView!, duration: 0.3, options: .transitionCrossDissolve, animations: {
self.collectionView?.reloadData()
// self.reloadCollectionView()
}, completion: nil)
}
}
......@@ -224,7 +223,7 @@ extension HomeInfoTableViewCell:UICollectionViewDelegate,UICollectionViewDataSou
cell.keepAllCallBack = {
//存到保留列表
saveAllDataToKeepList()
self.saveKeepListFinishedCallback()
self.saveKeepListFinishedCallback(indexPath)
}
// 存全部数据到保留列表
func saveAllDataToKeepList(){
......
......@@ -21,7 +21,8 @@ class PMLoadingHUD{
func show(_ title:String = "Deleting...",_ subTitle:String = "Please wait on the screen. This might take several minutes."){
disMiss()
DispatchQueue.main.async {
KEYWINDOW()?.addSubview(self.loadingView)
cWindow?.addSubview(self.loadingView)
cWindow?.bringSubviewToFront(self.loadingView)
self.loadingView.setTitleaAndSubTitle(title: title, subTitle: subTitle)
self.loadingView.animationView.play()
}
......
......@@ -51,6 +51,8 @@ class PMShowImgVideoController: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
}
override func viewWillAppear(_ animated: Bool) {
......
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