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
873ecde3
Commit
873ecde3
authored
May 19, 2025
by
CZ1004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【优化】部分逻辑新增和bug修复
parent
78b769f8
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
435 additions
and
227 deletions
+435
-227
HomePhotosDetailViewController.swift
...Page/Home/Controller/HomePhotosDetailViewController.swift
+186
-60
HomeVideoDetailController.swift
...lass/Page/Home/Controller/HomeVideoDetailController.swift
+169
-47
HomeDetailDeleteView.swift
PhoneManager/Class/Page/Home/View/HomeDetailDeleteView.swift
+46
-0
HomeInfoView.swift
PhoneManager/Class/Page/Home/View/HomeInfoView.swift
+20
-2
PhotosRemoveBaseView.swift
PhoneManager/Class/Page/Home/View/PhotosRemoveBaseView.swift
+1
-0
TrashSubView.swift
PhoneManager/Class/Page/Home/View/TrashSubView.swift
+5
-1
YearMonthPickerView.swift
PhoneManager/Class/Page/Home/View/YearMonthPickerView.swift
+2
-2
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/Home/Controller/HomePhotosDetailViewController.swift
View file @
873ecde3
...
...
@@ -7,6 +7,7 @@
import
Foundation
import
Photos
import
SnapKit
class
HomePhotosDetailViewController
:
BaseViewController
{
private
var
headerHeight
:
CGFloat
=
98
...
...
@@ -15,7 +16,18 @@ class HomePhotosDetailViewController : BaseViewController {
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
>
()
...
...
@@ -30,12 +42,37 @@ class HomePhotosDetailViewController : BaseViewController {
// 当前页面选中的
var
selectedModel
:
[
AssetModel
]
=
[]
{
didSet
{
DispatchQueue
.
main
.
async
{
if
self
.
selectedModel
.
count
==
0
{
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
// 更新约束
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
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Photo"
,
for
:
.
normal
)
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Photo"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
// 更新约束
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
.
deleteButton
.
setTitle
(
"Delete
\(
selectedModel
.
count
)
Photos"
,
for
:
.
normal
)
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 {
let
layout
=
WaterfallMutiSectionFlowLayout
()
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
(
HomePhotosDetailCustomHeaderView
.
self
,
forSupplementaryViewOfKind
:
UICollectionView
.
elementKindSectionHeader
,
withReuseIdentifier
:
"HomePhotosDetailCustomHeaderView"
)
...
...
@@ -80,18 +117,20 @@ class HomePhotosDetailViewController : BaseViewController {
}()
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
)
lazy
var
deleteButtonView
:
HomeDetailDeleteView
=
{
let
view
=
HomeDetailDeleteView
()
view
.
addTopShadow
()
return
view
}()
lazy
var
trashSubView
:
TrashSubView
=
{
let
view
=
TrashSubView
()
view
.
backgroundColor
=
.
white
view
.
isHidden
=
true
return
view
}()
func
setUI
(){
...
...
@@ -119,11 +158,11 @@ class HomePhotosDetailViewController : BaseViewController {
},
completion
:
nil
)
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
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
...
...
@@ -140,11 +179,11 @@ class HomePhotosDetailViewController : BaseViewController {
},
completion
:
nil
)
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
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
}
...
...
@@ -153,12 +192,12 @@ class HomePhotosDetailViewController : BaseViewController {
self
.
view
.
insertSubview
(
collectionView
,
at
:
0
)
self
.
view
.
addSubview
(
self
.
deleteButton
)
self
.
deleteButton
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
self
.
collectionView
.
snp
.
bottom
)
.
offset
(
16
)
self
.
view
.
addSubview
(
self
.
deleteButtonView
)
self
.
deleteButtonView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
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
)
...
...
@@ -174,9 +213,34 @@ class HomePhotosDetailViewController : BaseViewController {
make
.
top
.
equalTo
(
self
.
defaultImageView
.
snp
.
bottom
)
.
offset
(
-
30
)
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
)
}
}
}
...
...
@@ -191,16 +255,16 @@ class HomePhotosDetailViewController : BaseViewController {
self
.
defaultTipLabel
.
isHidden
=
false
self
.
currentHeaderView
?
.
btnView
.
isHidden
=
true
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
true
self
.
deleteButton
.
isHidden
=
true
self
.
deleteButton
View
.
isHidden
=
true
}
else
{
self
.
defaultImageView
.
isHidden
=
true
self
.
defaultTipLabel
.
isHidden
=
true
self
.
currentHeaderView
?
.
btnView
.
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 {
setUI
()
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
(){
...
...
@@ -256,6 +347,7 @@ class HomePhotosDetailViewController : BaseViewController {
self
.
collectionView
.
reloadData
()
}
}
addTrashView
()
}
...
...
@@ -371,6 +463,8 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
cell
.
cellCallBack
=
{[
weak
self
]
ident
,
order
in
guard
let
self
else
{
return
}
DispatchQueue
.
main
.
async
{
// 这里还需要判断下当前cell 是不是被选中了,选中了就不跳转左滑右滑动页面
if
self
.
videoDetailNavView
?
.
startSelectButton
.
isSelected
==
false
{
// 点击之后跳转详情页面
if
self
.
mediaType
==
.
screenshots
{
let
vc
=
PhotoRemoveViewController
(
data
:
self
.
resourceData
,
currentIndex
:
indexPath
.
row
,
mediaType
:
.
shot
)
...
...
@@ -380,6 +474,43 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
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
)
}
}
}
cell
.
clickCallBack
=
{[
weak
self
]
click
,
order
in
...
...
@@ -389,14 +520,6 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
else
{
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
)
}
}
}
return
cell
...
...
@@ -525,7 +648,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
@objc
func
deleteButtonAction
(){
func
deleteButtonAction
(){
if
selectedModel
.
count
<=
0
{
return
}
...
...
@@ -720,8 +843,8 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
DispatchQueue
.
main
.
async
{
// 删除完成之后,移除下当前选择的数据
self
.
selectedModel
.
removeAll
()
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
UIView
.
transition
(
with
:
self
.
collectionView
,
duration
:
0.3
,
options
:
.
transitionCrossDissolve
,
animations
:
{
self
.
collectionView
.
reloadSections
(
IndexSet
(
integer
:
0
))
...
...
@@ -730,4 +853,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
setDefaultPage
()
}
}
PhoneManager/Class/Page/Home/Controller/HomeVideoDetailController.swift
View file @
873ecde3
...
...
@@ -7,6 +7,7 @@
import
Foundation
import
Photos
import
SnapKit
class
HomeVideoDetailController
:
BaseViewController
{
...
...
@@ -14,6 +15,8 @@ class HomeVideoDetailController :BaseViewController {
private
var
currentHeaderView
:
HomeVideoDetailCustomHeaderView
?
private
var
deleteViewBottomConstraint
:
Constraint
?
@MainActor
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
...
...
@@ -32,17 +35,37 @@ class HomeVideoDetailController :BaseViewController {
// 当前页面选中的
var
selectedModel
:
[
AssetModel
]
=
[]
{
didSet
{
DispatchQueue
.
main
.
async
{
[
self
]
in
if
self
.
selectedModel
.
count
!=
0
{
if
self
.
selectedModel
.
count
==
1
{
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
DispatchQueue
.
main
.
async
{
if
self
.
selectedModel
.
count
==
0
{
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
// 更新约束
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
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Video"
,
for
:
.
normal
)
self
.
deleteButtonView
.
deleteButton
.
setTitle
(
"Delete
\(
self
.
selectedModel
.
count
)
Video"
,
for
:
.
normal
)
UIView
.
animate
(
withDuration
:
0.1
)
{
// 更新约束
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
.
deleteButton
.
setTitle
(
"Delete
\(
selectedModel
.
count
)
Videos"
,
for
:
.
normal
)
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 {
let
layout
=
WaterfallMutiSectionFlowLayout
()
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
(
HomeVideoDetailCustomHeaderView
.
self
,
forSupplementaryViewOfKind
:
UICollectionView
.
elementKindSectionHeader
,
withReuseIdentifier
:
"HomeVideoDetailCustomHeaderView"
)
...
...
@@ -69,14 +92,18 @@ class HomeVideoDetailController :BaseViewController {
}()
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
)
lazy
var
deleteButtonView
:
HomeDetailDeleteView
=
{
let
view
=
HomeDetailDeleteView
()
view
.
addTopShadow
()
return
view
}()
lazy
var
trashSubView
:
TrashSubView
=
{
let
view
=
TrashSubView
()
view
.
backgroundColor
=
.
white
view
.
tipLabel
.
text
=
"The video in the trash can"
view
.
isHidden
=
true
return
view
}()
...
...
@@ -165,11 +192,11 @@ class HomeVideoDetailController :BaseViewController {
self
.
collectionView
.
reloadData
()
},
completion
:
nil
)
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
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
...
...
@@ -187,11 +214,11 @@ class HomeVideoDetailController :BaseViewController {
},
completion
:
nil
)
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
{
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
}
}
}
...
...
@@ -199,12 +226,12 @@ class HomeVideoDetailController :BaseViewController {
self
.
view
.
insertSubview
(
collectionView
,
at
:
0
)
self
.
view
.
addSubview
(
self
.
deleteButton
)
self
.
deleteButton
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
self
.
collectionView
.
snp
.
bottom
)
.
offset
(
16
)
self
.
view
.
addSubview
(
self
.
deleteButtonView
)
self
.
deleteButtonView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
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
.
defaultImageView
.
snp
.
makeConstraints
{
make
in
...
...
@@ -230,6 +257,57 @@ class HomeVideoDetailController :BaseViewController {
setUI
()
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
)
{
...
...
@@ -240,6 +318,7 @@ class HomeVideoDetailController :BaseViewController {
self
.
collectionView
.
reloadData
()
}
}
addTrashView
()
}
func
showTipsVC
(){
...
...
@@ -294,15 +373,6 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
}
else
{
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
guard
let
self
else
{
return
}
...
...
@@ -310,8 +380,59 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
// 获取视频的图片
PhotoAndVideoMananger
.
mananger
.
getVideoImageByIdent
(
ident
:
ident
)
{
image
in
// 点击之后跳转详情页面
if
self
.
videoDetailNavView
?
.
startSelectButton
.
isSelected
==
false
{
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
:
{
DispatchQueue
.
main
.
async
{
let
alert
=
UIAlertController
(
title
:
nil
,
message
:
"Get Video image failure"
,
preferredStyle
:
.
alert
)
...
...
@@ -402,7 +523,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
}
@objc
func
deleteButtonAction
(){
func
deleteButtonAction
(){
if
selectedModel
.
count
<=
0
{
return
...
...
@@ -582,15 +703,16 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
self
.
defaultTipLabel
.
isHidden
=
false
self
.
currentHeaderView
?
.
btnView
.
isHidden
=
true
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
true
self
.
deleteButton
.
isHidden
=
true
self
.
deleteButton
View
.
deleteButton
.
isHidden
=
true
}
else
{
self
.
defaultImageView
.
isHidden
=
true
self
.
defaultTipLabel
.
isHidden
=
true
self
.
currentHeaderView
?
.
btnView
.
isHidden
=
false
self
.
videoDetailNavView
?
.
startSelectButton
.
isHidden
=
false
self
.
deleteButton
.
isHidden
=
false
self
.
deleteButton
View
.
deleteButton
.
isHidden
=
false
}
}
self
.
addTrashView
()
}
}
...
...
@@ -608,8 +730,8 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
// 更新页面
DispatchQueue
.
main
.
async
{
self
.
selectedModel
.
removeAll
()
self
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
self
.
deleteButton
View
.
deleteButton
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
self
.
deleteButton
View
.
deleteButton
.
setTitle
(
"Delete"
,
for
:
.
normal
)
if
self
.
currentHeaderView
!=
nil
{
self
.
currentHeaderView
?
.
sizeLabel
.
text
=
"
\(
self
.
resourceData
.
count
)
Videos"
...
...
PhoneManager/Class/Page/Home/View/HomeDetailDeleteView.swift
0 → 100644
View file @
873ecde3
//
// 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 @
873ecde3
...
...
@@ -44,6 +44,7 @@ class HomeInfoView :UIView {
lazy
var
headerView
:
HomeInfoTitleView
=
{
let
sview
:
HomeInfoTitleView
=
HomeInfoTitleView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
width
,
height
:
84
))
sview
.
titleLabel
.
text
=
self
.
titleText
sview
.
type
=
self
.
type
sview
.
filterButton
.
isHidden
=
self
.
type
!=
.
similar
&&
self
.
type
!=
.
SimilarVideos
return
sview
}()
...
...
@@ -354,9 +355,19 @@ extension HomeInfoView:UITableViewDataSource,UITableViewDelegate {
guard
let
indexPath
=
tableView
.
indexPathsForVisibleRows
?
.
first
else
{
return
}
let
nextRow
=
self
.
isDragEnd
==
true
?
indexPath
.
row
+
1
:
indexPath
.
row
+
2
// let nextRow = self.isDragEnd == true ? indexPath.row + 1 : indexPath.row + 2
let
nextRow
=
indexPath
.
row
+
2
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
}
...
...
@@ -498,6 +509,8 @@ class HomeInfoTitleView:UIView {
var
sortViewSubmitCallBack
:
(
ResourceFilterBoxModel
)
->
Void
=
{
model
in
}
var
type
:
PhotsFileType
?
lazy
var
titleLabel
:
UILabel
=
{
let
sview
:
UILabel
=
UILabel
()
...
...
@@ -575,7 +588,12 @@ class HomeInfoTitleView:UIView {
let
allNumberStr
=
"
\(
allNumber
)
"
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
:
[
...
...
PhoneManager/Class/Page/Home/View/PhotosRemoveBaseView.swift
View file @
873ecde3
...
...
@@ -56,6 +56,7 @@ class PhotosRemoveBaseView: UIView {
self
.
imageView
.
isUserInteractionEnabled
=
true
let
tap
=
UITapGestureRecognizer
()
tap
.
addTarget
(
self
,
action
:
#selector(
showDeatail
)
)
imageView
.
backgroundColor
=
.
white
self
.
imageView
.
addGestureRecognizer
(
tap
)
}
...
...
PhoneManager/Class/Page/Home/View/TrashSubView.swift
View file @
873ecde3
...
...
@@ -9,6 +9,8 @@ import UIKit
class
TrashSubView
:
UIView
{
var
type
:
TrashTypeEnum
?
var
clearTashDataCallBack
:
()
->
Void
=
{}
var
presentTashDetailViewClickCallBack
:
()
->
Void
=
{}
...
...
@@ -32,7 +34,7 @@ class TrashSubView: UIView {
let
button
=
UIButton
(
type
:
.
custom
)
button
.
setImage
(
UIImage
(
named
:
"ic_delete_duplicates"
),
for
:
.
normal
)
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
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
,
weight
:
.
semibold
)
button
.
layer
.
cornerRadius
=
19
...
...
@@ -43,6 +45,8 @@ class TrashSubView: UIView {
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
self
.
addTopShadow
()
// 给当前视图添加手势
addTapGestureToSelf
()
...
...
PhoneManager/Class/Page/Home/View/YearMonthPickerView.swift
View file @
873ecde3
...
...
@@ -146,14 +146,14 @@ extension YearMonthPickerView: UIPickerViewDataSource, UIPickerViewDelegate {
}
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
)
{
if
component
==
0
{
selectedMonth
=
row
}
else
{
selectedYear
=
years
.
reversed
()
[
row
]
selectedYear
=
years
[
row
]
}
}
...
...
PhoneManager/Class/Page/Trash/Controller/TrashViewController.swift
View file @
873ecde3
...
...
@@ -12,13 +12,13 @@ class TrashViewController: BaseViewController {
var
dissmisCallBack
:()
->
Void
=
{}
var
source
:[
TrashTypeEnum
]
=
[
.
video
,
.
other
,
.
shot
,
.
chat
]
var
source
:[
TrashTypeEnum
]
=
[
.
video
,
.
other
,
.
shot
]
var
contentH
:
CGFloat
=
0
var
contentScrollView
:
UIScrollView
!
var
delBtn
:
UIButton
!
var
currentType
:
TrashTypeEnum
=
.
other
let
pageCount
=
4
// 总页数
let
pageCount
=
3
// 总页数
var
currentPage
=
1
{
didSet
{
self
.
setDelButtonUI
()
...
...
@@ -61,7 +61,7 @@ class TrashViewController: BaseViewController {
func
configUI
(){
view
.
backgroundColor
=
.
white
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
.
showsHorizontalScrollIndicator
=
false
contentScrollView
.
showsVerticalScrollIndicator
=
false
...
...
@@ -98,13 +98,11 @@ class TrashViewController: BaseViewController {
contentScrollView
.
addSubview
(
videoView
)
contentScrollView
.
addSubview
(
otherView
)
contentScrollView
.
addSubview
(
shotView
)
contentScrollView
.
addSubview
(
chatView
)
videoView
.
deleteButton
=
delBtn
otherView
.
deleteButton
=
delBtn
shotView
.
deleteButton
=
delBtn
chatView
.
deleteButton
=
delBtn
}
override
func
viewWillLayoutSubviews
()
{
...
...
@@ -114,11 +112,10 @@ class TrashViewController: BaseViewController {
let
viewHeight
=
self
.
view
.
bounds
.
height
contentH
=
viewHeight
-
108
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
)
otherView
.
frame
=
CGRect
(
x
:
viewWidth
,
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
=
{
...
...
@@ -139,54 +136,8 @@ class TrashViewController: BaseViewController {
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
{
func
scrollViewDidScroll
(
_
scrollView
:
UIScrollView
){
...
...
@@ -233,9 +184,6 @@ extension TrashViewController:UIScrollViewDelegate{
if
self
.
currentPage
==
3
{
return
(
TrashTypeEnum
.
shot
,
self
.
shotView
)
}
if
self
.
currentPage
==
4
{
return
(
TrashTypeEnum
.
chat
,
self
.
chatView
)
}
return
(
TrashTypeEnum
.
video
,
self
.
videoView
)
}
...
...
PhoneManager/Class/Page/Trash/Model/TrashUIModel.swift
View file @
873ecde3
...
...
@@ -11,7 +11,6 @@ enum TrashTypeEnum : String, CaseIterable{
case
video
=
"Video"
case
other
=
"Other"
case
shot
=
"Screenshot"
case
chat
=
"Chat"
var
dbType
:
Int
{
switch
self
{
...
...
@@ -21,8 +20,6 @@ enum TrashTypeEnum : String, CaseIterable{
return
1
case
.
shot
:
return
2
case
.
chat
:
return
3
}
}
}
...
...
PhoneManager/Class/Page/Trash/View/TrashContenTitleCell.swift
View file @
873ecde3
...
...
@@ -39,8 +39,6 @@ class TrashContenTitleCell: UICollectionViewCell {
scrollLine
.
frame
=
lineTwo
.
frame
case
.
shot
:
scrollLine
.
frame
=
lineThree
.
frame
case
.
chat
:
scrollLine
.
frame
=
lineFour
.
frame
}
}
}
...
...
@@ -131,16 +129,6 @@ class TrashContenTitleCell: UICollectionViewCell {
}
}
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 @
873ecde3
...
...
@@ -29,7 +29,7 @@ class TrashContenView: UIView {
var
deleteButton
:
UIButton
?
var
scrollLine
:
UIView
!
let
lineW
:
CGFloat
=
(
ScreenW
-
62
)
/
4
.0
let
lineW
:
CGFloat
=
(
ScreenW
-
62
)
/
3
.0
var
dataSource
:[
AssetModel
]
=
[]
{
didSet
{
...
...
@@ -48,11 +48,6 @@ class TrashContenView: UIView {
}
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
()
}
...
...
@@ -81,7 +76,6 @@ class TrashContenView: UIView {
collectionView
.
backgroundColor
=
UIColor
.
colorWithHex
(
hexStr
:
"#F2F6FC"
)
collectionView
.
dataSource
=
self
collectionView
.
register
(
UINib
(
nibName
:
"TrashContenAssetCell"
,
bundle
:
nil
),
forCellWithReuseIdentifier
:
"TrashContenAssetCell"
)
// collectionView.register(UINib(nibName: "TrashContenTitleCell", bundle: nil), forCellWithReuseIdentifier: "TrashContenTitleCell")
addSubview
(
collectionView
)
...
...
@@ -134,14 +128,9 @@ class TrashContenView: UIView {
lineThree
.
backgroundColor
=
UIColor
.
colorWithHex
(
hexStr
:
"#E5E5E5"
)
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
)
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
)
lineFour
.
frame
=
CGRect
(
x
:
10
+
lineThree
.
rightX
,
y
:
62
,
width
:
lineW
,
height
:
6
)
scrollLine
=
UIView
()
...
...
@@ -218,23 +207,6 @@ class TrashContenView: UIView {
}
else
{
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 {
lineOne
.
cornerCut
(
radius
:
2
,
corner
:
.
allCorners
)
lineTwo
.
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
{
...
...
@@ -258,8 +228,6 @@ class TrashContenView: UIView {
scrollLine
.
frame
=
lineTwo
.
frame
case
.
shot
:
scrollLine
.
frame
=
lineThree
.
frame
case
.
chat
:
scrollLine
.
frame
=
lineFour
.
frame
}
getData
()
}
...
...
PhoneManager/Class/Page/Trash/View/TrashDefaultView.swift
View file @
873ecde3
...
...
@@ -103,8 +103,6 @@ class TrashDefaultView: UIView {
case
.
other
,
.
shot
:
jumpToPhotosDetailPage
(
type
:
type
)
break
case
.
chat
:
break
}
}
}
...
...
@@ -113,14 +111,6 @@ class TrashDefaultView: UIView {
self
.
responderViewController
()?
.
dismiss
(
animated
:
true
,
completion
:
{
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
){
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