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
abc95e48
Commit
abc95e48
authored
May 19, 2025
by
yqz
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop_0409' into yQz0507
* develop_0409: 【修复】合并代码问题 【优化】修改部分bug、优化功能 【优化】部分逻辑新增和bug修复 优化
parents
0328cde7
2f09d72d
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
701 additions
and
696 deletions
+701
-696
CompressController.swift
...r/Class/Page/Compress/Controller/CompressController.swift
+23
-49
CompressCustomHeaderView.swift
...r/Class/Page/Compress/View/CompressCustomHeaderView.swift
+35
-51
CompressViewModel.swift
...ger/Class/Page/Compress/ViewModel/CompressViewModel.swift
+5
-28
HomeInfoViewController.swift
...r/Class/Page/Home/Controller/HomeInfoViewController.swift
+5
-0
HomePhotosDetailViewController.swift
...Page/Home/Controller/HomePhotosDetailViewController.swift
+215
-105
HomeVideoDetailController.swift
...lass/Page/Home/Controller/HomeVideoDetailController.swift
+197
-98
PhotoDetailViewController.swift
...lass/Page/Home/Controller/PhotoDetailViewController.swift
+1
-0
PhotoRemoveViewController.swift
...lass/Page/Home/Controller/PhotoRemoveViewController.swift
+9
-3
HomeDetailDeleteView.swift
PhoneManager/Class/Page/Home/View/HomeDetailDeleteView.swift
+46
-0
HomeInfoView.swift
PhoneManager/Class/Page/Home/View/HomeInfoView.swift
+52
-36
HomePhotosDetailCustomHeaderView.swift
...ass/Page/Home/View/HomePhotosDetailCustomHeaderView.swift
+36
-52
HomeVideoDetailCustomHeaderView.swift
...lass/Page/Home/View/HomeVideoDetailCustomHeaderView.swift
+39
-149
PhotosRemoveBaseView.swift
PhoneManager/Class/Page/Home/View/PhotosRemoveBaseView.swift
+1
-0
ResourceFilterBoxView.swift
...eManager/Class/Page/Home/View/ResourceFilterBoxView.swift
+9
-3
TrashSubView.swift
PhoneManager/Class/Page/Home/View/TrashSubView.swift
+5
-1
YearMonthPickerView.swift
PhoneManager/Class/Page/Home/View/YearMonthPickerView.swift
+11
-2
HomeInfoTableViewCell.swift
...ger/Class/Page/Home/View/cell/HomeInfoTableViewCell.swift
+2
-3
PMLoadingView.swift
PhoneManager/Class/Page/Public/Loading/PMLoadingView.swift
+2
-1
PMShowImgVideoController.swift
...eManager/Class/Page/Secret/PMShowImgVideoController.swift
+2
-0
TrashViewController.swift
...ger/Class/Page/Trash/Controller/TrashViewController.swift
+4
-56
TrashUIModel.swift
PhoneManager/Class/Page/Trash/Model/TrashUIModel.swift
+0
-3
TrashContenTitleCell.swift
...eManager/Class/Page/Trash/View/TrashContenTitleCell.swift
+1
-13
TrashContenView.swift
PhoneManager/Class/Page/Trash/View/TrashContenView.swift
+1
-33
TrashDefaultView.swift
PhoneManager/Class/Page/Trash/View/TrashDefaultView.swift
+0
-10
No files found.
PhoneManager/Class/Page/Compress/Controller/CompressController.swift
View file @
abc95e48
...
@@ -21,14 +21,12 @@ class CompressController : BaseViewController {
...
@@ -21,14 +21,12 @@ class CompressController : BaseViewController {
private
var
compressNav
:
CompressNavView
?
private
var
compressNav
:
CompressNavView
?
// 排序
// 排序
var
currentSort
:
Int
=
0
{
var
currentSort
:
ResouceSortType
=
.
largest
{
didSet
{
didSet
{
clearSelected
()
clearSelected
()
}
}
}
}
// 资源类型 - 相册或者视频
// 资源类型 - 相册或者视频
var
currentResourceType
:
CompressType
=
.
compressPhoto
var
currentResourceType
:
CompressType
=
.
compressPhoto
...
@@ -122,22 +120,17 @@ class CompressController : BaseViewController {
...
@@ -122,22 +120,17 @@ class CompressController : BaseViewController {
let
datas
=
Singleton
.
shared
.
resourceModel
let
datas
=
Singleton
.
shared
.
resourceModel
if
datas
.
count
>
0
{
if
datas
.
count
>
0
{
// 这里需要重新排序下
// 这里需要重新排序下
if
self
.
currentSort
==
0
{
self
.
resourceData
=
datas
self
.
resourceData
=
datas
.
sorted
{
$0
.
assetSize
>
$1
.
assetSize
}
self
.
sortByType
(
sortType
:
self
.
currentSort
)
}
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
}
}
}
else
{
}
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
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
Singleton
.
shared
.
resourceModel
=
self
.
resourceData
PMLoadingHUD
.
share
.
disMiss
()
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
1.0
)
{
PMLoadingHUD
.
share
.
disMiss
()
}
}
}
}
}
}
}
...
@@ -238,20 +231,10 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
...
@@ -238,20 +231,10 @@ 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
.
callBack
=
{[
weak
self
]
text
in
header
.
sortViewSubmitCallBack
=
{
[
weak
self
]
fileterModel
in
guard
let
self
else
{
return
}
guard
let
self
else
{
return
}
let
sortView
=
CompressSortView
(
frame
:
self
.
view
.
bounds
)
self
.
currentSort
=
fileterModel
.
sortType
self
.
sortByType
(
sortType
:
self
.
currentSort
)
// 这两行是为了进入页面的时候选中
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
)
}
}
}
header
.
changeView
.
callBack
=
{[
weak
self
]
flag
in
header
.
changeView
.
callBack
=
{[
weak
self
]
flag
in
guard
let
self
else
{
return
}
guard
let
self
else
{
return
}
...
@@ -264,9 +247,13 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
...
@@ -264,9 +247,13 @@ 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
()
}
}
}
}
}
}
}
...
@@ -284,34 +271,21 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
...
@@ -284,34 +271,21 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
}
}
}
}
func
sortByType
(
sortType
:
ResouceSortType
){
func
sortByType
(
sortType
:
Int
,
header
:
CompressCustomHeaderView
){
let
viewModel
=
CompressViewModel
()
switch
sortType
{
switch
sortType
{
case
0
:
case
.
largest
:
header
.
selectlabel
.
text
=
"Largest"
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
>
$1
.
assetSize
}
// 按照文件大小降序
self
.
resourceData
=
viewModel
.
sortRsource
(
resource
:
self
.
resourceData
,
sortType
:
1
,
sortKind
:
0
)
break
break
case
1
:
case
.
smallest
:
header
.
selectlabel
.
text
=
"Smallest"
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
<
$1
.
assetSize
}
// 按照文件大小升序
self
.
resourceData
=
viewModel
.
sortRsource
(
resource
:
self
.
resourceData
,
sortType
:
0
,
sortKind
:
0
)
break
break
case
2
:
case
.
latest
:
header
.
selectlabel
.
text
=
"Newest"
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
>
$1
.
createDate
}
// 按照时间降序
self
.
resourceData
=
viewModel
.
sortRsource
(
resource
:
self
.
resourceData
,
sortType
:
1
,
sortKind
:
1
)
break
break
case
3
:
case
.
oldest
:
header
.
selectlabel
.
text
=
"Oldest"
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
<
$1
.
createDate
}
// 按照时间升序
self
.
resourceData
=
viewModel
.
sortRsource
(
resource
:
self
.
resourceData
,
sortType
:
0
,
sortKind
:
1
)
break
default
:
break
break
}
}
}
}
func
updateSubmitButton
(){
func
updateSubmitButton
(){
...
...
PhoneManager/Class/Page/Compress/View/CompressCustomHeaderView.swift
View file @
abc95e48
...
@@ -9,7 +9,7 @@ import Foundation
...
@@ -9,7 +9,7 @@ import Foundation
class
CompressCustomHeaderView
:
UICollectionReusableView
{
class
CompressCustomHeaderView
:
UICollectionReusableView
{
var
callBack
:
callBack
<
Any
>
=
{
text
in
}
var
sortViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
var
modeData
=
[
AssetModel
]()
{
var
modeData
=
[
AssetModel
]()
{
didSet
{
didSet
{
...
@@ -51,35 +51,21 @@ class CompressCustomHeaderView: UICollectionReusableView{
...
@@ -51,35 +51,21 @@ class CompressCustomHeaderView: UICollectionReusableView{
return
label
return
label
}()
}()
lazy
var
btnView
:
UIView
=
{
// 筛选按钮
let
view
=
UIView
()
lazy
var
filterButton
:
UIButton
=
{
view
.
backgroundColor
=
UIColor
(
red
:
0.95
,
green
:
0.96
,
blue
:
0.99
,
alpha
:
1
)
let
button
=
UIButton
(
type
:
.
custom
)
view
.
layer
.
cornerRadius
=
16
button
.
setImage
(
UIImage
(
named
:
"Frame 1"
),
for
:
.
normal
)
view
.
clipsToBounds
=
true
button
.
setTitle
(
"The largest"
,
for
:
.
normal
)
button
.
layer
.
cornerRadius
=
14
button
.
clipsToBounds
=
true
let
tap
=
UITapGestureRecognizer
()
button
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
0.1000
)
tap
.
addTarget
(
self
,
action
:
#selector(
selectQulity
)
)
button
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
,
weight
:
.
semibold
)
view
.
isUserInteractionEnabled
=
true
button
.
setTitleColor
(
UIColor
(
red
:
0.07
,
green
:
0.07
,
blue
:
0.07
,
alpha
:
1
),
for
:
.
normal
)
view
.
addGestureRecognizer
(
tap
)
button
.
addTarget
(
self
,
action
:
#selector(
filterButtonAction
)
,
for
:
.
touchUpInside
)
button
.
isHidden
=
false
return
button
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
siezLabel
:
UILabel
=
{
lazy
var
siezLabel
:
UILabel
=
{
let
label
=
UILabel
()
let
label
=
UILabel
()
label
.
text
=
"1.02 GB"
label
.
text
=
"1.02 GB"
...
@@ -128,9 +114,7 @@ class CompressCustomHeaderView: UICollectionReusableView{
...
@@ -128,9 +114,7 @@ class CompressCustomHeaderView: UICollectionReusableView{
private
func
setUI
(){
private
func
setUI
(){
self
.
addSubview
(
self
.
titlelabel
)
self
.
addSubview
(
self
.
titlelabel
)
self
.
addSubview
(
self
.
btnView
)
self
.
addSubview
(
self
.
filterButton
)
self
.
btnView
.
addSubview
(
self
.
selectImageView
)
self
.
btnView
.
addSubview
(
self
.
selectlabel
)
self
.
addSubview
(
self
.
siezLabel
)
self
.
addSubview
(
self
.
siezLabel
)
self
.
addSubview
(
self
.
changeView
)
self
.
addSubview
(
self
.
changeView
)
self
.
addSubview
(
self
.
tipView
)
self
.
addSubview
(
self
.
tipView
)
...
@@ -144,27 +128,17 @@ class CompressCustomHeaderView: UICollectionReusableView{
...
@@ -144,27 +128,17 @@ class CompressCustomHeaderView: UICollectionReusableView{
make
.
height
.
equalTo
(
28
)
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
.
right
.
equalToSuperview
()
.
offset
(
0
)
make
.
top
.
equalToSuperview
()
.
offset
(
12
)
make
.
height
.
equalTo
(
28
)
make
.
width
.
equalTo
(
103
*
RScreenW
())
make
.
width
.
equalTo
(
98
)
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
.
siezLabel
.
snp
.
makeConstraints
{
make
in
self
.
siezLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
0
)
make
.
left
.
equalTo
(
0
)
make
.
right
.
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
)
make
.
height
.
equalTo
(
20
)
}
}
self
.
changeView
.
snp
.
makeConstraints
{
make
in
self
.
changeView
.
snp
.
makeConstraints
{
make
in
...
@@ -193,10 +167,20 @@ class CompressCustomHeaderView: UICollectionReusableView{
...
@@ -193,10 +167,20 @@ class CompressCustomHeaderView: UICollectionReusableView{
}
}
@objc
func
selectQulity
(){
@objc
func
filterButtonAction
(){
if
let
cWindow
=
cWindow
{
let
filterView
:
ResourceFilterBoxView
=
ResourceFilterBoxView
.
init
(
frame
:
cWindow
.
bounds
)
callBack
(
"selectedQulity"
)
// 添加毛玻璃效果
cWindow
.
showBlur
()
cWindow
.
addSubview
(
filterView
)
filterView
.
submitCallBack
=
{
model
in
DispatchQueue
.
main
.
async
{
self
.
filterButton
.
setTitle
(
model
.
sortType
.
rawValue
,
for
:
.
normal
)
}
self
.
sortViewSubmitCallBack
(
model
)
}
}
}
}
...
...
PhoneManager/Class/Page/Compress/ViewModel/CompressViewModel.swift
View file @
abc95e48
...
@@ -67,7 +67,7 @@ class CompressViewModel{
...
@@ -67,7 +67,7 @@ class CompressViewModel{
/// 获取相册所有图片
/// 获取相册所有图片
/// - Returns: 图片信息
/// - Returns: 图片信息
func
getAllPhotosToAssets
(
sortType
:
Int
,
assetType
:
CompressType
,
_
finished
:
@escaping
Finished
){
func
getAllPhotosToAssets
(
sortType
:
ResouceSortType
,
assetType
:
CompressType
,
_
finished
:
@escaping
Finished
){
var
models
:
[
AssetModel
]
=
[]
var
models
:
[
AssetModel
]
=
[]
...
@@ -108,11 +108,11 @@ class CompressViewModel{
...
@@ -108,11 +108,11 @@ class CompressViewModel{
group
.
leave
()
group
.
leave
()
if
count
==
assetsArray
.
count
{
if
count
==
assetsArray
.
count
{
// 默认按照文件大小排序
// 默认按照文件大小排序
if
sortType
==
0
{
if
sortType
==
.
largest
{
finished
(
models
.
sorted
{
$0
.
assetSize
>
$1
.
assetSize
})
finished
(
models
.
sorted
{
$0
.
assetSize
>
$1
.
assetSize
})
}
else
if
sortType
==
1
{
}
else
if
sortType
==
.
smallest
{
finished
(
models
.
sorted
{
$0
.
assetSize
<
$1
.
assetSize
})
finished
(
models
.
sorted
{
$0
.
assetSize
<
$1
.
assetSize
})
}
else
if
sortType
==
2
{
}
else
if
sortType
==
.
latest
{
finished
(
models
.
sorted
{
$0
.
createDate
>
$1
.
createDate
})
finished
(
models
.
sorted
{
$0
.
createDate
>
$1
.
createDate
})
}
else
{
}
else
{
finished
(
models
.
sorted
{
$0
.
createDate
<
$1
.
createDate
})
finished
(
models
.
sorted
{
$0
.
createDate
<
$1
.
createDate
})
...
@@ -122,30 +122,7 @@ class CompressViewModel{
...
@@ -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:
/// - Parameters:
...
...
PhoneManager/Class/Page/Home/Controller/HomeInfoViewController.swift
View file @
abc95e48
...
@@ -313,6 +313,11 @@ class HomeInfoViewController:BaseViewController {
...
@@ -313,6 +313,11 @@ class HomeInfoViewController:BaseViewController {
titleView
.
model
.
title
=
""
titleView
.
model
.
title
=
""
showTipsVC
()
showTipsVC
()
self
.
tablewView
.
keepAllNoDataCallBack
=
{
self
.
ids
=
[]
self
.
setDefaultPage
()
}
}
}
...
...
PhoneManager/Class/Page/Home/Controller/HomePhotosDetailViewController.swift
View file @
abc95e48
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
import
Foundation
import
Foundation
import
Photos
import
Photos
import
SnapKit
class
HomePhotosDetailViewController
:
BaseViewController
{
class
HomePhotosDetailViewController
:
BaseViewController
{
private
var
headerHeight
:
CGFloat
=
98
private
var
headerHeight
:
CGFloat
=
98
...
@@ -15,7 +16,18 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -15,7 +16,18 @@ class HomePhotosDetailViewController : BaseViewController {
private
var
currentHeaderView
:
HomePhotosDetailCustomHeaderView
?
private
var
currentHeaderView
:
HomePhotosDetailCustomHeaderView
?
var
mediaType
:
PhotsFileType
?
private
var
deleteViewBottomConstraint
:
Constraint
?
var
mediaType
:
PhotsFileType
?
{
didSet
{
if
mediaType
==
PhotsFileType
.
videos
{
self
.
trashSubView
.
tipLabel
.
text
=
"The video in the trash can"
}
else
{
self
.
trashSubView
.
tipLabel
.
text
=
"The photo in the trash can"
}
}
}
var
imageCache
=
NSCache
<
NSString
,
UIImage
>
()
var
imageCache
=
NSCache
<
NSString
,
UIImage
>
()
...
@@ -25,17 +37,42 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -25,17 +37,42 @@ class HomePhotosDetailViewController : BaseViewController {
var
resourceData
:
[
AssetModel
]
=
[]
var
resourceData
:
[
AssetModel
]
=
[]
// 排序
// 排序
var
currentSort
:
Int
=
0
var
currentSort
:
ResouceSortType
=
.
largest
// 当前页面选中的
// 当前页面选中的
var
selectedModel
:
[
AssetModel
]
=
[]
{
var
selectedModel
:
[
AssetModel
]
=
[]
{
didSet
{
didSet
{
if
self
.
selectedModel
.
count
==
0
{
DispatchQueue
.
main
.
async
{
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
if
self
.
selectedModel
.
count
==
0
{
}
else
if
self
.
selectedModel
.
count
==
1
{
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Photo"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
}
else
{
// 更新约束
self
.
deleteButton
.
setTitle
(
"Delete
\(
selectedModel
.
count
)
Photos"
,
for
:
.
normal
)
self
.
deleteViewBottomConstraint
?
.
update
(
offset
:
-
safeHeight
+
78
)
}
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
safeHeight
)
}
else
if
self
.
selectedModel
.
count
==
1
{
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Photo"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
// 更新约束
self
.
deleteViewBottomConstraint
?
.
update
(
offset
:
-
safeHeight
)
}
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
78
-
safeHeight
)
}
else
{
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Photos"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
// 更新约束
self
.
deleteViewBottomConstraint
?
.
update
(
offset
:
-
safeHeight
)
}
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
78
-
safeHeight
)
}
if
self
.
selectedModel
.
count
>
0
{
self
.
deleteButtonView
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
}
else
{
self
.
deleteButtonView
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
}
}
}
}
}
...
@@ -63,7 +100,7 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -63,7 +100,7 @@ class HomePhotosDetailViewController : BaseViewController {
let
layout
=
WaterfallMutiSectionFlowLayout
()
let
layout
=
WaterfallMutiSectionFlowLayout
()
layout
.
delegate
=
self
layout
.
delegate
=
self
let
sview
:
UICollectionView
=
UICollectionView
.
init
(
frame
:
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
104
),
collectionViewLayout
:
layout
)
let
sview
:
UICollectionView
=
UICollectionView
.
init
(
frame
:
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
safeHeight
),
collectionViewLayout
:
layout
)
sview
.
register
(
HomePhotosDetailCollectionCell
.
self
,
forCellWithReuseIdentifier
:
"HomePhotosDetailCollectionCell"
)
sview
.
register
(
HomePhotosDetailCollectionCell
.
self
,
forCellWithReuseIdentifier
:
"HomePhotosDetailCollectionCell"
)
sview
.
register
(
HomePhotosDetailCustomHeaderView
.
self
,
forSupplementaryViewOfKind
:
UICollectionView
.
elementKindSectionHeader
,
withReuseIdentifier
:
"HomePhotosDetailCustomHeaderView"
)
sview
.
register
(
HomePhotosDetailCustomHeaderView
.
self
,
forSupplementaryViewOfKind
:
UICollectionView
.
elementKindSectionHeader
,
withReuseIdentifier
:
"HomePhotosDetailCustomHeaderView"
)
...
@@ -80,18 +117,20 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -80,18 +117,20 @@ class HomePhotosDetailViewController : BaseViewController {
}()
}()
lazy
var
deleteButton
:
UIButton
=
{
lazy
var
deleteButtonView
:
HomeDetailDeleteView
=
{
let
view
=
UIButton
()
let
view
=
HomeDetailDeleteView
()
view
.
setTitle
(
"Delete"
,
for
:
UIControl
.
State
.
normal
)
view
.
addTopShadow
()
view
.
setTitleColor
(
.
white
,
for
:
.
normal
)
view
.
clipsToBounds
=
true
view
.
layer
.
cornerRadius
=
23
view
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
view
.
addTarget
(
self
,
action
:
#selector(
deleteButtonAction
)
,
for
:
.
touchUpInside
)
return
view
return
view
}()
}()
lazy
var
trashSubView
:
TrashSubView
=
{
let
view
=
TrashSubView
()
view
.
backgroundColor
=
.
white
view
.
isHidden
=
true
return
view
}()
func
setUI
(){
func
setUI
(){
...
@@ -113,17 +152,17 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -113,17 +152,17 @@ class HomePhotosDetailViewController : BaseViewController {
self
.
selectedModel
.
removeAll
()
self
.
selectedModel
.
removeAll
()
}
}
DispatchQueue
.
main
.
async
{
DispatchQueue
.
main
.
async
{
UIView
.
transition
(
with
:
self
.
collectionView
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
UIView
.
transition
(
with
:
self
.
collectionView
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
self
.
collectionView
.
reloadData
()
self
.
collectionView
.
reloadData
()
},
completion
:
nil
)
},
completion
:
nil
)
if
self
.
selectedModel
.
count
>
0
{
if
self
.
selectedModel
.
count
>
0
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
}
else
{
}
else
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
}
}
...
@@ -134,17 +173,17 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -134,17 +173,17 @@ class HomePhotosDetailViewController : BaseViewController {
self
.
selectedModel
.
removeAll
()
self
.
selectedModel
.
removeAll
()
}
}
DispatchQueue
.
main
.
async
{
DispatchQueue
.
main
.
async
{
UIView
.
transition
(
with
:
self
.
collectionView
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
UIView
.
transition
(
with
:
self
.
collectionView
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
self
.
collectionView
.
reloadData
()
self
.
collectionView
.
reloadData
()
},
completion
:
nil
)
},
completion
:
nil
)
if
self
.
selectedModel
.
count
>
0
{
if
self
.
selectedModel
.
count
>
0
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
}
else
{
}
else
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
}
}
}
}
...
@@ -153,12 +192,12 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -153,12 +192,12 @@ class HomePhotosDetailViewController : BaseViewController {
self
.
view
.
insertSubview
(
collectionView
,
at
:
0
)
self
.
view
.
insertSubview
(
collectionView
,
at
:
0
)
self
.
view
.
addSubview
(
self
.
deleteButton
)
self
.
view
.
addSubview
(
self
.
deleteButtonView
)
self
.
deleteButton
.
snp
.
makeConstraints
{
make
in
self
.
deleteButtonView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
self
.
collectionView
.
snp
.
bottom
)
.
offset
(
16
)
make
.
left
.
equalToSuperview
()
.
offset
(
15
)
make
.
left
.
equalToSuperview
()
.
offset
(
15
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
15
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
15
)
make
.
height
.
equalTo
(
46
)
make
.
height
.
equalTo
(
78
)
self
.
deleteViewBottomConstraint
=
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
safeHeight
+
78
)
.
constraint
}
}
self
.
view
.
addSubview
(
self
.
defaultImageView
)
self
.
view
.
addSubview
(
self
.
defaultImageView
)
...
@@ -174,9 +213,34 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -174,9 +213,34 @@ class HomePhotosDetailViewController : BaseViewController {
make
.
top
.
equalTo
(
self
.
defaultImageView
.
snp
.
bottom
)
.
offset
(
-
30
)
make
.
top
.
equalTo
(
self
.
defaultImageView
.
snp
.
bottom
)
.
offset
(
-
30
)
make
.
centerX
.
equalToSuperview
()
make
.
centerX
.
equalToSuperview
()
}
}
setDefaultPage
()
self
.
setDefaultPage
()
}
/// 是否添加垃圾桶数据
func
addTrashView
(){
DispatchQueue
.
main
.
async
{
self
.
trashSubView
.
removeFromSuperview
()
self
.
view
.
addSubview
(
self
.
trashSubView
)
self
.
trashSubView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
equalToSuperview
()
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
safeHeight
)
make
.
height
.
equalTo
(
78
)
}
// 判断垃圾桶有没有数据
let
array
=
TrashDataManager
.
getCurrentMediaTypeTrashData
(
mediaType
:
self
.
mediaType
==
PhotsFileType
.
Other
?
TrashTypeEnum
.
other
:
TrashTypeEnum
.
shot
)
self
.
trashSubView
.
resourceCountlabel
.
text
=
String
(
array
.
count
)
self
.
trashSubView
.
isHidden
=
array
.
count
<=
0
self
.
deleteButtonView
.
isHidden
=
array
.
count
>
0
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
array
.
count
>
0
// 改变collection的位置
if
array
.
count
>
0
{
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
78
-
safeHeight
)
}
else
{
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
safeHeight
)
}
}
}
}
...
@@ -189,18 +253,18 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -189,18 +253,18 @@ class HomePhotosDetailViewController : BaseViewController {
if
self
.
resourceData
.
count
==
0
{
if
self
.
resourceData
.
count
==
0
{
self
.
defaultImageView
.
isHidden
=
false
self
.
defaultImageView
.
isHidden
=
false
self
.
defaultTipLabel
.
isHidden
=
false
self
.
defaultTipLabel
.
isHidden
=
false
self
.
currentHeaderView
?
.
btnView
.
isHidden
=
true
self
.
currentHeaderView
?
.
filterButton
.
isHidden
=
true
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
true
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
true
self
.
deleteButton
.
isHidden
=
true
self
.
deleteButton
View
.
isHidden
=
true
}
else
{
}
else
{
self
.
defaultImageView
.
isHidden
=
true
self
.
defaultImageView
.
isHidden
=
true
self
.
defaultTipLabel
.
isHidden
=
true
self
.
defaultTipLabel
.
isHidden
=
true
self
.
currentHeaderView
?
.
btnView
.
isHidden
=
false
self
.
currentHeaderView
?
.
filterButton
.
isHidden
=
false
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
false
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
false
self
.
deleteButton
.
isHidden
=
false
self
.
deleteButton
View
.
isHidden
=
false
}
}
}
}
self
.
addTrashView
()
}
}
}
}
...
@@ -212,6 +276,33 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -212,6 +276,33 @@ class HomePhotosDetailViewController : BaseViewController {
setUI
()
setUI
()
showTipsVC
()
showTipsVC
()
self
.
deleteButtonView
.
deleteCallBack
=
{
self
.
deleteButtonAction
()
}
self
.
trashSubView
.
presentTashDetailViewClickCallBack
=
{[
weak
self
]
in
guard
let
self
else
{
return
}
// 进入垃圾桶详情页面
DispatchQueue
.
main
.
async
{
let
vc
:
TrashViewController
=
TrashViewController
()
vc
.
currentPage
=
self
.
mediaType
==
PhotsFileType
.
Other
?
2
:
3
vc
.
dissmisCallBack
=
{
self
.
addTrashView
()
}
self
.
present
(
vc
,
animated
:
true
)
}
}
self
.
trashSubView
.
clearTashDataCallBack
=
{[
weak
self
]
in
guard
let
self
else
{
return
}
// 清除垃圾桶数据
TrashDataManager
.
clearTrashData
(
mediaType
:
self
.
mediaType
==
PhotsFileType
.
Other
?
TrashTypeEnum
.
other
:
TrashTypeEnum
.
shot
)
{[
weak
self
]
in
guard
let
self
else
{
return
}
self
.
addTrashView
()
}
}
}
}
func
showTipsVC
(){
func
showTipsVC
(){
...
@@ -235,7 +326,7 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -235,7 +326,7 @@ class HomePhotosDetailViewController : BaseViewController {
}
}
TipsManager
.
saveLoadStatus
(
mediaType
)
TipsManager
.
saveLoadStatus
(
mediaType
)
}
}
// MARK:系统方法
// MARK:系统方法
...
@@ -256,6 +347,7 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -256,6 +347,7 @@ class HomePhotosDetailViewController : BaseViewController {
self
.
collectionView
.
reloadData
()
self
.
collectionView
.
reloadData
()
}
}
}
}
addTrashView
()
}
}
...
@@ -265,7 +357,7 @@ class HomePhotosDetailViewController : BaseViewController {
...
@@ -265,7 +357,7 @@ class HomePhotosDetailViewController : BaseViewController {
/// 获取当前页面数据
/// 获取当前页面数据
/// - Parameter completed: 完成回调
/// - Parameter completed: 完成回调
func
getCurrentPageData
(
completed
:
@escaping
()
->
Void
){
func
getCurrentPageData
(
completed
:
@escaping
()
->
Void
){
PhotoManager
.
shared
.
reloadTrashAndKeep
()
PhotoManager
.
shared
.
reloadTrashAndKeep
()
var
data
=
self
.
mediaType
==
.
Other
?
PhotoManager
.
shared
.
filterOtherModels
:
PhotoManager
.
shared
.
filterScreenShotModels
var
data
=
self
.
mediaType
==
.
Other
?
PhotoManager
.
shared
.
filterOtherModels
:
PhotoManager
.
shared
.
filterScreenShotModels
...
@@ -371,15 +463,54 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -371,15 +463,54 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
cell
.
cellCallBack
=
{[
weak
self
]
ident
,
order
in
cell
.
cellCallBack
=
{[
weak
self
]
ident
,
order
in
guard
let
self
else
{
return
}
guard
let
self
else
{
return
}
DispatchQueue
.
main
.
async
{
DispatchQueue
.
main
.
async
{
// 点击之后跳转详情页面
// 这里还需要判断下当前cell 是不是被选中了,选中了就不跳转左滑右滑动页面
if
self
.
mediaType
==
.
screenshots
{
if
self
.
videoDetailNavView
?
.
startSelectButton
.
isSelected
==
false
{
let
vc
=
PhotoRemoveViewController
(
data
:
self
.
resourceData
,
currentIndex
:
indexPath
.
row
,
mediaType
:
.
shot
)
// 点击之后跳转详情页面
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
if
self
.
mediaType
==
.
screenshots
{
}
let
vc
=
PhotoRemoveViewController
(
data
:
self
.
resourceData
,
currentIndex
:
indexPath
.
row
,
mediaType
:
.
shot
)
if
self
.
mediaType
==
.
Other
{
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
let
vc
=
PhotoRemoveViewController
(
data
:
self
.
resourceData
,
currentIndex
:
indexPath
.
row
,
mediaType
:
.
other
)
}
if
self
.
mediaType
==
.
Other
{
let
vc
=
PhotoRemoveViewController
(
data
:
self
.
resourceData
,
currentIndex
:
indexPath
.
row
,
mediaType
:
.
other
)
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
else
{
// 跳转PMSHow页面
// 点击之后跳转详情页面
let
vc
=
PMShowImgVideoController
()
vc
.
state
=
.
similarPhotos
vc
.
currentIdx
=
0
vc
.
oldPageIndexPath
=
indexPath
let
dataSource
=
ImageSeletedCollectionItem
()
dataSource
.
isSeleted
=
cell
.
choose
dataSource
.
id
=
ident
// 获取image
dataSource
.
image
=
PhotoAndVideoMananger
.
mananger
.
getImageFromAssetID
(
id
:
ident
.
localIdentifier
)
vc
.
homeDataSource
=
[
dataSource
]
vc
.
backOrgPageCallBack
=
{
index
,
data
in
if
let
data
=
data
{
if
let
item
=
data
.
first
{
if
let
selected
=
item
.
isSeleted
{
if
let
index
=
index
{
if
selected
==
true
{
self
.
selectedModel
.
append
(
self
.
resourceData
[
index
.
row
])
}
else
{
self
.
selectedModel
.
removeAll
(
where
:
{
$0
.
localIdentifier
==
self
.
resourceData
[
index
.
row
]
.
localIdentifier
})
}
DispatchQueue
.
main
.
async
{
if
let
tempCell
=
collectionView
.
cellForItem
(
at
:
index
)
as?
HomePhotosDetailCollectionCell
{
tempCell
.
choose
=
selected
}
}
}
}
}
}
}
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
}
}
}
}
cell
.
clickCallBack
=
{[
weak
self
]
click
,
order
in
cell
.
clickCallBack
=
{[
weak
self
]
click
,
order
in
...
@@ -390,14 +521,6 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -390,14 +521,6 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
self
.
selectedModel
.
removeAll
{
$0
.
localIdentifier
==
self
.
resourceData
[
order
]
.
localIdentifier
}
self
.
selectedModel
.
removeAll
{
$0
.
localIdentifier
==
self
.
resourceData
[
order
]
.
localIdentifier
}
}
}
self
.
vibrate
()
self
.
vibrate
()
DispatchQueue
.
main
.
async
{
if
self
.
selectedModel
.
count
>
0
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
}
else
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
}
}
return
cell
return
cell
...
@@ -442,19 +565,22 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -442,19 +565,22 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
header
.
modelTitlelabel
.
text
=
self
.
mediaType
?
.
rawValue
header
.
modelTitlelabel
.
text
=
self
.
mediaType
?
.
rawValue
currentHeaderView
=
header
currentHeaderView
=
header
header
.
sort
Callback
=
{[
weak
self
]
in
header
.
sort
ViewSubmitCallBack
=
{[
weak
self
]
filterModel
in
guard
let
self
else
{
return
}
guard
let
self
else
{
return
}
let
sortView
=
CompressSortView
(
frame
:
self
.
view
.
bounds
)
// 这两行是为了进入页面的时候选中
sortView
.
currentIndex
=
self
.
currentSort
sortView
.
tableView
.
reloadData
()
self
.
view
.
addSubview
(
sortView
)
var
dataS
:
[
AssetModel
]
=
[]
sortView
.
callBack
=
{[
weak
self
]
sortType
in
if
self
.
mediaType
==
.
Other
{
guard
let
self
else
{
return
}
dataS
=
PhotoManager
.
shared
.
filterOtherModels
self
.
currentSort
=
sortType
as!
Int
}
else
{
self
.
sortByType
(
sortType
:
self
.
currentSort
)
dataS
=
PhotoManager
.
shared
.
filterScreenShotModels
self
.
changeHeaderTitle
()
}
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
()
}
}
}
}
...
@@ -470,52 +596,33 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -470,52 +596,33 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
}
}
}
/// 改变标题
func
filterDataByDate
(
orgModels
:
[
AssetModel
],
startDate
:
Date
?
,
endDate
:
Date
?)
->
[
AssetModel
]{
func
changeHeaderTitle
(){
var
array
=
orgModels
var
title
:
String
=
"Largest"
if
startDate
!=
nil
{
switch
self
.
currentSort
{
array
=
array
.
filter
({
$0
.
createDate
>=
startDate
!
})
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
{
if
endDate
!=
nil
{
self
.
currentHeaderView
!.
selectlabel
.
text
=
title
array
=
array
.
filter
({
$0
.
createDate
<=
endDate
!
})
self
.
collectionView
.
reloadData
()
}
}
return
array
}
}
/// 对当前页面资源排序(注意这里获取的资源是image)
/// 对当前页面资源排序(注意这里获取的资源是image)
/// - Parameter sortType: 排序类型
/// - Parameter sortType: 排序类型
func
sortByType
(
sortType
:
Int
){
func
sortByType
(
sortType
:
ResouceSortType
){
switch
sortType
{
switch
sortType
{
case
0
:
case
.
largest
:
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
>
$1
.
assetSize
}
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
>
$1
.
assetSize
}
break
break
case
1
:
case
.
smallest
:
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
<
$1
.
assetSize
}
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
<
$1
.
assetSize
}
break
break
case
2
:
case
.
latest
:
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
>
$1
.
createDate
}
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
>
$1
.
createDate
}
break
break
case
3
:
case
.
oldest
:
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
<
$1
.
createDate
}
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
<
$1
.
createDate
}
break
break
default
:
break
}
}
}
}
...
@@ -526,7 +633,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -526,7 +633,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
}
@objc
func
deleteButtonAction
(){
func
deleteButtonAction
(){
if
selectedModel
.
count
<=
0
{
if
selectedModel
.
count
<=
0
{
return
return
}
}
...
@@ -632,9 +739,9 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -632,9 +739,9 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
else
{
}
else
{
self
.
deleteAction
(
count
:
self
.
selectedModel
.
count
,
isAfterAdv
:
false
)
self
.
deleteAction
(
count
:
self
.
selectedModel
.
count
,
isAfterAdv
:
false
)
}
}
}
}
/// 弹出广告
/// 弹出广告
...
@@ -665,7 +772,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -665,7 +772,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
self
.
showDeleteSuccess
(
fileCount
:
allIdent
.
count
,
fileSize
:
fileSize
)
self
.
showDeleteSuccess
(
fileCount
:
allIdent
.
count
,
fileSize
:
fileSize
)
self
.
updateCurrentPageWhenDeleteAny
()
self
.
updateCurrentPageWhenDeleteAny
()
}
}
}
else
{
}
else
{
PMLoadingHUD
.
share
.
disMiss
()
PMLoadingHUD
.
share
.
disMiss
()
if
let
error
=
error
{
if
let
error
=
error
{
...
@@ -673,7 +780,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -673,7 +780,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
}
}
}
}
}
}
}
...
@@ -713,7 +820,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -713,7 +820,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
}
// 清理下缓存数据
// 清理下缓存数据
// PhotoDataManager.manager.removeDataWhenDeleteInPage(data: self.selectedModel)
// PhotoDataManager.manager.removeDataWhenDeleteInPage(data: self.selectedModel)
PhotoManager
.
shared
.
removeDataWhenDeleteInPage
(
data
:
self
.
selectedModel
)
{
PhotoManager
.
shared
.
removeDataWhenDeleteInPage
(
data
:
self
.
selectedModel
)
{
//删除完成刷新数据
//删除完成刷新数据
}
}
...
@@ -721,8 +828,8 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -721,8 +828,8 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
DispatchQueue
.
main
.
async
{
DispatchQueue
.
main
.
async
{
// 删除完成之后,移除下当前选择的数据
// 删除完成之后,移除下当前选择的数据
self
.
selectedModel
.
removeAll
()
self
.
selectedModel
.
removeAll
()
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
UIView
.
transition
(
with
:
self
.
collectionView
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
UIView
.
transition
(
with
:
self
.
collectionView
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
self
.
collectionView
.
reloadSections
(
IndexSet
(
integer
:
0
))
self
.
collectionView
.
reloadSections
(
IndexSet
(
integer
:
0
))
...
@@ -731,4 +838,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -731,4 +838,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
setDefaultPage
()
setDefaultPage
()
}
}
}
}
PhoneManager/Class/Page/Home/Controller/HomeVideoDetailController.swift
View file @
abc95e48
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
import
Foundation
import
Foundation
import
Photos
import
Photos
import
SnapKit
class
HomeVideoDetailController
:
BaseViewController
{
class
HomeVideoDetailController
:
BaseViewController
{
...
@@ -14,6 +15,8 @@ class HomeVideoDetailController :BaseViewController {
...
@@ -14,6 +15,8 @@ class HomeVideoDetailController :BaseViewController {
private
var
currentHeaderView
:
HomeVideoDetailCustomHeaderView
?
private
var
currentHeaderView
:
HomeVideoDetailCustomHeaderView
?
private
var
deleteViewBottomConstraint
:
Constraint
?
@MainActor
required
init
?(
coder
:
NSCoder
)
{
@MainActor
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
fatalError
(
"init(coder:) has not been implemented"
)
}
}
...
@@ -27,22 +30,42 @@ class HomeVideoDetailController :BaseViewController {
...
@@ -27,22 +30,42 @@ class HomeVideoDetailController :BaseViewController {
var
resourceData
:
[
AssetModel
]
=
[]
var
resourceData
:
[
AssetModel
]
=
[]
// 排序
// 排序
var
currentSort
:
Int
=
0
var
currentSort
:
ResouceSortType
=
.
largest
// 当前页面选中的
// 当前页面选中的
var
selectedModel
:
[
AssetModel
]
=
[]
{
var
selectedModel
:
[
AssetModel
]
=
[]
{
didSet
{
didSet
{
DispatchQueue
.
main
.
async
{
[
self
]
in
DispatchQueue
.
main
.
async
{
if
self
.
selectedModel
.
count
!=
0
{
if
self
.
selectedModel
.
count
==
0
{
if
self
.
selectedModel
.
count
==
1
{
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
}
else
if
self
.
selectedModel
.
count
==
1
{
// 更新约束
self
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Video"
,
for
:
.
normal
)
self
.
deleteViewBottomConstraint
?
.
update
(
offset
:
-
safeHeight
+
78
)
}
else
{
}
self
.
deleteButton
.
setTitle
(
"Delete
\(
selectedModel
.
count
)
Videos"
,
for
:
.
normal
)
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
safeHeight
)
}
else
if
self
.
selectedModel
.
count
==
1
{
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Video"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
// 更新约束
self
.
deleteViewBottomConstraint
?
.
update
(
offset
:
-
safeHeight
)
}
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
78
-
safeHeight
)
}
else
{
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Videos"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
// 更新约束
self
.
deleteViewBottomConstraint
?
.
update
(
offset
:
-
safeHeight
)
}
}
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
78
-
safeHeight
)
}
if
self
.
selectedModel
.
count
>
0
{
self
.
deleteButtonView
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
}
else
{
self
.
deleteButtonView
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
self
.
collectionView
.
collectionViewLayout
.
invalidateLayout
()
}
}
}
}
}
}
...
@@ -52,7 +75,7 @@ class HomeVideoDetailController :BaseViewController {
...
@@ -52,7 +75,7 @@ class HomeVideoDetailController :BaseViewController {
let
layout
=
WaterfallMutiSectionFlowLayout
()
let
layout
=
WaterfallMutiSectionFlowLayout
()
layout
.
delegate
=
self
layout
.
delegate
=
self
let
sview
:
UICollectionView
=
UICollectionView
.
init
(
frame
:
CGRect
(
x
:
marginLR
,
y
:
s
tatusBarHeight
+
44
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
(
statusBarHeight
+
44
)
-
102
),
collectionViewLayout
:
layout
)
let
sview
:
UICollectionView
=
UICollectionView
.
init
(
frame
:
CGRect
(
x
:
marginLR
,
y
:
s
elf
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
safeHeight
),
collectionViewLayout
:
layout
)
sview
.
register
(
HomeVideoDetailCell
.
self
,
forCellWithReuseIdentifier
:
"HomeVideoDetailCell"
)
sview
.
register
(
HomeVideoDetailCell
.
self
,
forCellWithReuseIdentifier
:
"HomeVideoDetailCell"
)
sview
.
register
(
HomeVideoDetailCustomHeaderView
.
self
,
forSupplementaryViewOfKind
:
UICollectionView
.
elementKindSectionHeader
,
withReuseIdentifier
:
"HomeVideoDetailCustomHeaderView"
)
sview
.
register
(
HomeVideoDetailCustomHeaderView
.
self
,
forSupplementaryViewOfKind
:
UICollectionView
.
elementKindSectionHeader
,
withReuseIdentifier
:
"HomeVideoDetailCustomHeaderView"
)
...
@@ -69,14 +92,18 @@ class HomeVideoDetailController :BaseViewController {
...
@@ -69,14 +92,18 @@ class HomeVideoDetailController :BaseViewController {
}()
}()
lazy
var
deleteButton
:
UIButton
=
{
lazy
var
deleteButtonView
:
HomeDetailDeleteView
=
{
let
view
=
UIButton
()
let
view
=
HomeDetailDeleteView
()
view
.
setTitle
(
"Delete"
,
for
:
UIControl
.
State
.
normal
)
view
.
addTopShadow
()
view
.
setTitleColor
(
.
white
,
for
:
.
normal
)
return
view
view
.
clipsToBounds
=
true
}()
view
.
layer
.
cornerRadius
=
23
view
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
view
.
addTarget
(
self
,
action
:
#selector(
deleteButtonAction
)
,
for
:
.
touchUpInside
)
lazy
var
trashSubView
:
TrashSubView
=
{
let
view
=
TrashSubView
()
view
.
backgroundColor
=
.
white
view
.
tipLabel
.
text
=
"The video in the trash can"
view
.
isHidden
=
true
return
view
return
view
}()
}()
...
@@ -165,11 +192,11 @@ class HomeVideoDetailController :BaseViewController {
...
@@ -165,11 +192,11 @@ class HomeVideoDetailController :BaseViewController {
self
.
collectionView
.
reloadData
()
self
.
collectionView
.
reloadData
()
},
completion
:
nil
)
},
completion
:
nil
)
if
self
.
selectedModel
.
count
>
0
{
if
self
.
selectedModel
.
count
>
0
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
}
else
{
}
else
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
}
}
...
@@ -181,17 +208,17 @@ class HomeVideoDetailController :BaseViewController {
...
@@ -181,17 +208,17 @@ class HomeVideoDetailController :BaseViewController {
self
.
selectedModel
.
removeAll
()
self
.
selectedModel
.
removeAll
()
}
}
DispatchQueue
.
main
.
async
{
DispatchQueue
.
main
.
async
{
UIView
.
transition
(
with
:
self
.
collectionView
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
UIView
.
transition
(
with
:
self
.
collectionView
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
self
.
collectionView
.
reloadData
()
self
.
collectionView
.
reloadData
()
},
completion
:
nil
)
},
completion
:
nil
)
if
self
.
selectedModel
.
count
>
0
{
if
self
.
selectedModel
.
count
>
0
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
}
else
{
}
else
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
}
}
}
}
...
@@ -199,12 +226,12 @@ class HomeVideoDetailController :BaseViewController {
...
@@ -199,12 +226,12 @@ class HomeVideoDetailController :BaseViewController {
self
.
view
.
insertSubview
(
collectionView
,
at
:
0
)
self
.
view
.
insertSubview
(
collectionView
,
at
:
0
)
self
.
view
.
addSubview
(
self
.
deleteButton
)
self
.
view
.
addSubview
(
self
.
deleteButtonView
)
self
.
deleteButton
.
snp
.
makeConstraints
{
make
in
self
.
deleteButtonView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
self
.
collectionView
.
snp
.
bottom
)
.
offset
(
16
)
make
.
left
.
equalToSuperview
()
.
offset
(
15
)
make
.
left
.
equalToSuperview
()
.
offset
(
15
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
15
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
15
)
make
.
height
.
equalTo
(
46
)
make
.
height
.
equalTo
(
78
)
self
.
deleteViewBottomConstraint
=
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
safeHeight
+
78
)
.
constraint
}
}
self
.
view
.
addSubview
(
self
.
defaultImageView
)
self
.
view
.
addSubview
(
self
.
defaultImageView
)
self
.
defaultImageView
.
snp
.
makeConstraints
{
make
in
self
.
defaultImageView
.
snp
.
makeConstraints
{
make
in
...
@@ -230,8 +257,59 @@ class HomeVideoDetailController :BaseViewController {
...
@@ -230,8 +257,59 @@ class HomeVideoDetailController :BaseViewController {
setUI
()
setUI
()
showTipsVC
()
showTipsVC
()
self
.
deleteButtonView
.
deleteCallBack
=
{
self
.
deleteButtonAction
()
}
self
.
trashSubView
.
presentTashDetailViewClickCallBack
=
{[
weak
self
]
in
guard
let
self
else
{
return
}
// 进入垃圾桶详情页面
DispatchQueue
.
main
.
async
{
let
vc
:
TrashViewController
=
TrashViewController
()
vc
.
currentPage
=
1
vc
.
dissmisCallBack
=
{
self
.
addTrashView
()
}
self
.
present
(
vc
,
animated
:
true
)
}
}
self
.
trashSubView
.
clearTashDataCallBack
=
{[
weak
self
]
in
guard
let
self
else
{
return
}
// 清除垃圾桶数据
TrashDataManager
.
clearTrashData
(
mediaType
:
TrashTypeEnum
.
video
)
{[
weak
self
]
in
guard
let
self
else
{
return
}
self
.
addTrashView
()
}
}
}
}
/// 是否添加垃圾桶数据
func
addTrashView
(){
DispatchQueue
.
main
.
async
{
self
.
trashSubView
.
removeFromSuperview
()
self
.
view
.
addSubview
(
self
.
trashSubView
)
self
.
trashSubView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
equalToSuperview
()
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
safeHeight
)
make
.
height
.
equalTo
(
78
)
}
// 判断垃圾桶有没有数据
let
array
=
TrashDataManager
.
getCurrentMediaTypeTrashData
(
mediaType
:
TrashTypeEnum
.
video
)
self
.
trashSubView
.
resourceCountlabel
.
text
=
String
(
array
.
count
)
self
.
trashSubView
.
isHidden
=
array
.
count
<=
0
self
.
deleteButtonView
.
isHidden
=
array
.
count
>
0
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
array
.
count
>
0
// 改变collection的位置
if
array
.
count
>
0
{
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
78
-
safeHeight
)
}
else
{
self
.
collectionView
.
frame
=
CGRect
(
x
:
marginLR
,
y
:
self
.
videoDetailNavView
!.
height
,
width
:
self
.
view
.
width
-
2
*
marginLR
,
height
:
self
.
view
.
height
-
self
.
videoDetailNavView
!.
height
-
safeHeight
)
}
}
}
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
super
.
viewWillAppear
(
animated
)
super
.
viewWillAppear
(
animated
)
// 重新设置下数据源
// 重新设置下数据源
...
@@ -240,6 +318,7 @@ class HomeVideoDetailController :BaseViewController {
...
@@ -240,6 +318,7 @@ class HomeVideoDetailController :BaseViewController {
self
.
collectionView
.
reloadData
()
self
.
collectionView
.
reloadData
()
}
}
}
}
addTrashView
()
}
}
func
showTipsVC
(){
func
showTipsVC
(){
...
@@ -294,15 +373,6 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -294,15 +373,6 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
}
else
{
}
else
{
self
.
selectedModel
.
removeAll
{
$0
.
localIdentifier
==
self
.
resourceData
[
order
]
.
localIdentifier
}
self
.
selectedModel
.
removeAll
{
$0
.
localIdentifier
==
self
.
resourceData
[
order
]
.
localIdentifier
}
}
}
DispatchQueue
.
main
.
async
{
if
self
.
selectedModel
.
count
>
0
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
}
else
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
}
}
cell
.
cellCallBack
=
{[
weak
self
]
ident
,
order
in
cell
.
cellCallBack
=
{[
weak
self
]
ident
,
order
in
guard
let
self
else
{
return
}
guard
let
self
else
{
return
}
...
@@ -310,8 +380,59 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -310,8 +380,59 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
// 获取视频的图片
// 获取视频的图片
PhotoAndVideoMananger
.
mananger
.
getVideoImageByIdent
(
ident
:
ident
)
{
image
in
PhotoAndVideoMananger
.
mananger
.
getVideoImageByIdent
(
ident
:
ident
)
{
image
in
// 点击之后跳转详情页面
// 点击之后跳转详情页面
let
vc
=
PhotoRemoveViewController
(
data
:
self
.
resourceData
,
currentIndex
:
indexPath
.
row
,
mediaType
:
.
video
)
if
self
.
videoDetailNavView
?
.
startSelectButton
.
isSelected
==
false
{
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
let
vc
=
PhotoRemoveViewController
(
data
:
self
.
resourceData
,
currentIndex
:
indexPath
.
row
,
mediaType
:
.
video
)
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
else
{
let
vc
=
PMShowImgVideoController
()
vc
.
state
=
.
similarVideos
vc
.
currentIdx
=
0
let
dataSource
=
ImageSeletedCollectionItem
()
dataSource
.
isSeleted
=
cell
.
choose
dataSource
.
id
=
ident
dataSource
.
image
=
image
// 表示这个是视频
vc
.
homeDataSource
=
[
dataSource
]
vc
.
backOrgPageCallBack
=
{
index
,
data
in
if
let
data
=
data
{
if
let
item
=
data
.
first
{
if
let
selected
=
item
.
isSeleted
{
if
let
index
=
index
{
if
selected
==
true
{
self
.
selectedModel
.
append
(
self
.
resourceData
[
index
.
row
])
}
else
{
self
.
selectedModel
.
removeAll
(
where
:
{
$0
.
localIdentifier
==
self
.
resourceData
[
index
.
row
]
.
localIdentifier
})
}
DispatchQueue
.
main
.
async
{
if
let
tempCell
=
collectionView
.
cellForItem
(
at
:
index
)
as?
HomePhotosDetailCollectionCell
{
tempCell
.
choose
=
selected
}
}
}
}
}
}
}
vc
.
getVideoURLFromLocalIdentifier
(
localIdentifier
:
ident
.
localIdentifier
)
{
url
,
error
in
if
url
!=
nil
{
DispatchQueue
.
main
.
async
{
vc
.
url
=
url
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
else
{
let
alert
=
UIAlertController
(
title
:
nil
,
message
:
"ICloud video cannot be viewed"
,
preferredStyle
:
.
alert
)
self
.
present
(
alert
,
animated
:
true
,
completion
:
nil
)
// 2 秒后关闭弹窗
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
1
)
{
alert
.
dismiss
(
animated
:
true
,
completion
:
nil
)
}
}
}
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
errorHandler
:
{
}
errorHandler
:
{
DispatchQueue
.
main
.
async
{
DispatchQueue
.
main
.
async
{
let
alert
=
UIAlertController
(
title
:
nil
,
message
:
"Get Video image failure"
,
preferredStyle
:
.
alert
)
let
alert
=
UIAlertController
(
title
:
nil
,
message
:
"Get Video image failure"
,
preferredStyle
:
.
alert
)
...
@@ -367,19 +488,17 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -367,19 +488,17 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
currentHeaderView
=
header
currentHeaderView
=
header
header
.
compressionTipView
.
reloadData
()
header
.
compressionTipView
.
reloadData
()
header
.
sizeLabel
.
text
=
"
\(
self
.
resourceData
.
count
)
Videos"
header
.
sizeLabel
.
text
=
"
\(
self
.
resourceData
.
count
)
Videos"
header
.
sort
Callback
=
{[
weak
self
]
in
header
.
sort
ViewSubmitCallBack
=
{[
weak
self
]
filterModel
in
guard
let
self
else
{
return
}
guard
let
self
else
{
return
}
let
sortView
=
CompressSortView
(
frame
:
self
.
view
.
bounds
)
// 这两行是为了进入页面的时候选中
sortView
.
currentIndex
=
self
.
currentSort
sortView
.
tableView
.
reloadData
()
self
.
view
.
addSubview
(
sortView
)
let
dataS
:
[
AssetModel
]
=
PhotoManager
.
shared
.
filterVideoModels
sortView
.
callBack
=
{[
weak
self
]
sortType
in
let
tempData
=
self
.
filterDataByDate
(
orgModels
:
dataS
,
startDate
:
filterModel
.
startDate
,
endDate
:
filterModel
.
endDate
)
guard
let
self
else
{
return
}
// 重新更新下数据源
self
.
currentSort
=
sortType
as!
Int
self
.
resourceData
=
tempData
self
.
sortByType
(
sortType
:
self
.
currentSort
)
self
.
sortByType
(
sortType
:
filterModel
.
sortType
)
self
.
changeHeaderTitle
()
self
.
currentSort
=
filterModel
.
sortType
DispatchQueue
.
main
.
async
{
self
.
collectionView
.
reloadData
()
}
}
}
}
return
header
return
header
...
@@ -394,6 +513,17 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -394,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
){
func
showPopView
(
popView
:
AdvTipDeleteView
){
...
@@ -402,7 +532,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -402,7 +532,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
}
}
@objc
func
deleteButtonAction
(){
func
deleteButtonAction
(){
if
selectedModel
.
count
<=
0
{
if
selectedModel
.
count
<=
0
{
return
return
...
@@ -545,7 +675,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -545,7 +675,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
SystemCommentManager
.
showCommentPage
()
SystemCommentManager
.
showCommentPage
()
if
isAfterAdv
==
false
{
if
isAfterAdv
==
false
{
self
.
updateFreeTimes
()
self
.
updateFreeTimes
()
}
}
self
.
showDeleteSuccess
(
fileCount
:
self
.
selectedModel
.
count
,
fileSize
:
fileSize
)
self
.
showDeleteSuccess
(
fileCount
:
self
.
selectedModel
.
count
,
fileSize
:
fileSize
)
// 移除当前总数据源的数据
// 移除当前总数据源的数据
...
@@ -580,17 +710,18 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -580,17 +710,18 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
if
self
.
resourceData
.
count
==
0
{
if
self
.
resourceData
.
count
==
0
{
self
.
defaultImageView
.
isHidden
=
false
self
.
defaultImageView
.
isHidden
=
false
self
.
defaultTipLabel
.
isHidden
=
false
self
.
defaultTipLabel
.
isHidden
=
false
self
.
currentHeaderView
?
.
btnView
.
isHidden
=
true
self
.
currentHeaderView
?
.
filterButton
.
isHidden
=
true
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
true
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
true
self
.
deleteButton
.
isHidden
=
true
self
.
deleteButton
View
.
deleteButton
.
isHidden
=
true
}
else
{
}
else
{
self
.
defaultImageView
.
isHidden
=
true
self
.
defaultImageView
.
isHidden
=
true
self
.
defaultTipLabel
.
isHidden
=
true
self
.
defaultTipLabel
.
isHidden
=
true
self
.
currentHeaderView
?
.
btnView
.
isHidden
=
false
self
.
currentHeaderView
?
.
filterButton
.
isHidden
=
false
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
false
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
false
self
.
deleteButton
.
isHidden
=
false
self
.
deleteButton
View
.
deleteButton
.
isHidden
=
false
}
}
}
}
self
.
addTrashView
()
}
}
}
}
...
@@ -608,8 +739,8 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -608,8 +739,8 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
// 更新页面
// 更新页面
DispatchQueue
.
main
.
async
{
DispatchQueue
.
main
.
async
{
self
.
selectedModel
.
removeAll
()
self
.
selectedModel
.
removeAll
()
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
if
self
.
currentHeaderView
!=
nil
{
if
self
.
currentHeaderView
!=
nil
{
self
.
currentHeaderView
?
.
sizeLabel
.
text
=
"
\(
self
.
resourceData
.
count
)
Videos"
self
.
currentHeaderView
?
.
sizeLabel
.
text
=
"
\(
self
.
resourceData
.
count
)
Videos"
...
@@ -623,52 +754,20 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -623,52 +754,20 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
setDefaultPage
()
setDefaultPage
()
}
}
func
sortByType
(
sortType
:
ResouceSortType
){
/// 改变标题
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
){
switch
sortType
{
switch
sortType
{
case
0
:
case
.
largest
:
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
>
$1
.
assetSize
}
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
>
$1
.
assetSize
}
break
break
case
1
:
case
.
smallest
:
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
<
$1
.
assetSize
}
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
assetSize
<
$1
.
assetSize
}
break
break
case
2
:
case
.
latest
:
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
>
$1
.
createDate
}
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
>
$1
.
createDate
}
break
break
case
3
:
case
.
oldest
:
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
<
$1
.
createDate
}
self
.
resourceData
=
self
.
resourceData
.
sorted
{
$0
.
createDate
<
$1
.
createDate
}
break
break
default
:
break
}
}
}
}
...
...
PhoneManager/Class/Page/Home/Controller/PhotoDetailViewController.swift
View file @
abc95e48
...
@@ -23,6 +23,7 @@ class PhotoDetailViewController : BaseViewController {
...
@@ -23,6 +23,7 @@ class PhotoDetailViewController : 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
.
addSubview
(
self
.
closeButton
)
self
.
view
.
addSubview
(
self
.
closeButton
)
self
.
closeButton
.
snp
.
makeConstraints
{
make
in
self
.
closeButton
.
snp
.
makeConstraints
{
make
in
...
...
PhoneManager/Class/Page/Home/Controller/PhotoRemoveViewController.swift
View file @
abc95e48
...
@@ -77,6 +77,9 @@ class PhotoRemoveViewController: BaseViewController {
...
@@ -77,6 +77,9 @@ class PhotoRemoveViewController: BaseViewController {
// MARK: - 生命周期
// MARK: - 生命周期
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
)
formatter
.
dateStyle
=
.
medium
formatter
.
dateStyle
=
.
medium
formatter
.
timeStyle
=
.
none
formatter
.
timeStyle
=
.
none
if
let
type
=
self
.
mediaType
{
if
let
type
=
self
.
mediaType
{
...
@@ -295,7 +298,8 @@ class PhotoRemoveViewController: BaseViewController {
...
@@ -295,7 +298,8 @@ class PhotoRemoveViewController: BaseViewController {
photoView
.
mediaType
=
self
.
mediaType
photoView
.
mediaType
=
self
.
mediaType
photoView
.
addGestureRecognizer
(
UIPanGestureRecognizer
(
target
:
self
,
action
:
#selector(
handlePan
)
))
photoView
.
addGestureRecognizer
(
UIPanGestureRecognizer
(
target
:
self
,
action
:
#selector(
handlePan
)
))
view
.
addSubview
(
photoView
)
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
)
photoViews
.
append
(
photoView
)
}
}
...
@@ -470,7 +474,8 @@ class PhotoRemoveViewController: BaseViewController {
...
@@ -470,7 +474,8 @@ class PhotoRemoveViewController: BaseViewController {
private
func
resetViewPosition
(
_
view
:
PhotosRemoveBaseView
)
{
private
func
resetViewPosition
(
_
view
:
PhotosRemoveBaseView
)
{
UIView
.
animate
(
withDuration
:
0.3
)
{
UIView
.
animate
(
withDuration
:
0.3
)
{
view
.
transform
=
.
identity
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
()
view
.
hideButtons
()
}
}
}
}
...
@@ -487,7 +492,8 @@ class PhotoRemoveViewController: BaseViewController {
...
@@ -487,7 +492,8 @@ class PhotoRemoveViewController: BaseViewController {
// 创建新视图并更新内容
// 创建新视图并更新内容
let
newView
=
PhotosRemoveBaseView
()
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
.
addGestureRecognizer
(
UIPanGestureRecognizer
(
target
:
self
,
action
:
#selector(
handlePan
)
))
newView
.
alpha
=
0
newView
.
alpha
=
0
view
.
addSubview
(
newView
)
view
.
addSubview
(
newView
)
...
...
PhoneManager/Class/Page/Home/View/HomeDetailDeleteView.swift
0 → 100644
View file @
abc95e48
//
// HomeDetailDeleteView.swift
// PhoneManager
//
// Created by edy on 2025/5/19.
//
import
UIKit
class
HomeDetailDeleteView
:
UIView
{
var
deleteCallBack
:(()
->
Void
)
=
{}
lazy
var
deleteButton
:
UIButton
=
{
let
view
=
UIButton
()
view
.
setTitle
(
"Delete"
,
for
:
UIControl
.
State
.
normal
)
view
.
setTitleColor
(
.
white
,
for
:
.
normal
)
view
.
clipsToBounds
=
true
view
.
layer
.
cornerRadius
=
23
view
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
view
.
addTarget
(
self
,
action
:
#selector(
deleteButtonAction
)
,
for
:
.
touchUpInside
)
return
view
}()
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
self
.
backgroundColor
=
.
white
self
.
addSubview
(
self
.
deleteButton
)
self
.
deleteButton
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
.
offset
(
16
)
make
.
left
.
equalToSuperview
()
.
offset
(
15
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
15
)
make
.
height
.
equalTo
(
46
)
}
}
@objc
func
deleteButtonAction
(){
self
.
deleteCallBack
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
}
PhoneManager/Class/Page/Home/View/HomeInfoView.swift
View file @
abc95e48
...
@@ -13,12 +13,16 @@ class HomeInfoView :UIView {
...
@@ -13,12 +13,16 @@ class HomeInfoView :UIView {
var
titleText
:
String
?
var
titleText
:
String
?
var
isDragEnd
:
Bool
=
false
var
type
:
PhotsFileType
?
var
type
:
PhotsFileType
?
var
models
:[
HomeInfoTableItem
]
=
[]
var
models
:[
HomeInfoTableItem
]
=
[]
var
callBack
:
callBack
<
Any
>
=
{
text
in
}
var
callBack
:
callBack
<
Any
>
=
{
text
in
}
var
keepAllNoDataCallBack
:
()
->
Void
=
{}
var
deleteCallBack
:
callBack
<
[
AssetModel
]
>
=
{
array
in
}
var
deleteCallBack
:
callBack
<
[
AssetModel
]
>
=
{
array
in
}
var
titleShowHideCallBack
:
callBack
<
Bool
>
=
{
isShow
in
}
var
titleShowHideCallBack
:
callBack
<
Bool
>
=
{
isShow
in
}
...
@@ -42,6 +46,7 @@ class HomeInfoView :UIView {
...
@@ -42,6 +46,7 @@ class HomeInfoView :UIView {
lazy
var
headerView
:
HomeInfoTitleView
=
{
lazy
var
headerView
:
HomeInfoTitleView
=
{
let
sview
:
HomeInfoTitleView
=
HomeInfoTitleView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
width
,
height
:
84
))
let
sview
:
HomeInfoTitleView
=
HomeInfoTitleView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
width
,
height
:
84
))
sview
.
titleLabel
.
text
=
self
.
titleText
sview
.
titleLabel
.
text
=
self
.
titleText
sview
.
type
=
self
.
type
sview
.
filterButton
.
isHidden
=
self
.
type
!=
.
similar
&&
self
.
type
!=
.
SimilarVideos
sview
.
filterButton
.
isHidden
=
self
.
type
!=
.
similar
&&
self
.
type
!=
.
SimilarVideos
return
sview
return
sview
}()
}()
...
@@ -308,6 +313,7 @@ class HomeInfoView :UIView {
...
@@ -308,6 +313,7 @@ class HomeInfoView :UIView {
tableView
.
contentInset
=
UIEdgeInsets
(
top
:
0
,
left
:
0
,
bottom
:
deleteView
.
isHidden
?
12
:
deleteView
.
height
+
12
,
right
:
0
)
tableView
.
contentInset
=
UIEdgeInsets
(
top
:
0
,
left
:
0
,
bottom
:
deleteView
.
isHidden
?
12
:
deleteView
.
height
+
12
,
right
:
0
)
self
.
nextRowButton
.
isHidden
=
!
self
.
isShowNextRowButton
()
self
.
nextRowButton
.
isHidden
=
!
self
.
isShowNextRowButton
()
}
}
}
}
...
@@ -315,45 +321,28 @@ class HomeInfoView :UIView {
...
@@ -315,45 +321,28 @@ class HomeInfoView :UIView {
extension
HomeInfoView
:
UITableViewDataSource
,
UITableViewDelegate
{
extension
HomeInfoView
:
UITableViewDataSource
,
UITableViewDelegate
{
@objc
func
nextRowButtonAction
(){
@objc
func
nextRowButtonAction
(){
self
.
tableScrollToNextRow
()
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
()
{
private
func
tableScrollToNextRow
()
{
guard
let
indexPath
=
tableView
.
indexPathsForVisibleRows
?
.
first
else
{
return
}
guard
let
indexPath
=
tableView
.
indexPathsForVisibleRows
?
.
first
else
{
return
}
let
nextRow
=
indexPath
.
row
+
1
// let nextRow = self.isDragEnd == true ? indexPath.row + 1 : indexPath.row + 2
let
nextRow
=
indexPath
.
row
+
2
let
nextSection
=
indexPath
.
section
let
nextSection
=
indexPath
.
section
// 获取最后一个cell 看看是不是存在
guard
let
lastIndexPath
=
tableView
.
indexPathsForVisibleRows
?
.
last
else
{
return
}
let
lastNextRow
=
lastIndexPath
.
row
+
1
guard
lastNextRow
<
tableView
.
numberOfRows
(
inSection
:
nextSection
)
else
{
// 滚动到最底部
tableView
.
scrollToRow
(
at
:
lastIndexPath
,
at
:
.
bottom
,
animated
:
true
)
return
}
// 检查下一行是否存在
// 检查下一行是否存在
guard
nextRow
<
tableView
.
numberOfRows
(
inSection
:
nextSection
)
else
{
return
}
guard
nextRow
<
tableView
.
numberOfRows
(
inSection
:
nextSection
)
else
{
return
}
...
@@ -370,6 +359,7 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
...
@@ -370,6 +359,7 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
// 直接滚动到调整后的位置
// 直接滚动到调整后的位置
tableView
.
setContentOffset
(
adjustedOffset
,
animated
:
true
)
tableView
.
setContentOffset
(
adjustedOffset
,
animated
:
true
)
self
.
isDragEnd
=
false
}
}
func
scrollViewDidScroll
(
_
scrollView
:
UIScrollView
)
{
func
scrollViewDidScroll
(
_
scrollView
:
UIScrollView
)
{
...
@@ -386,6 +376,10 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
...
@@ -386,6 +376,10 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
tableView
.
bringSubviewToFront
(
self
.
headerView
)
tableView
.
bringSubviewToFront
(
self
.
headerView
)
}
}
func
scrollViewDidEndDragging
(
_
scrollView
:
UIScrollView
,
willDecelerate
decelerate
:
Bool
)
{
self
.
isDragEnd
=
true
}
func
tableView
(
_
tableView
:
UITableView
,
numberOfRowsInSection
section
:
Int
)
->
Int
{
func
tableView
(
_
tableView
:
UITableView
,
numberOfRowsInSection
section
:
Int
)
->
Int
{
return
models
.
count
return
models
.
count
...
@@ -394,10 +388,25 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
...
@@ -394,10 +388,25 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
func
tableView
(
_
tableView
:
UITableView
,
cellForRowAt
indexPath
:
IndexPath
)
->
UITableViewCell
{
func
tableView
(
_
tableView
:
UITableView
,
cellForRowAt
indexPath
:
IndexPath
)
->
UITableViewCell
{
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
HomeInfoTableViewCell
.
identifier
,
for
:
indexPath
)
as!
HomeInfoTableViewCell
let
cell
=
tableView
.
dequeueReusableCell
(
withIdentifier
:
HomeInfoTableViewCell
.
identifier
,
for
:
indexPath
)
as!
HomeInfoTableViewCell
cell
.
saveKeepListFinishedCallback
=
{
cell
.
saveKeepListFinishedCallback
=
{[
weak
self
]
index
in
self
.
ids
?
.
remove
(
at
:
indexPath
.
section
)
guard
let
self
else
{
return
}
self
.
resetModels
()
self
.
ids
?
.
remove
(
at
:
index
.
section
)
tableView
.
deleteRows
(
at
:
[
indexPath
],
with
:
.
automatic
)
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
cell
.
type
=
self
.
type
...
@@ -439,10 +448,10 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
...
@@ -439,10 +448,10 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
for
item
in
orgModels
{
for
item
in
orgModels
{
var
array
=
item
var
array
=
item
if
startDate
!=
nil
{
if
startDate
!=
nil
{
array
=
array
.
filter
({
$0
.
createDate
>
startDate
!
})
array
=
array
.
filter
({
$0
.
createDate
>
=
startDate
!
})
}
}
if
endDate
!=
nil
{
if
endDate
!=
nil
{
array
=
array
.
filter
({
$0
.
createDate
<
endDate
!
})
array
=
array
.
filter
({
$0
.
createDate
<
=
endDate
!
})
}
}
if
array
.
count
>=
2
{
if
array
.
count
>=
2
{
...
@@ -490,6 +499,8 @@ class HomeInfoTitleView:UIView {
...
@@ -490,6 +499,8 @@ class HomeInfoTitleView:UIView {
var
sortViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
var
sortViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
var
type
:
PhotsFileType
?
lazy
var
titleLabel
:
UILabel
=
{
lazy
var
titleLabel
:
UILabel
=
{
let
sview
:
UILabel
=
UILabel
()
let
sview
:
UILabel
=
UILabel
()
...
@@ -567,7 +578,12 @@ class HomeInfoTitleView:UIView {
...
@@ -567,7 +578,12 @@ class HomeInfoTitleView:UIView {
let
allNumberStr
=
"
\(
allNumber
)
"
let
allNumberStr
=
"
\(
allNumber
)
"
let
seletedCountStr
=
"
\(
seletedCount
)
"
let
seletedCountStr
=
"
\(
seletedCount
)
"
let
fullText
=
allNumberStr
+
" photos ·
\(
seletedCountStr
)
selected"
var
fullText
=
"0 photos · 0 selected"
if
self
.
type
==
.
SimilarVideos
{
fullText
=
allNumberStr
+
" videos ·
\(
seletedCountStr
)
selected"
}
else
{
fullText
=
allNumberStr
+
" photos ·
\(
seletedCountStr
)
selected"
}
let
attributedString2
=
NSMutableAttributedString
(
string
:
fullText
,
attributes
:
[
let
attributedString2
=
NSMutableAttributedString
(
string
:
fullText
,
attributes
:
[
...
...
PhoneManager/Class/Page/Home/View/HomePhotosDetailCustomHeaderView.swift
View file @
abc95e48
...
@@ -9,7 +9,7 @@ import Foundation
...
@@ -9,7 +9,7 @@ import Foundation
class
HomePhotosDetailCustomHeaderView
:
UICollectionReusableView
{
class
HomePhotosDetailCustomHeaderView
:
UICollectionReusableView
{
var
sort
Callback
:
()
->
Void
=
{
}
var
sort
ViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
lazy
var
modelTitlelabel
:
UILabel
=
{
lazy
var
modelTitlelabel
:
UILabel
=
{
let
label
=
UILabel
()
let
label
=
UILabel
()
...
@@ -20,33 +20,22 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
...
@@ -20,33 +20,22 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
return
label
return
label
}()
}()
lazy
var
btnView
:
UIView
=
{
// 筛选按钮
let
view
=
UIView
()
lazy
var
filterButton
:
UIButton
=
{
view
.
backgroundColor
=
UIColor
(
red
:
0.95
,
green
:
0.96
,
blue
:
0.99
,
alpha
:
1
)
let
button
=
UIButton
(
type
:
.
custom
)
view
.
layer
.
cornerRadius
=
16
button
.
setImage
(
UIImage
(
named
:
"Frame 1"
),
for
:
.
normal
)
view
.
clipsToBounds
=
true
button
.
setTitle
(
"The largest"
,
for
:
.
normal
)
button
.
layer
.
cornerRadius
=
14
let
tap
=
UITapGestureRecognizer
()
button
.
clipsToBounds
=
true
tap
.
addTarget
(
self
,
action
:
#selector(
sortAction
)
)
button
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
0.1000
)
view
.
isUserInteractionEnabled
=
true
button
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
,
weight
:
.
semibold
)
view
.
addGestureRecognizer
(
tap
)
button
.
setTitleColor
(
UIColor
(
red
:
0.07
,
green
:
0.07
,
blue
:
0.07
,
alpha
:
1
),
for
:
.
normal
)
button
.
addTarget
(
self
,
action
:
#selector(
filterButtonAction
)
,
for
:
.
touchUpInside
)
return
view
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
=
{
lazy
var
countLabel
:
UILabel
=
{
let
label
=
UILabel
()
let
label
=
UILabel
()
label
.
text
=
"0 Photos"
label
.
text
=
"0 Photos"
...
@@ -59,43 +48,26 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
...
@@ -59,43 +48,26 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
private
func
setUI
(){
private
func
setUI
(){
self
.
addSubview
(
self
.
modelTitlelabel
)
self
.
addSubview
(
self
.
modelTitlelabel
)
self
.
addSubview
(
self
.
btnView
)
self
.
addSubview
(
self
.
countLabel
)
self
.
addSubview
(
self
.
countLabel
)
self
.
addSubview
(
self
.
filterButton
)
self
.
btnView
.
addSubview
(
self
.
selectImageView
)
self
.
btnView
.
addSubview
(
self
.
selectlabel
)
self
.
modelTitlelabel
.
snp
.
makeConstraints
{
make
in
self
.
modelTitlelabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
0
)
make
.
left
.
equalToSuperview
()
.
offset
(
0
)
make
.
top
.
equalToSuperview
()
.
offset
(
14
)
make
.
top
.
equalToSuperview
()
.
offset
(
14
)
make
.
width
.
equalTo
(
150
*
RScreenW
())
make
.
width
.
equalTo
(
150
*
RScreenW
())
make
.
height
.
equalTo
(
28
)
make
.
height
.
equalTo
(
28
)
}
}
self
.
filterButton
.
snp
.
makeConstraints
{
make
in
self
.
btnView
.
snp
.
makeConstraints
{
make
in
make
.
centerY
.
equalTo
(
self
.
modelTitlelabel
.
snp
.
centerY
)
make
.
right
.
equalToSuperview
()
.
offset
(
0
)
make
.
right
.
equalToSuperview
()
.
offset
(
0
)
make
.
top
.
equalToSuperview
()
.
offset
(
12
)
make
.
height
.
equalTo
(
28
)
make
.
width
.
equalTo
(
103
*
RScreenW
())
make
.
width
.
equalTo
(
98
)
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
.
countLabel
.
snp
.
makeConstraints
{
make
in
self
.
countLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
0
)
make
.
left
.
equalTo
(
0
)
make
.
right
.
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
)
make
.
height
.
equalTo
(
20
)
}
}
}
}
...
@@ -112,7 +84,19 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
...
@@ -112,7 +84,19 @@ class HomePhotosDetailCustomHeaderView : UICollectionReusableView {
setUI
()
setUI
()
}
}
@objc
func
sortAction
(){
@objc
func
filterButtonAction
(){
sortCallback
()
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
)
}
}
}
}
}
}
PhoneManager/Class/Page/Home/View/HomeVideoDetailCustomHeaderView.swift
View file @
abc95e48
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
import
Foundation
import
Foundation
class
HomeVideoDetailCustomHeaderView
:
UICollectionReusableView
{
class
HomeVideoDetailCustomHeaderView
:
UICollectionReusableView
{
var
sort
Callback
:
()
->
Void
=
{
}
var
sort
ViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
lazy
var
modelTitlelabel
:
UILabel
=
{
lazy
var
modelTitlelabel
:
UILabel
=
{
let
label
=
UILabel
()
let
label
=
UILabel
()
...
@@ -18,34 +18,19 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
...
@@ -18,34 +18,19 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
20
,
weight
:
.
bold
)
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
20
,
weight
:
.
bold
)
return
label
return
label
}()
}()
// 筛选按钮
lazy
var
btnView
:
UIView
=
{
lazy
var
filterButton
:
UIButton
=
{
let
view
=
UIView
()
let
button
=
UIButton
(
type
:
.
custom
)
view
.
backgroundColor
=
UIColor
(
red
:
0.95
,
green
:
0.96
,
blue
:
0.99
,
alpha
:
1
)
button
.
setImage
(
UIImage
(
named
:
"Frame 1"
),
for
:
.
normal
)
view
.
layer
.
cornerRadius
=
16
button
.
setTitle
(
"The largest"
,
for
:
.
normal
)
view
.
clipsToBounds
=
true
button
.
layer
.
cornerRadius
=
14
button
.
clipsToBounds
=
true
button
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
0.1000
)
let
tap
=
UITapGestureRecognizer
()
button
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
,
weight
:
.
semibold
)
tap
.
addTarget
(
self
,
action
:
#selector(
sortAction
)
)
button
.
setTitleColor
(
UIColor
(
red
:
0.07
,
green
:
0.07
,
blue
:
0.07
,
alpha
:
1
),
for
:
.
normal
)
view
.
isUserInteractionEnabled
=
true
button
.
addTarget
(
self
,
action
:
#selector(
filterButtonAction
)
,
for
:
.
touchUpInside
)
view
.
addGestureRecognizer
(
tap
)
button
.
isHidden
=
false
return
button
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
sizeLabel
:
UILabel
=
{
lazy
var
sizeLabel
:
UILabel
=
{
let
label
=
UILabel
()
let
label
=
UILabel
()
...
@@ -56,72 +41,14 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
...
@@ -56,72 +41,14 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
return
label
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
(){
private
func
setUI
(){
self
.
addSubview
(
self
.
modelTitlelabel
)
self
.
addSubview
(
self
.
modelTitlelabel
)
self
.
addSubview
(
self
.
btnView
)
self
.
addSubview
(
self
.
filterButton
)
self
.
addSubview
(
self
.
sizeLabel
)
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
self
.
modelTitlelabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
0
)
make
.
left
.
equalToSuperview
()
.
offset
(
0
)
make
.
top
.
equalToSuperview
()
.
offset
(
14
)
make
.
top
.
equalToSuperview
()
.
offset
(
14
)
...
@@ -129,31 +56,23 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
...
@@ -129,31 +56,23 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
make
.
height
.
equalTo
(
28
)
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
self
.
sizeLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
0
)
make
.
left
.
equalTo
(
0
)
make
.
right
.
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
)
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
)
addSubview
(
compressionTipView
)
compressionTipView
.
snp
.
makeConstraints
{
make
in
compressionTipView
.
snp
.
makeConstraints
{
make
in
...
@@ -164,47 +83,6 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
...
@@ -164,47 +83,6 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
let
tap
=
UITapGestureRecognizer
(
target
:
self
,
action
:
#selector(
compressClick
)
)
let
tap
=
UITapGestureRecognizer
(
target
:
self
,
action
:
#selector(
compressClick
)
)
compressionTipView
.
addGestureRecognizer
(
tap
)
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
)
{
override
init
(
frame
:
CGRect
)
{
...
@@ -219,8 +97,20 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
...
@@ -219,8 +97,20 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
setUI
()
setUI
()
}
}
@objc
func
sortAction
(){
@objc
func
filterButtonAction
(){
sortCallback
()
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
=
{
lazy
var
compressionTipView
:
VideocompressionHeadView
=
{
...
...
PhoneManager/Class/Page/Home/View/PhotosRemoveBaseView.swift
View file @
abc95e48
...
@@ -56,6 +56,7 @@ class PhotosRemoveBaseView: UIView {
...
@@ -56,6 +56,7 @@ class PhotosRemoveBaseView: UIView {
self
.
imageView
.
isUserInteractionEnabled
=
true
self
.
imageView
.
isUserInteractionEnabled
=
true
let
tap
=
UITapGestureRecognizer
()
let
tap
=
UITapGestureRecognizer
()
tap
.
addTarget
(
self
,
action
:
#selector(
showDeatail
)
)
tap
.
addTarget
(
self
,
action
:
#selector(
showDeatail
)
)
imageView
.
backgroundColor
=
.
white
self
.
imageView
.
addGestureRecognizer
(
tap
)
self
.
imageView
.
addGestureRecognizer
(
tap
)
}
}
...
...
PhoneManager/Class/Page/Home/View/ResourceFilterBoxView.swift
View file @
abc95e48
...
@@ -118,10 +118,15 @@ class ResourceFilterBoxView : UIView {
...
@@ -118,10 +118,15 @@ class ResourceFilterBoxView : UIView {
setUpUI
()
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
()
let
formatter
=
DateFormatter
()
formatter
.
locale
=
Locale
(
identifier
:
"en_US"
)
formatter
.
locale
=
Locale
(
identifier
:
"en_US"
)
return
formatter
.
monthSymbols
[
month
]
return
formatter
.
monthSymbols
[
month
-
1
]
}
}
override
func
removeFromSuperview
()
{
override
func
removeFromSuperview
()
{
...
@@ -240,6 +245,7 @@ class ResourceFilterBoxView : UIView {
...
@@ -240,6 +245,7 @@ class ResourceFilterBoxView : UIView {
components
.
year
=
year
components
.
year
=
year
components
.
month
=
month
components
.
month
=
month
components
.
day
=
1
// 设置为当月第一天
components
.
day
=
1
// 设置为当月第一天
components
.
timeZone
=
TimeZone
(
identifier
:
"UTC"
)
// 使用公历日历
// 使用公历日历
let
calendar
=
Calendar
(
identifier
:
.
gregorian
)
let
calendar
=
Calendar
(
identifier
:
.
gregorian
)
...
@@ -260,6 +266,7 @@ class ResourceFilterBoxView : UIView {
...
@@ -260,6 +266,7 @@ class ResourceFilterBoxView : UIView {
components
.
year
=
nextYear
components
.
year
=
nextYear
components
.
month
=
nextMonth
components
.
month
=
nextMonth
components
.
day
=
1
components
.
day
=
1
components
.
timeZone
=
TimeZone
(
identifier
:
"UTC"
)
let
calendar
=
Calendar
(
identifier
:
.
gregorian
)
let
calendar
=
Calendar
(
identifier
:
.
gregorian
)
guard
let
nextMonthFirstDay
=
calendar
.
date
(
from
:
components
)
else
{
guard
let
nextMonthFirstDay
=
calendar
.
date
(
from
:
components
)
else
{
...
@@ -318,7 +325,6 @@ class ResourceFilterBoxView : UIView {
...
@@ -318,7 +325,6 @@ class ResourceFilterBoxView : UIView {
self
.
startDateButton
.
dateButton
.
setTitle
(
"From
\(
self
.
getMonthEn
(
month
:
month
)
)
\(
year
)
"
,
for
:
.
normal
)
self
.
startDateButton
.
dateButton
.
setTitle
(
"From
\(
self
.
getMonthEn
(
month
:
month
)
)
\(
year
)
"
,
for
:
.
normal
)
self
.
startDateButton
.
closeButton
.
isHidden
=
false
self
.
startDateButton
.
closeButton
.
isHidden
=
false
self
.
startDate
=
self
.
dateFrom
(
year
:
year
,
month
:
month
)
self
.
startDate
=
self
.
dateFrom
(
year
:
year
,
month
:
month
)
}
else
{
}
else
{
self
.
endDateButton
.
dateButton
.
setTitle
(
"To
\(
self
.
getMonthEn
(
month
:
month
)
)
\(
year
)
"
,
for
:
.
normal
)
self
.
endDateButton
.
dateButton
.
setTitle
(
"To
\(
self
.
getMonthEn
(
month
:
month
)
)
\(
year
)
"
,
for
:
.
normal
)
self
.
endDateButton
.
closeButton
.
isHidden
=
false
self
.
endDateButton
.
closeButton
.
isHidden
=
false
...
...
PhoneManager/Class/Page/Home/View/TrashSubView.swift
View file @
abc95e48
...
@@ -9,6 +9,8 @@ import UIKit
...
@@ -9,6 +9,8 @@ import UIKit
class
TrashSubView
:
UIView
{
class
TrashSubView
:
UIView
{
var
type
:
TrashTypeEnum
?
var
clearTashDataCallBack
:
()
->
Void
=
{}
var
clearTashDataCallBack
:
()
->
Void
=
{}
var
presentTashDetailViewClickCallBack
:
()
->
Void
=
{}
var
presentTashDetailViewClickCallBack
:
()
->
Void
=
{}
...
@@ -32,7 +34,7 @@ class TrashSubView: UIView {
...
@@ -32,7 +34,7 @@ class TrashSubView: UIView {
let
button
=
UIButton
(
type
:
.
custom
)
let
button
=
UIButton
(
type
:
.
custom
)
button
.
setImage
(
UIImage
(
named
:
"ic_delete_duplicates"
),
for
:
.
normal
)
button
.
setImage
(
UIImage
(
named
:
"ic_delete_duplicates"
),
for
:
.
normal
)
button
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
button
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
button
.
setTitle
(
"Empty
the garbage
"
,
for
:
.
normal
)
button
.
setTitle
(
"Empty
Trash
"
,
for
:
.
normal
)
button
.
setTitleColor
(
.
white
,
for
:
.
normal
)
button
.
setTitleColor
(
.
white
,
for
:
.
normal
)
button
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
,
weight
:
.
semibold
)
button
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
,
weight
:
.
semibold
)
button
.
layer
.
cornerRadius
=
19
button
.
layer
.
cornerRadius
=
19
...
@@ -43,6 +45,8 @@ class TrashSubView: UIView {
...
@@ -43,6 +45,8 @@ class TrashSubView: UIView {
override
init
(
frame
:
CGRect
)
{
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
super
.
init
(
frame
:
frame
)
self
.
addTopShadow
()
// 给当前视图添加手势
// 给当前视图添加手势
addTapGestureToSelf
()
addTapGestureToSelf
()
...
...
PhoneManager/Class/Page/Home/View/YearMonthPickerView.swift
View file @
abc95e48
...
@@ -146,14 +146,14 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate {
...
@@ -146,14 +146,14 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate {
}
}
func
pickerView
(
_
pickerView
:
UIPickerView
,
titleForRow
row
:
Int
,
forComponent
component
:
Int
)
->
String
?
{
func
pickerView
(
_
pickerView
:
UIPickerView
,
titleForRow
row
:
Int
,
forComponent
component
:
Int
)
->
String
?
{
return
component
==
0
?
months
[
row
]
:
"
\(
years
.
reversed
()
[
row
]
)
"
return
component
==
0
?
months
[
row
]
:
"
\(
years
[
row
]
)
"
}
}
func
pickerView
(
_
pickerView
:
UIPickerView
,
didSelectRow
row
:
Int
,
inComponent
component
:
Int
)
{
func
pickerView
(
_
pickerView
:
UIPickerView
,
didSelectRow
row
:
Int
,
inComponent
component
:
Int
)
{
if
component
==
0
{
if
component
==
0
{
selectedMonth
=
row
selectedMonth
=
row
}
else
{
}
else
{
selectedYear
=
years
.
reversed
()
[
row
]
selectedYear
=
years
[
row
]
}
}
}
}
...
@@ -161,4 +161,13 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate {
...
@@ -161,4 +161,13 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate {
return
component
==
0
?
self
.
width
/
2
:
self
.
width
/
2
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
())
}
}
}
PhoneManager/Class/Page/Home/View/cell/HomeInfoTableViewCell.swift
View file @
abc95e48
...
@@ -24,7 +24,7 @@ class HomeInfoTableViewCell:UITableViewCell {
...
@@ -24,7 +24,7 @@ class HomeInfoTableViewCell:UITableViewCell {
var
callBack
:
callBack
<
Any
>
=
{
text
in
}
var
callBack
:
callBack
<
Any
>
=
{
text
in
}
var
saveKeepListFinishedCallback
:
(
)
->
Void
=
{
}
var
saveKeepListFinishedCallback
:
(
IndexPath
)
->
Void
=
{
index
in
}
override
init
(
style
:
UITableViewCell
.
CellStyle
,
reuseIdentifier
:
String
?)
{
override
init
(
style
:
UITableViewCell
.
CellStyle
,
reuseIdentifier
:
String
?)
{
...
@@ -119,7 +119,6 @@ class HomeInfoTableViewCell:UITableViewCell {
...
@@ -119,7 +119,6 @@ class HomeInfoTableViewCell:UITableViewCell {
UIView
.
transition
(
with
:
collectionView
!
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
UIView
.
transition
(
with
:
collectionView
!
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
self
.
collectionView
?
.
reloadData
()
self
.
collectionView
?
.
reloadData
()
// self.reloadCollectionView()
},
completion
:
nil
)
},
completion
:
nil
)
}
}
}
}
...
@@ -224,7 +223,7 @@ extension HomeInfoTableViewCell:UICollectionViewDelegate,UICollectionViewDataSou
...
@@ -224,7 +223,7 @@ extension HomeInfoTableViewCell:UICollectionViewDelegate,UICollectionViewDataSou
cell
.
keepAllCallBack
=
{
cell
.
keepAllCallBack
=
{
//存到保留列表
//存到保留列表
saveAllDataToKeepList
()
saveAllDataToKeepList
()
self
.
saveKeepListFinishedCallback
()
self
.
saveKeepListFinishedCallback
(
indexPath
)
}
}
// 存全部数据到保留列表
// 存全部数据到保留列表
func
saveAllDataToKeepList
(){
func
saveAllDataToKeepList
(){
...
...
PhoneManager/Class/Page/Public/Loading/PMLoadingView.swift
View file @
abc95e48
...
@@ -21,7 +21,8 @@ class PMLoadingHUD{
...
@@ -21,7 +21,8 @@ class PMLoadingHUD{
func
show
(
_
title
:
String
=
"Deleting..."
,
_
subTitle
:
String
=
"Please wait on the screen. This might take several minutes."
){
func
show
(
_
title
:
String
=
"Deleting..."
,
_
subTitle
:
String
=
"Please wait on the screen. This might take several minutes."
){
disMiss
()
disMiss
()
DispatchQueue
.
main
.
async
{
DispatchQueue
.
main
.
async
{
KEYWINDOW
()?
.
addSubview
(
self
.
loadingView
)
cWindow
?
.
addSubview
(
self
.
loadingView
)
cWindow
?
.
bringSubviewToFront
(
self
.
loadingView
)
self
.
loadingView
.
setTitleaAndSubTitle
(
title
:
title
,
subTitle
:
subTitle
)
self
.
loadingView
.
setTitleaAndSubTitle
(
title
:
title
,
subTitle
:
subTitle
)
self
.
loadingView
.
animationView
.
play
()
self
.
loadingView
.
animationView
.
play
()
}
}
...
...
PhoneManager/Class/Page/Secret/PMShowImgVideoController.swift
View file @
abc95e48
...
@@ -51,6 +51,8 @@ class PMShowImgVideoController: BaseViewController {
...
@@ -51,6 +51,8 @@ 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
)
}
}
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
...
...
PhoneManager/Class/Page/Trash/Controller/TrashViewController.swift
View file @
abc95e48
...
@@ -12,13 +12,13 @@ class TrashViewController: BaseViewController {
...
@@ -12,13 +12,13 @@ class TrashViewController: BaseViewController {
var
dissmisCallBack
:()
->
Void
=
{}
var
dissmisCallBack
:()
->
Void
=
{}
var
source
:[
TrashTypeEnum
]
=
[
.
video
,
.
other
,
.
shot
,
.
chat
]
var
source
:[
TrashTypeEnum
]
=
[
.
video
,
.
other
,
.
shot
]
var
contentH
:
CGFloat
=
0
var
contentH
:
CGFloat
=
0
var
contentScrollView
:
UIScrollView
!
var
contentScrollView
:
UIScrollView
!
var
delBtn
:
UIButton
!
var
delBtn
:
UIButton
!
var
currentType
:
TrashTypeEnum
=
.
other
var
currentType
:
TrashTypeEnum
=
.
other
let
pageCount
=
4
// 总页数
let
pageCount
=
3
// 总页数
var
currentPage
=
1
{
var
currentPage
=
1
{
didSet
{
didSet
{
self
.
setDelButtonUI
()
self
.
setDelButtonUI
()
...
@@ -61,7 +61,7 @@ class TrashViewController: BaseViewController {
...
@@ -61,7 +61,7 @@ class TrashViewController: BaseViewController {
func
configUI
(){
func
configUI
(){
view
.
backgroundColor
=
.
white
view
.
backgroundColor
=
.
white
contentScrollView
=
UIScrollView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
ScreenW
,
height
:
contentH
))
contentScrollView
=
UIScrollView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
ScreenW
,
height
:
contentH
))
contentScrollView
.
contentSize
=
CGSize
(
width
:
ScreenW
*
4
,
height
:
view
.
height
)
contentScrollView
.
contentSize
=
CGSize
(
width
:
ScreenW
*
CGFloat
(
self
.
source
.
count
)
,
height
:
view
.
height
)
contentScrollView
.
isPagingEnabled
=
true
contentScrollView
.
isPagingEnabled
=
true
contentScrollView
.
showsHorizontalScrollIndicator
=
false
contentScrollView
.
showsHorizontalScrollIndicator
=
false
contentScrollView
.
showsVerticalScrollIndicator
=
false
contentScrollView
.
showsVerticalScrollIndicator
=
false
...
@@ -98,13 +98,11 @@ class TrashViewController: BaseViewController {
...
@@ -98,13 +98,11 @@ class TrashViewController: BaseViewController {
contentScrollView
.
addSubview
(
videoView
)
contentScrollView
.
addSubview
(
videoView
)
contentScrollView
.
addSubview
(
otherView
)
contentScrollView
.
addSubview
(
otherView
)
contentScrollView
.
addSubview
(
shotView
)
contentScrollView
.
addSubview
(
shotView
)
contentScrollView
.
addSubview
(
chatView
)
videoView
.
deleteButton
=
delBtn
videoView
.
deleteButton
=
delBtn
otherView
.
deleteButton
=
delBtn
otherView
.
deleteButton
=
delBtn
shotView
.
deleteButton
=
delBtn
shotView
.
deleteButton
=
delBtn
chatView
.
deleteButton
=
delBtn
}
}
override
func
viewWillLayoutSubviews
()
{
override
func
viewWillLayoutSubviews
()
{
...
@@ -114,11 +112,10 @@ class TrashViewController: BaseViewController {
...
@@ -114,11 +112,10 @@ class TrashViewController: BaseViewController {
let
viewHeight
=
self
.
view
.
bounds
.
height
let
viewHeight
=
self
.
view
.
bounds
.
height
contentH
=
viewHeight
-
108
contentH
=
viewHeight
-
108
contentScrollView
.
frame
=
CGRect
(
x
:
0
,
y
:
34
,
width
:
viewWidth
,
height
:
contentH
)
contentScrollView
.
frame
=
CGRect
(
x
:
0
,
y
:
34
,
width
:
viewWidth
,
height
:
contentH
)
contentScrollView
.
contentSize
=
CGSize
(
width
:
viewWidth
*
4
,
height
:
contentH
)
contentScrollView
.
contentSize
=
CGSize
(
width
:
viewWidth
*
CGFloat
(
self
.
source
.
count
)
,
height
:
contentH
)
videoView
.
frame
=
CGRect
(
x
:
0
,
y
:
0
,
width
:
viewWidth
,
height
:
contentH
)
videoView
.
frame
=
CGRect
(
x
:
0
,
y
:
0
,
width
:
viewWidth
,
height
:
contentH
)
otherView
.
frame
=
CGRect
(
x
:
viewWidth
,
y
:
0
,
width
:
viewWidth
,
height
:
contentH
)
otherView
.
frame
=
CGRect
(
x
:
viewWidth
,
y
:
0
,
width
:
viewWidth
,
height
:
contentH
)
shotView
.
frame
=
CGRect
(
x
:
viewWidth
*
2
,
y
:
0
,
width
:
viewWidth
,
height
:
contentH
)
shotView
.
frame
=
CGRect
(
x
:
viewWidth
*
2
,
y
:
0
,
width
:
viewWidth
,
height
:
contentH
)
chatView
.
frame
=
CGRect
(
x
:
viewWidth
*
3
,
y
:
0
,
width
:
viewWidth
,
height
:
contentH
)
}
}
lazy
var
videoView
:
TrashContenView
=
{
lazy
var
videoView
:
TrashContenView
=
{
...
@@ -139,54 +136,8 @@ class TrashViewController: BaseViewController {
...
@@ -139,54 +136,8 @@ class TrashViewController: BaseViewController {
return
shotView
return
shotView
}()
}()
lazy
var
chatView
:
TrashContenView
=
{
let
chatView
=
TrashContenView
()
chatView
.
trashType
=
.
chat
return
chatView
}()
//
// lazy var collectionView:UICollectionView = {
// let layout = UICollectionViewFlowLayout()
// layout.itemSize = CGSize(width: view.width, height: view.height)
// layout.scrollDirection = .horizontal
// layout.minimumInteritemSpacing = 0
// layout.minimumLineSpacing = 0
// let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: view.width, height: view.height), collectionViewLayout:layout)
// collectionView.isPagingEnabled = true
// collectionView.delegate = self
// collectionView.backgroundColor = .white
// collectionView.dataSource = self
// collectionView.register(UINib(nibName: "TrashContenViewCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenViewCell0")
// collectionView.register(UINib(nibName: "TrashContenViewCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenViewCell1")
// collectionView.register(UINib(nibName: "TrashContenViewCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenViewCell2")
// collectionView.register(UINib(nibName: "TrashContenViewCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenViewCell3")
//
// return collectionView
// }()
}
}
//extension TrashViewController:UICollectionViewDelegate,UICollectionViewDataSource{
//
// func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// return source.count
// }
//
// func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "TrashContenViewCell\(indexPath.row)", for: indexPath) as! TrashContenViewCell
// cell.trashType = source[indexPath.row]
// return cell
// }
//
//}
extension
TrashViewController
:
UIScrollViewDelegate
{
extension
TrashViewController
:
UIScrollViewDelegate
{
func
scrollViewDidScroll
(
_
scrollView
:
UIScrollView
){
func
scrollViewDidScroll
(
_
scrollView
:
UIScrollView
){
...
@@ -233,9 +184,6 @@ extension TrashViewController:UIScrollViewDelegate{
...
@@ -233,9 +184,6 @@ extension TrashViewController:UIScrollViewDelegate{
if
self
.
currentPage
==
3
{
if
self
.
currentPage
==
3
{
return
(
TrashTypeEnum
.
shot
,
self
.
shotView
)
return
(
TrashTypeEnum
.
shot
,
self
.
shotView
)
}
}
if
self
.
currentPage
==
4
{
return
(
TrashTypeEnum
.
chat
,
self
.
chatView
)
}
return
(
TrashTypeEnum
.
video
,
self
.
videoView
)
return
(
TrashTypeEnum
.
video
,
self
.
videoView
)
}
}
...
...
PhoneManager/Class/Page/Trash/Model/TrashUIModel.swift
View file @
abc95e48
...
@@ -11,7 +11,6 @@ enum TrashTypeEnum : String, CaseIterable{
...
@@ -11,7 +11,6 @@ enum TrashTypeEnum : String, CaseIterable{
case
video
=
"Video"
case
video
=
"Video"
case
other
=
"Other"
case
other
=
"Other"
case
shot
=
"Screenshot"
case
shot
=
"Screenshot"
case
chat
=
"Chat"
var
dbType
:
Int
{
var
dbType
:
Int
{
switch
self
{
switch
self
{
...
@@ -21,8 +20,6 @@ enum TrashTypeEnum : String, CaseIterable{
...
@@ -21,8 +20,6 @@ enum TrashTypeEnum : String, CaseIterable{
return
1
return
1
case
.
shot
:
case
.
shot
:
return
2
return
2
case
.
chat
:
return
3
}
}
}
}
}
}
...
...
PhoneManager/Class/Page/Trash/View/TrashContenTitleCell.swift
View file @
abc95e48
...
@@ -39,8 +39,6 @@ class TrashContenTitleCell: UICollectionViewCell {
...
@@ -39,8 +39,6 @@ class TrashContenTitleCell: UICollectionViewCell {
scrollLine
.
frame
=
lineTwo
.
frame
scrollLine
.
frame
=
lineTwo
.
frame
case
.
shot
:
case
.
shot
:
scrollLine
.
frame
=
lineThree
.
frame
scrollLine
.
frame
=
lineThree
.
frame
case
.
chat
:
scrollLine
.
frame
=
lineFour
.
frame
}
}
}
}
}
}
...
@@ -130,17 +128,7 @@ class TrashContenTitleCell: UICollectionViewCell {
...
@@ -130,17 +128,7 @@ class TrashContenTitleCell: UICollectionViewCell {
weakSelf
.
scrollLine
.
frame
=
weakSelf
.
lineTwo
.
frame
weakSelf
.
scrollLine
.
frame
=
weakSelf
.
lineTwo
.
frame
}
}
}
}
case
.
chat
:
if
offset
<
ScreenW
*
3
{
UIView
.
animate
(
withDuration
:
0.2
)
{
weakSelf
.
scrollLine
.
frame
=
weakSelf
.
lineThree
.
frame
}
}
else
{
UIView
.
animate
(
withDuration
:
0.2
)
{
weakSelf
.
scrollLine
.
frame
=
weakSelf
.
lineFour
.
frame
}
}
}
}
}
}
}
}
...
...
PhoneManager/Class/Page/Trash/View/TrashContenView.swift
View file @
abc95e48
...
@@ -29,7 +29,7 @@ class TrashContenView: UIView {
...
@@ -29,7 +29,7 @@ class TrashContenView: UIView {
var
deleteButton
:
UIButton
?
var
deleteButton
:
UIButton
?
var
scrollLine
:
UIView
!
var
scrollLine
:
UIView
!
let
lineW
:
CGFloat
=
(
ScreenW
-
62
)
/
4
.0
let
lineW
:
CGFloat
=
(
ScreenW
-
62
)
/
3
.0
var
dataSource
:[
AssetModel
]
=
[]
{
var
dataSource
:[
AssetModel
]
=
[]
{
didSet
{
didSet
{
...
@@ -48,11 +48,6 @@ class TrashContenView: UIView {
...
@@ -48,11 +48,6 @@ class TrashContenView: UIView {
}
}
func
getData
(){
func
getData
(){
// dataSource = TrashDatabase.shared.queryByMediaType(trashType.dbType).compactMap({ (localIdentifier: String, assetSize: Double, createDate: Date, mediaType: Int) in
// return AssetModel.init(localIdentifier: localIdentifier, assetSize: assetSize, createDate: createDate)
// })
collectionView
.
reloadData
()
collectionView
.
reloadData
()
}
}
...
@@ -81,7 +76,6 @@ class TrashContenView: UIView {
...
@@ -81,7 +76,6 @@ class TrashContenView: UIView {
collectionView
.
backgroundColor
=
UIColor
.
colorWithHex
(
hexStr
:
"#F2F6FC"
)
collectionView
.
backgroundColor
=
UIColor
.
colorWithHex
(
hexStr
:
"#F2F6FC"
)
collectionView
.
dataSource
=
self
collectionView
.
dataSource
=
self
collectionView
.
register
(
UINib
(
nibName
:
"TrashContenAssetCell"
,
bundle
:
nil
),
forCellWithReuseIdentifier
:
"TrashContenAssetCell"
)
collectionView
.
register
(
UINib
(
nibName
:
"TrashContenAssetCell"
,
bundle
:
nil
),
forCellWithReuseIdentifier
:
"TrashContenAssetCell"
)
// collectionView.register(UINib(nibName: "TrashContenTitleCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenTitleCell")
addSubview
(
collectionView
)
addSubview
(
collectionView
)
...
@@ -134,14 +128,9 @@ class TrashContenView: UIView {
...
@@ -134,14 +128,9 @@ class TrashContenView: UIView {
lineThree
.
backgroundColor
=
UIColor
.
colorWithHex
(
hexStr
:
"#E5E5E5"
)
lineThree
.
backgroundColor
=
UIColor
.
colorWithHex
(
hexStr
:
"#E5E5E5"
)
topView
.
addSubview
(
lineThree
)
topView
.
addSubview
(
lineThree
)
lineFour
=
UIView
()
lineFour
.
backgroundColor
=
UIColor
.
colorWithHex
(
hexStr
:
"#E5E5E5"
)
topView
.
addSubview
(
lineFour
)
lineOne
.
frame
=
CGRect
(
x
:
16
,
y
:
62
,
width
:
lineW
,
height
:
6
)
lineOne
.
frame
=
CGRect
(
x
:
16
,
y
:
62
,
width
:
lineW
,
height
:
6
)
lineTwo
.
frame
=
CGRect
(
x
:
10
+
lineOne
.
rightX
,
y
:
62
,
width
:
lineW
,
height
:
6
)
lineTwo
.
frame
=
CGRect
(
x
:
10
+
lineOne
.
rightX
,
y
:
62
,
width
:
lineW
,
height
:
6
)
lineThree
.
frame
=
CGRect
(
x
:
10
+
lineTwo
.
rightX
,
y
:
62
,
width
:
lineW
,
height
:
6
)
lineThree
.
frame
=
CGRect
(
x
:
10
+
lineTwo
.
rightX
,
y
:
62
,
width
:
lineW
,
height
:
6
)
lineFour
.
frame
=
CGRect
(
x
:
10
+
lineThree
.
rightX
,
y
:
62
,
width
:
lineW
,
height
:
6
)
scrollLine
=
UIView
()
scrollLine
=
UIView
()
...
@@ -218,23 +207,6 @@ class TrashContenView: UIView {
...
@@ -218,23 +207,6 @@ class TrashContenView: UIView {
}
else
{
}
else
{
weakSelf
.
scrollLine
.
frame
=
weakSelf
.
lineThree
.
frame
weakSelf
.
scrollLine
.
frame
=
weakSelf
.
lineThree
.
frame
}
}
case
.
chat
:
if
page
==
4
{
if
offset
<
ScreenW
*
3
{
UIView
.
animate
(
withDuration
:
0.2
)
{
weakSelf
.
scrollLine
.
frame
=
weakSelf
.
lineThree
.
frame
}
}
else
{
UIView
.
animate
(
withDuration
:
0.2
)
{
weakSelf
.
scrollLine
.
frame
=
weakSelf
.
lineFour
.
frame
}
}
}
else
{
weakSelf
.
scrollLine
.
frame
=
weakSelf
.
lineFour
.
frame
}
}
}
}
}
}
}
...
@@ -245,8 +217,6 @@ class TrashContenView: UIView {
...
@@ -245,8 +217,6 @@ class TrashContenView: UIView {
lineOne
.
cornerCut
(
radius
:
2
,
corner
:
.
allCorners
)
lineOne
.
cornerCut
(
radius
:
2
,
corner
:
.
allCorners
)
lineTwo
.
cornerCut
(
radius
:
2
,
corner
:
.
allCorners
)
lineTwo
.
cornerCut
(
radius
:
2
,
corner
:
.
allCorners
)
lineThree
.
cornerCut
(
radius
:
2
,
corner
:
.
allCorners
)
lineThree
.
cornerCut
(
radius
:
2
,
corner
:
.
allCorners
)
lineFour
.
cornerCut
(
radius
:
2
,
corner
:
.
allCorners
)
// collectionView.frame = self.bounds
}
}
var
trashType
:
TrashTypeEnum
=
.
video
{
var
trashType
:
TrashTypeEnum
=
.
video
{
...
@@ -258,8 +228,6 @@ class TrashContenView: UIView {
...
@@ -258,8 +228,6 @@ class TrashContenView: UIView {
scrollLine
.
frame
=
lineTwo
.
frame
scrollLine
.
frame
=
lineTwo
.
frame
case
.
shot
:
case
.
shot
:
scrollLine
.
frame
=
lineThree
.
frame
scrollLine
.
frame
=
lineThree
.
frame
case
.
chat
:
scrollLine
.
frame
=
lineFour
.
frame
}
}
getData
()
getData
()
}
}
...
...
PhoneManager/Class/Page/Trash/View/TrashDefaultView.swift
View file @
abc95e48
...
@@ -103,8 +103,6 @@ class TrashDefaultView: UIView {
...
@@ -103,8 +103,6 @@ class TrashDefaultView: UIView {
case
.
other
,
.
shot
:
case
.
other
,
.
shot
:
jumpToPhotosDetailPage
(
type
:
type
)
jumpToPhotosDetailPage
(
type
:
type
)
break
break
case
.
chat
:
break
}
}
}
}
}
}
...
@@ -113,14 +111,6 @@ class TrashDefaultView: UIView {
...
@@ -113,14 +111,6 @@ class TrashDefaultView: UIView {
self
.
responderViewController
()?
.
dismiss
(
animated
:
true
,
completion
:
{
self
.
responderViewController
()?
.
dismiss
(
animated
:
true
,
completion
:
{
NotificationCenter
.
default
.
post
(
name
:
TrashDefaultView
.
jumpToPhotosDetailPageName
,
object
:
nil
,
userInfo
:
[
"type"
:
self
.
mediaType
?
.
rawValue
??
""
])
NotificationCenter
.
default
.
post
(
name
:
TrashDefaultView
.
jumpToPhotosDetailPageName
,
object
:
nil
,
userInfo
:
[
"type"
:
self
.
mediaType
?
.
rawValue
??
""
])
})
})
// PhotoDataManager.manager.loadFromFileSystem { model in
// let data = type == .other ? model.otherModelArray[4] : model.otherModelArray[2]
// let vc:HomePhotosDetailViewController = HomePhotosDetailViewController(model: data)
// vc.mediaType = type == .other ? .Other : PhotsFileType.screenshots
// vc.dealData()
// self.responderViewController()?.navigationController?.pushViewController(vc, animated: true)
// }
}
}
func
jumpToVideoDetailPage
(
type
:
TrashTypeEnum
){
func
jumpToVideoDetailPage
(
type
:
TrashTypeEnum
){
self
.
responderViewController
()?
.
dismiss
(
animated
:
true
,
completion
:
{
self
.
responderViewController
()?
.
dismiss
(
animated
:
true
,
completion
:
{
...
...
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