Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PhoneManager
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Yang
PhoneManager
Commits
b2337b07
Commit
b2337b07
authored
May 20, 2025
by
CZ1004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【优化】选择框时间选择记住时间
parent
00999a0c
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
222 additions
and
77 deletions
+222
-77
CompressCompletedViewController.swift
...Compress/Controller/CompressCompletedViewController.swift
+0
-2
CompressController.swift
...r/Class/Page/Compress/Controller/CompressController.swift
+31
-18
CompressCustomHeaderView.swift
...r/Class/Page/Compress/View/CompressCustomHeaderView.swift
+6
-1
PhotoRemoveViewController.swift
...lass/Page/Home/Controller/PhotoRemoveViewController.swift
+3
-3
DateSelectButtonView.swift
PhoneManager/Class/Page/Home/View/DateSelectButtonView.swift
+3
-0
HomeInfoView.swift
PhoneManager/Class/Page/Home/View/HomeInfoView.swift
+4
-1
HomePhotosDetailCustomHeaderView.swift
...ass/Page/Home/View/HomePhotosDetailCustomHeaderView.swift
+4
-1
HomeVideoDetailCustomHeaderView.swift
...lass/Page/Home/View/HomeVideoDetailCustomHeaderView.swift
+4
-1
HomePhotosModel .swift
...Manager/Class/Page/Home/View/Model/HomePhotosModel .swift
+0
-4
PhotoVideoDetailNavView.swift
...anager/Class/Page/Home/View/PhotoVideoDetailNavView.swift
+8
-3
ResourceFilterBoxView.swift
...eManager/Class/Page/Home/View/ResourceFilterBoxView.swift
+92
-33
PMLoadingView.swift
PhoneManager/Class/Page/Public/Loading/PMLoadingView.swift
+11
-0
PMShowImgVideoController.swift
...eManager/Class/Page/Secret/PMShowImgVideoController.swift
+56
-8
Singleton.swift
PhoneManager/Class/Tool/Singleton/Singleton.swift
+0
-2
No files found.
PhoneManager/Class/Page/Compress/Controller/CompressCompletedViewController.swift
View file @
b2337b07
...
...
@@ -370,8 +370,6 @@ class CompressCompletedViewController : BaseViewController{
// 移除VC中的数据
let
compressVC
=
self
.
navigationController
?
.
viewControllers
.
first
(
where
:
{
$0
is
CompressController
})
as!
CompressController
as
CompressController
compressVC
.
resourceData
.
removeAll
{
$0
.
localIdentifier
==
flag
}
// 移除单利中的数据
Singleton
.
shared
.
resourceModel
.
removeAll
{
$0
.
localIdentifier
==
flag
}
}
}
...
...
PhoneManager/Class/Page/Compress/Controller/CompressController.swift
View file @
b2337b07
...
...
@@ -117,23 +117,15 @@ class CompressController : BaseViewController {
}
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."
)
PMLoadingHUD
.
share
.
showLoding
()
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
()
}
}
}
}
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
super
.
viewWillAppear
(
animated
)
...
...
@@ -231,10 +223,20 @@ 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
.
sortViewSubmitCallBack
=
{
[
weak
self
]
fileterModel
in
header
.
sortViewSubmitCallBack
=
{
[
weak
self
]
filterModel
in
guard
let
self
else
{
return
}
// 重新获取数据,过滤数据
self
.
currentSort
=
filterModel
.
sortType
PMLoadingHUD
.
share
.
showLoding
()
CompressViewModel
()
.
getAllPhotosToAssets
(
sortType
:
self
.
currentSort
,
assetType
:
self
.
currentResourceType
)
{
[
weak
self
]
models
in
guard
let
self
else
{
return
}
self
.
currentSort
=
fileterModel
.
sortType
self
.
sortByType
(
sortType
:
self
.
currentSort
)
// 过滤数据
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
guard
let
self
else
{
return
}
...
...
@@ -247,7 +249,7 @@ 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."
)
PMLoadingHUD
.
share
.
show
Loding
(
)
CompressViewModel
()
.
getAllPhotosToAssets
(
sortType
:
self
.
currentSort
,
assetType
:
flag
)
{
[
weak
self
]
models
in
guard
let
self
else
{
return
}
self
.
resourceData
=
models
...
...
@@ -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
){
switch
sortType
{
case
.
largest
:
...
...
PhoneManager/Class/Page/Compress/View/CompressCustomHeaderView.swift
View file @
b2337b07
...
...
@@ -9,6 +9,8 @@ import Foundation
class
CompressCustomHeaderView
:
UICollectionReusableView
{
var
filterBoxModel
:
ResourceFilterBoxModel
?
var
sortViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
var
modeData
=
[
AssetModel
]()
{
...
...
@@ -169,12 +171,15 @@ class CompressCustomHeaderView: UICollectionReusableView{
@objc
func
filterButtonAction
(){
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
.
addSubview
(
filterView
)
filterView
.
submitCallBack
=
{
model
in
self
.
filterBoxModel
=
model
DispatchQueue
.
main
.
async
{
self
.
filterButton
.
setTitle
(
model
.
sortType
.
rawValue
,
for
:
.
normal
)
}
...
...
PhoneManager/Class/Page/Home/Controller/PhotoRemoveViewController.swift
View file @
b2337b07
...
...
@@ -26,8 +26,8 @@ class PhotoRemoveViewController: BaseViewController {
let
formatter
=
DateFormatter
()
lazy
var
navView
:
Photo
Remove
NavView
=
{
let
view
=
Photo
Remove
NavView
()
lazy
var
navView
:
Photo
VideoDetail
NavView
=
{
let
view
=
Photo
VideoDetail
NavView
()
return
view
}()
...
...
@@ -83,7 +83,7 @@ class PhotoRemoveViewController: BaseViewController {
formatter
.
dateStyle
=
.
medium
formatter
.
timeStyle
=
.
none
if
let
type
=
self
.
mediaType
{
self
.
navView
.
mediaType
=
type
self
.
navView
.
showType
=
type
==
.
video
?
.
dateAndSizeNav
:
.
dateTimeNav
}
self
.
view
.
addSubview
(
self
.
navView
)
self
.
navView
.
snp
.
makeConstraints
{
make
in
...
...
PhoneManager/Class/Page/Home/View/DateSelectButtonView.swift
View file @
b2337b07
...
...
@@ -9,6 +9,8 @@ import Foundation
class
DateSelectButtonView
:
UIView
{
var
closeCallBack
:
()
->
Void
=
{}
var
type
:
PikerDateType
?
lazy
var
dateButton
:
UIButton
=
{
...
...
@@ -54,6 +56,7 @@ class DateSelectButtonView : UIView {
@objc
func
closeButtonAction
(){
reSetButtonTitle
()
self
.
closeCallBack
()
}
func
reSetButtonTitle
()
{
...
...
PhoneManager/Class/Page/Home/View/HomeInfoView.swift
View file @
b2337b07
...
...
@@ -497,6 +497,8 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
class
HomeInfoTitleView
:
UIView
{
var
filterBoxModel
:
ResourceFilterBoxModel
?
var
sortViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
var
type
:
PhotsFileType
?
...
...
@@ -610,12 +612,13 @@ class HomeInfoTitleView:UIView {
@objc
func
filterButtonAction
(){
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
.
addSubview
(
filterView
)
filterView
.
submitCallBack
=
{
model
in
self
.
filterBoxModel
=
model
DispatchQueue
.
main
.
async
{
self
.
filterButton
.
setTitle
(
model
.
sortType
.
rawValue
,
for
:
.
normal
)
}
...
...
PhoneManager/Class/Page/Home/View/HomePhotosDetailCustomHeaderView.swift
View file @
b2337b07
...
...
@@ -9,6 +9,8 @@ import Foundation
class
HomePhotosDetailCustomHeaderView
:
UICollectionReusableView
{
var
filterBoxModel
:
ResourceFilterBoxModel
?
var
sortViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
lazy
var
modelTitlelabel
:
UILabel
=
{
...
...
@@ -86,12 +88,13 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
@objc
func
filterButtonAction
(){
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
.
addSubview
(
filterView
)
filterView
.
submitCallBack
=
{
model
in
self
.
filterBoxModel
=
model
DispatchQueue
.
main
.
async
{
self
.
filterButton
.
setTitle
(
model
.
sortType
.
rawValue
,
for
:
.
normal
)
}
...
...
PhoneManager/Class/Page/Home/View/HomeVideoDetailCustomHeaderView.swift
View file @
b2337b07
...
...
@@ -8,6 +8,8 @@
import
Foundation
class
HomeVideoDetailCustomHeaderView
:
UICollectionReusableView
{
var
filterBoxModel
:
ResourceFilterBoxModel
?
var
sortViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
lazy
var
modelTitlelabel
:
UILabel
=
{
...
...
@@ -99,12 +101,13 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
@objc
func
filterButtonAction
(){
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
.
addSubview
(
filterView
)
filterView
.
submitCallBack
=
{
model
in
self
.
filterBoxModel
=
model
DispatchQueue
.
main
.
async
{
self
.
filterButton
.
setTitle
(
model
.
sortType
.
rawValue
,
for
:
.
normal
)
}
...
...
PhoneManager/Class/Page/Home/View/Model/HomePhotosModel .swift
View file @
b2337b07
...
...
@@ -111,10 +111,6 @@ class PhotoDataManager {
let
dataUpdated
=
Notification
.
Name
(
"DataUpdatedNotification"
)
NotificationCenter
.
default
.
post
(
name
:
dataUpdated
,
object
:
nil
,
userInfo
:
nil
)
})
// 将单利中的数据也删除
for
item
in
data
{
Singleton
.
shared
.
resourceModel
.
removeAll
{
$0
.
localIdentifier
==
item
.
localIdentifier
}
}
}
// 从文件读取
...
...
PhoneManager/Class/Page/Home/View/Photo
Remove
NavView.swift
→
PhoneManager/Class/Page/Home/View/Photo
VideoDetail
NavView.swift
View file @
b2337b07
...
...
@@ -8,7 +8,12 @@
import
UIKit
import
SnapKit
class
PhotoRemoveNavView
:
UIView
{
enum
PhotoVideoDetailNavType
{
case
dateTimeNav
case
dateAndSizeNav
}
class
PhotoVideoDetailNavView
:
UIView
{
public
var
backButton
:
UIButton
!
...
...
@@ -22,9 +27,9 @@ class PhotoRemoveNavView: UIView {
var
reSetCallBack
:()
->
Void
=
{}
public
var
mediaType
:
TrashTypeEnum
=
.
shot
{
public
var
showType
:
PhotoVideoDetailNavType
=
.
dateTimeNav
{
didSet
{
if
mediaType
==
.
video
{
if
showType
==
.
dateAndSizeNav
{
self
.
sizeLbel
.
isHidden
=
false
self
.
topConstraint
?
.
update
(
offset
:
22
+
statusBarHeight
)
}
else
{
...
...
PhoneManager/Class/Page/Home/View/ResourceFilterBoxView.swift
View file @
b2337b07
...
...
@@ -35,7 +35,7 @@ class ResourceFilterBoxView : UIView {
var
startDate
:
Date
?
var
endDate
:
Date
?
var
current
Index
:
Int
=
0
var
current
SortType
:
ResouceSortType
=
.
largest
let
tableData
:
[
String
]
=
[
"The largest"
,
"The smallest"
,
"The latest"
,
"The oldest"
]
var
callBack
:
callBack
<
Any
>
=
{
sortType
in
}
...
...
@@ -112,12 +112,75 @@ class ResourceFilterBoxView : UIView {
return
view
}()
override
init
(
frame
:
CGRect
)
{
init
(
frame
:
CGRect
,
startDate
:
Date
?,
endDate
:
Date
?,
sortType
:
ResouceSortType
?
)
{
super
.
init
(
frame
:
frame
)
self
.
startDate
=
startDate
self
.
endDate
=
endDate
if
let
sortType
=
sortType
{
self
.
currentSortType
=
sortType
}
addViews
()
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
{
// 检查输入是否在有效范围内(1-12)
guard
(
1
...
12
)
.
contains
(
month
)
else
{
...
...
@@ -149,6 +212,13 @@ class ResourceFilterBoxView : UIView {
self
.
selectedView
.
addSubview
(
self
.
tableView
)
self
.
selectedView
.
addSubview
(
self
.
applyButton
)
self
.
startDateButton
.
closeCallBack
=
{
self
.
startDate
=
nil
}
self
.
endDateButton
.
closeCallBack
=
{
self
.
endDate
=
nil
}
self
.
startDateButton
.
reSetButtonTitle
()
self
.
endDateButton
.
reSetButtonTitle
()
...
...
@@ -219,27 +289,10 @@ class ResourceFilterBoxView : UIView {
self
.
removeFromSuperview
()
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
?
{
var
components
=
DateComponents
()
components
.
year
=
year
...
...
@@ -320,17 +373,7 @@ class ResourceFilterBoxView : UIView {
self
.
dismissDatePicker
()
}
self
.
datePicker
?
.
onConfirm
=
{
type
,
year
,
month
in
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
)
}
}
self
.
resetDateStringFromYearAndMonth
(
year
:
year
,
month
:
month
,
type
:
type
)
self
.
dismissDatePicker
()
}
}
...
...
@@ -359,10 +402,10 @@ extension ResourceFilterBoxView : UITableViewDataSource,UITableViewDelegate {
cell
.
selectButton
.
setTitle
(
tableData
[
indexPath
.
row
],
for
:
.
normal
)
cell
.
callBack
=
{
[
weak
self
]
cellTag
in
guard
let
self
=
self
else
{
return
}
self
.
current
Index
=
cellTag
as!
Int
self
.
current
SortType
=
getSortTypeByTag
(
index
:
cellTag
as!
Int
)
self
.
tableView
.
reloadData
()
}
if
indexPath
.
row
==
currentIndex
{
if
getSortTypeByTag
(
index
:
indexPath
.
row
)
==
currentSortType
{
cell
.
selectButton
.
layer
.
borderWidth
=
1.0
cell
.
selectButton
.
setTitleColor
(
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
),
for
:
.
normal
)
}
else
{
...
...
@@ -375,4 +418,20 @@ extension ResourceFilterBoxView : UITableViewDataSource,UITableViewDelegate {
func
tableView
(
_
tableView
:
UITableView
,
heightForRowAt
indexPath
:
IndexPath
)
->
CGFloat
{
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
}
}
PhoneManager/Class/Page/Public/Loading/PMLoadingView.swift
View file @
b2337b07
...
...
@@ -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
(){
DispatchQueue
.
main
.
async
{
self
.
loadingView
.
animationView
.
stop
()
...
...
PhoneManager/Class/Page/Secret/PMShowImgVideoController.swift
View file @
b2337b07
...
...
@@ -29,6 +29,12 @@ class PMShowImgVideoController: BaseViewController {
var
imageVideoPath
:[
String
]
=
[]
lazy
var
navView
:
PhotoVideoDetailNavView
=
{
let
view
=
PhotoVideoDetailNavView
()
return
view
}()
// 首页过来的数据
var
homeDataSource
:
[
ImageSeletedCollectionItem
]?
{
didSet
{
...
...
@@ -42,7 +48,11 @@ class PMShowImgVideoController: BaseViewController {
}
}
var
currentIdx
=
0
var
currentIdx
=
0
{
didSet
{
changeNavInfo
()
}
}
var
selectSet
=
NSMutableSet
()
var
backOrgPageCallBack
:
(
IndexPath
?,[
ImageSeletedCollectionItem
]?)
->
Void
=
{
index
,
data
in
}
...
...
@@ -53,6 +63,13 @@ class PMShowImgVideoController: BaseViewController {
super
.
viewDidLoad
()
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
)
{
...
...
@@ -69,6 +86,17 @@ class PMShowImgVideoController: BaseViewController {
}
self
.
view
.
layoutIfNeeded
()
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 {
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
=
{
let
flowlayout
=
UICollectionViewFlowLayout
()
flowlayout
.
sectionInset
=
UIEdgeInsets
()
...
...
@@ -129,11 +164,20 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
let
offsetx
=
MaxCollection
.
contentOffset
.
x
let
width
=
collectView
.
width
let
current
:
Int
=
Int
(
offsetx
/
width
)
//
currentIdx = current
self
.
currentIdx
=
current
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
{
if
collectionView
==
bottItems
{
...
...
@@ -142,15 +186,13 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
UIView
.
animate
(
withDuration
:
0.5
)
{
collectionView
.
contentOffset
=
CGPointMake
(
idx
*
(
68
+
10
)
,
0
)
}
self
.
currentIdx
=
Int
(
idx
)
MaxCollection
.
scrollToItem
(
at
:
IndexPath
(
row
:
Int
(
idx
),
section
:
0
),
at
:
.
centeredHorizontally
,
animated
:
true
)
}
}
func
scrollViewDidEndDecelerating
(
_
scrollView
:
UIScrollView
)
{
guard
let
collectView
=
scrollView
as?
UICollectionView
else
{
return
}
// if collectView == MaxCollection {
// bottItems.reloadData()
// }
self
.
setMaxCollection
(
collectionView
:
collectView
)
}
...
...
@@ -208,7 +250,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
showName
.
loadPhotoOrVideo
{
durs
,
icon
in
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
.
callblock
=
{[
weak
self
]
in
guard
let
self
=
self
else
{
return
}
...
...
@@ -263,7 +307,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
let
cell
=
collectionView
.
dequeueReusableCell
(
withReuseIdentifier
:
PMShowImgCellID
,
for
:
indexPath
)
as!
PMShowImgCell
cell
.
icon
=
self
.
homeDataSource
!
[
indexPath
.
row
]
.
image
??
UIImage
()
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
guard
let
self
=
self
else
{
return
}
self
.
vibrate
()
...
...
@@ -307,7 +353,9 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
// 表示这个是视频
cell
.
type
=
1
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
guard
let
self
=
self
else
{
return
}
self
.
vibrate
()
...
...
PhoneManager/Class/Tool/Singleton/Singleton.swift
View file @
b2337b07
...
...
@@ -15,8 +15,6 @@ class Singleton {
// 私有化初始化方法,防止外部创建新实例
private
init
()
{}
var
resourceModel
:
[
AssetModel
]
=
[]
var
maxDeleteCount
:
Int
=
25
var
trashData
:
[
TrashTypeEnum
:
[
AssetModel
]]
=
[:]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment