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
ca1f9038
Commit
ca1f9038
authored
Apr 09, 2025
by
CZ1004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
首页数据加载+详情
parent
c81e34c9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
949 additions
and
189 deletions
+949
-189
Contents.json
...Assets.xcassets/Home/btn_play_home.imageset/Contents.json
+23
-0
btn_play_home.png
...ts.xcassets/Home/btn_play_home.imageset/btn_play_home.png
+0
-0
btn_play_home@2x.png
...xcassets/Home/btn_play_home.imageset/btn_play_home@2x.png
+0
-0
btn_play_home@3x.png
...xcassets/Home/btn_play_home.imageset/btn_play_home@3x.png
+0
-0
ChargeInfoViewController.swift
.../Session/Charge/Controller/ChargeInfoViewController.swift
+1
-0
ChargeViewController.swift
...lass/Session/Charge/Controller/ChargeViewController.swift
+7
-22
ChargeInfoBackView.swift
...anager/Class/Session/Charge/View/ChargeInfoBackView.swift
+1
-1
ChargeView.swift
PhoneManager/Class/Session/Charge/View/ChargeView.swift
+2
-6
HomeInfoViewController.swift
...lass/Session/Home/Controller/HomeInfoViewController.swift
+5
-2
HomeVideoDetailController.swift
...s/Session/Home/Controller/HomeVideoDetailController.swift
+227
-0
HomeViewController.swift
...er/Class/Session/Home/Controller/HomeViewController.swift
+28
-8
HomeInfoView.swift
PhoneManager/Class/Session/Home/View/HomeInfoView.swift
+12
-3
HomeVideoDetailCustomHeaderView.swift
...s/Session/Home/View/HomeVideoDetailCustomHeaderView.swift
+200
-0
HomeView.swift
PhoneManager/Class/Session/Home/View/HomeView.swift
+16
-6
HomePhotosModel .swift
...ager/Class/Session/Home/View/Model/HomePhotosModel .swift
+134
-114
ImageSeletedCollectionItem.swift
.../Session/Home/View/Model/ImageSeletedCollectionItem.swift
+1
-0
VideoDetaiNavView.swift
PhoneManager/Class/Session/Home/View/VideoDetaiNavView.swift
+63
-0
HomeInfoTableViewCell.swift
.../Class/Session/Home/View/cell/HomeInfoTableViewCell.swift
+2
-1
HomeOtherCollectionCell.swift
...lass/Session/Home/View/cell/HomeOtherCollectionCell.swift
+43
-8
HomeTitleCollectionCell.swift
...lass/Session/Home/View/cell/HomeTitleCollectionCell.swift
+4
-1
HomeVideoDetailCell.swift
...er/Class/Session/Home/View/cell/HomeVideoDetailCell.swift
+136
-0
ImageCollectionCell.swift
...er/Class/Session/Home/View/cell/ImageCollectionCell.swift
+1
-1
ImageSeletedCollectionCell.swift
...s/Session/Home/View/cell/ImageSeletedCollectionCell.swift
+43
-16
No files found.
PhoneManager/Assets.xcassets/Home/btn_play_home.imageset/Contents.json
0 → 100644
View file @
ca1f9038
{
"images"
:
[
{
"filename"
:
"btn_play_home.png"
,
"idiom"
:
"universal"
,
"scale"
:
"1x"
},
{
"filename"
:
"btn_play_home@2x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"2x"
},
{
"filename"
:
"btn_play_home@3x.png"
,
"idiom"
:
"universal"
,
"scale"
:
"3x"
}
],
"info"
:
{
"author"
:
"xcode"
,
"version"
:
1
}
}
PhoneManager/Assets.xcassets/Home/btn_play_home.imageset/btn_play_home.png
0 → 100644
View file @
ca1f9038
1.34 KB
PhoneManager/Assets.xcassets/Home/btn_play_home.imageset/btn_play_home@2x.png
0 → 100644
View file @
ca1f9038
2.64 KB
PhoneManager/Assets.xcassets/Home/btn_play_home.imageset/btn_play_home@3x.png
0 → 100644
View file @
ca1f9038
3.73 KB
PhoneManager/Class/Session/Charge/Controller/ChargeInfoViewController.swift
View file @
ca1f9038
...
...
@@ -39,6 +39,7 @@ class ChargeInfoViewController:BaseViewController {
lazy
var
backImageView
:
ChargeInfoBackView
=
{
let
sview
:
ChargeInfoBackView
=
ChargeInfoBackView
(
frame
:
view
.
bounds
,
model
:
self
.
model
!
)
sview
.
model
=
self
.
model
return
sview
}()
...
...
PhoneManager/Class/Session/Charge/Controller/ChargeViewController.swift
View file @
ca1f9038
...
...
@@ -29,28 +29,6 @@ class ChargeViewController:BaseViewController {
let
sview
:
ChargeView
=
ChargeView
(
frame
:
CGRect
(
x
:
0
,
y
:
cY
,
width
:
view
.
width
,
height
:
view
.
height
-
cY
))
sview
.
callBack
=
{[
weak
self
]
model
in
guard
let
self
else
{
return
}
DispatchQueue
.
main
.
async
{[
weak
self
]
in
guard
let
self
else
{
return
}
if
let
cModel
=
model
as?
ChargeDataModel
{
sview
.
callOrder
=
{[
weak
self
]
flag
in
guard
let
self
else
{
return
}
let
vc
:
ChargeInfoViewController
=
ChargeInfoViewController
(
model
:
cModel
,
type
:
ChargeInfoViewController
.
ChargeInfoType
.
setting
)
vc
.
flag
=
flag
as?
Int
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
}
}
return
sview
}()
...
...
@@ -63,6 +41,13 @@ class ChargeViewController:BaseViewController {
titleView
.
addSubview
(
detailsBtn
)
view
.
addSubview
(
chargeView
)
self
.
chargeView
.
clickCallBack
=
{[
weak
self
]
model
,
row
in
guard
let
self
else
{
return
}
let
vc
:
ChargeInfoViewController
=
ChargeInfoViewController
(
model
:
model
,
type
:
ChargeInfoViewController
.
ChargeInfoType
.
setting
)
vc
.
flag
=
row
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
override
func
viewDidAppear
(
_
animated
:
Bool
)
{
...
...
PhoneManager/Class/Session/Charge/View/ChargeInfoBackView.swift
View file @
ca1f9038
...
...
@@ -56,7 +56,7 @@ class ChargeInfoBackView:UIView {
setupUI
()
self
.
videoPlayView
.
playVideo
(
with
:
self
.
model
!
.
url
)
self
.
videoPlayView
.
playVideo
(
with
:
model
.
url
)
setupTimeUpdates
()
...
...
PhoneManager/Class/Session/Charge/View/ChargeView.swift
View file @
ca1f9038
...
...
@@ -10,9 +10,7 @@ import AVFoundation
class
ChargeView
:
UIView
{
var
callBack
:
callBack
<
Any
>
=
{
model
in
}
var
callOrder
:
callBack
<
Any
>
=
{
flag
in
}
var
clickCallBack
:
(
ChargeDataModel
,
Int
)
->
Void
=
{
model
,
index
in
}
let
footerID
:
String
=
"footerID"
...
...
@@ -101,9 +99,7 @@ extension ChargeView:WaterfallMutiSectionDelegate,UICollectionViewDataSource,UIC
let
model
=
models
[
indexPath
.
row
]
self
.
callBack
(
model
)
self
.
callOrder
(
indexPath
.
row
)
self
.
clickCallBack
(
model
,
indexPath
.
row
)
}
...
...
PhoneManager/Class/Session/Home/Controller/HomeInfoViewController.swift
View file @
ca1f9038
...
...
@@ -37,7 +37,7 @@ class HomeInfoViewController:BaseViewController {
let
cY
:
CGFloat
=
titleView
.
y
+
titleView
.
height
let
sview
:
HomeInfoView
=
HomeInfoView
(
frame
:
CGRect
(
x
:
0
,
y
:
cY
,
width
:
view
.
width
,
height
:
view
.
height
-
cY
),
ids
:
ids
,
type
:
self
.
type
)
let
sview
:
HomeInfoView
=
HomeInfoView
(
frame
:
CGRect
(
x
:
0
,
y
:
cY
,
width
:
view
.
width
,
height
:
view
.
height
-
cY
),
ids
:
ids
,
type
:
self
.
type
,
titleText
:
titleText
)
sview
.
callBack
=
{[
weak
self
]
isSeleted
in
...
...
@@ -91,9 +91,12 @@ class HomeInfoViewController:BaseViewController {
var
ids
:
[[
String
]]?
init
(
ids
:
[[
String
]],
type
:
PhotsFileType
?)
{
var
titleText
:
String
?
init
(
ids
:
[[
String
]],
type
:
PhotsFileType
?,
titleText
:
String
)
{
self
.
ids
=
ids
self
.
type
=
type
self
.
titleText
=
titleText
super
.
init
(
nibName
:
nil
,
bundle
:
nil
)
}
...
...
PhoneManager/Class/Session/Home/Controller/HomeVideoDetailController.swift
0 → 100644
View file @
ca1f9038
//
// HomeVideoDetailController.swift
// PhoneManager
//
// Created by edy on 2025/4/9.
//
import
Foundation
class
HomeVideoDetailController
:
BaseViewController
{
private
var
videoDetailNavView
:
VideoDetaiNavView
?
var
model
:
HomePhotosModel
?
{
didSet
{
self
.
collectionView
.
reloadData
()
}
}
// 排序
var
currentSort
:
Int
=
0
{
didSet
{
clearSelected
()
}
}
// 资源类型 - 相册或者视频
var
currentResourceType
:
Int
=
0
// 所有的数据
var
resourceData
=
[
HomePhotosModel
](){
didSet
{
DispatchQueue
.
main
.
async
{
self
.
collectionView
.
reloadData
()
}
}
}
// 当前页面选中的
var
selectedModel
:
[
ResourceModel
]
=
[]
lazy
var
collectionView
:
UICollectionView
=
{
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
-
102
),
collectionViewLayout
:
layout
)
sview
.
register
(
HomeVideoDetailCell
.
self
,
forCellWithReuseIdentifier
:
"HomeVideoDetailCell"
)
sview
.
register
(
HomeVideoDetailCustomHeaderView
.
self
,
forSupplementaryViewOfKind
:
UICollectionView
.
elementKindSectionHeader
,
withReuseIdentifier
:
"HomeVideoDetailCustomHeaderView"
)
sview
.
register
(
UICollectionReusableView
.
self
,
forSupplementaryViewOfKind
:
UICollectionView
.
elementKindSectionFooter
,
withReuseIdentifier
:
"footerID"
)
sview
.
dataSource
=
self
sview
.
delegate
=
self
sview
.
showsVerticalScrollIndicator
=
false
if
#available(iOS 11.0, *)
{
sview
.
contentInsetAdjustmentBehavior
=
.
never
}
sview
.
backgroundColor
=
.
clear
return
sview
}()
lazy
var
deleteButton
:
UIButton
=
{
let
view
=
UIButton
()
view
.
backgroundColor
=
UIColor
(
red
:
0.7
,
green
:
0.7
,
blue
:
0.7
,
alpha
:
1
)
view
.
setTitle
(
"Delete"
,
for
:
UIControl
.
State
.
normal
)
view
.
setTitleColor
(
UIColor
(
red
:
1
,
green
:
1
,
blue
:
1
,
alpha
:
1
),
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
}()
func
setUI
(){
videoDetailNavView
=
VideoDetaiNavView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
self
.
view
.
width
,
height
:
statusBarHeight
+
44
))
self
.
view
.
addSubview
(
videoDetailNavView
!
)
videoDetailNavView
?
.
snp
.
makeConstraints
({
make
in
make
.
top
.
centerX
.
width
.
equalToSuperview
()
make
.
height
.
equalTo
(
statusBarHeight
+
44
)
})
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
)
make
.
left
.
equalToSuperview
()
.
offset
(
15
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
15
)
make
.
height
.
equalTo
(
46
)
}
}
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
view
.
backgroundColor
=
.
white
self
.
navigationController
?
.
navigationBar
.
isHidden
=
true
setUI
()
}
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
super
.
viewWillAppear
(
animated
)
// 目的是为了消除cell 的选择按钮状态
if
self
.
selectedModel
.
count
==
0
{
self
.
collectionView
.
reloadData
()
}
}
}
extension
HomeVideoDetailController
:
WaterfallMutiSectionDelegate
,
UICollectionViewDataSource
,
UICollectionViewDelegate
{
func
numberOfSections
(
in
collectionView
:
UICollectionView
)
->
Int
{
return
1
}
func
collectionView
(
_
collectionView
:
UICollectionView
,
numberOfItemsInSection
section
:
Int
)
->
Int
{
return
self
.
resourceData
.
count
}
func
collectionView
(
_
collectionView
:
UICollectionView
,
cellForItemAt
indexPath
:
IndexPath
)
->
UICollectionViewCell
{
let
cell
=
collectionView
.
dequeueReusableCell
(
withReuseIdentifier
:
"CompressSelectCell"
,
for
:
indexPath
)
as!
CompressSelectCell
return
cell
}
func
heightForRowAtIndexPath
(
collectionView
collection
:
UICollectionView
,
layout
:
WaterfallMutiSectionFlowLayout
,
indexPath
:
IndexPath
,
itemWidth
:
CGFloat
)
->
CGFloat
{
return
itemWidth
}
func
columnNumber
(
collectionView
collection
:
UICollectionView
,
layout
:
WaterfallMutiSectionFlowLayout
,
section
:
Int
)
->
Int
{
return
2
}
func
lineSpacing
(
collectionView
collection
:
UICollectionView
,
layout
:
WaterfallMutiSectionFlowLayout
,
section
:
Int
)
->
CGFloat
{
return
8
}
func
interitemSpacing
(
collectionView
collection
:
UICollectionView
,
layout
:
WaterfallMutiSectionFlowLayout
,
section
:
Int
)
->
CGFloat
{
return
11
}
func
spacingWithLastSection
(
collectionView
collection
:
UICollectionView
,
layout
:
WaterfallMutiSectionFlowLayout
,
section
:
Int
)
->
CGFloat
{
return
8
}
func
collectionView
(
_
collectionView
:
UICollectionView
,
didSelectItemAt
indexPath
:
IndexPath
)
{
}
func
referenceSizeForHeader
(
collectionView
collection
:
UICollectionView
,
layout
:
WaterfallMutiSectionFlowLayout
,
section
:
Int
)
->
CGSize
{
return
CGSize
(
width
:
self
.
collectionView
.
width
,
height
:
168
)
}
func
collectionView
(
_
collectionView
:
UICollectionView
,
viewForSupplementaryElementOfKind
kind
:
String
,
at
indexPath
:
IndexPath
)
->
UICollectionReusableView
{
if
kind
==
UICollectionView
.
elementKindSectionHeader
{
let
header
=
collectionView
.
dequeueReusableSupplementaryView
(
ofKind
:
kind
,
withReuseIdentifier
:
"HomeVideoDetailCustomHeaderView"
,
for
:
indexPath
)
as!
HomeVideoDetailCustomHeaderView
return
header
}
else
{
let
footer
=
collectionView
.
dequeueReusableSupplementaryView
(
ofKind
:
kind
,
withReuseIdentifier
:
"footerID"
,
for
:
indexPath
)
return
footer
}
}
func
sortByType
(
sortType
:
Int
,
header
:
CompressCustomHeaderView
){
switch
sortType
{
case
0
:
header
.
selectlabel
.
text
=
"Largest"
// 按照文件大小降序
break
case
1
:
header
.
selectlabel
.
text
=
"Smallest"
// 按照文件大小升序
break
case
2
:
header
.
selectlabel
.
text
=
"Newest"
// 按照时间降序
break
case
3
:
header
.
selectlabel
.
text
=
"Oldest"
// 按照时间升序
break
default
:
break
}
}
@objc
func
deleteButtonAction
(){
// 然后清理下当前页面的值
clearSelected
()
}
func
clearSelected
()
{
self
.
selectedModel
.
removeAll
()
}
}
PhoneManager/Class/Session/Home/Controller/HomeViewController.swift
View file @
ca1f9038
...
...
@@ -22,18 +22,38 @@ class HomeViewController:BaseViewController {
homeView
=
HomeView
(
frame
:
view
.
bounds
)
homeView
?
.
titleCallBack
=
{[
weak
self
]
array
in
DispatchQueue
.
main
.
async
{[
weak
self
]
in
guard
let
self
else
{
return
}
let
vc
:
HomeInfoViewController
=
HomeInfoViewController
(
ids
:
array
as!
[[
String
]],
type
:
.
similar
)
homeView
?
.
titleCallBack
=
{[
weak
self
]
model
,
type
in
guard
let
self
else
{
return
}
DispatchQueue
.
main
.
async
{
let
vc
:
HomeInfoViewController
=
HomeInfoViewController
(
ids
:
model
.
assets
,
type
:
type
,
titleText
:
model
.
folderName
)
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
homeView
?
.
otherItemCallBack
=
{[
weak
self
]
model
,
otherItemRow
in
guard
let
self
else
{
return
}
if
otherItemRow
==
0
{
DispatchQueue
.
main
.
async
{
let
vc
:
HomeVideoDetailController
=
HomeVideoDetailController
()
vc
.
model
=
model
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
if
otherItemRow
==
1
{
DispatchQueue
.
main
.
async
{
let
vc
:
HomeInfoViewController
=
HomeInfoViewController
(
ids
:
model
.
assets
,
type
:
.
similarScreenshots
,
titleText
:
model
.
folderName
)
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
if
otherItemRow
==
3
{
DispatchQueue
.
main
.
async
{
let
vc
:
HomeInfoViewController
=
HomeInfoViewController
(
ids
:
model
.
assets
,
type
:
.
SimilarVideos
,
titleText
:
model
.
folderName
)
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
}
}
homeView
?
.
indexCallBack
=
{[
weak
self
]
index
in
guard
let
self
else
{
return
}
...
...
PhoneManager/Class/Session/Home/View/HomeInfoView.swift
View file @
ca1f9038
...
...
@@ -11,6 +11,10 @@ class HomeInfoView :UIView{
var
ids
:[[
String
]]?
var
titleText
:
String
?
var
type
:
PhotsFileType
?
var
models
:[
HomeInfoTableItem
]
=
[]
var
callBack
:
callBack
<
Any
>
=
{
text
in
}
...
...
@@ -39,6 +43,8 @@ class HomeInfoView :UIView{
let
sview
:
HomeInfoTitleView
=
HomeInfoTitleView
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
width
,
height
:
84
))
sview
.
titleLabel
.
text
=
self
.
titleText
return
sview
}()
...
...
@@ -66,9 +72,11 @@ class HomeInfoView :UIView{
return
sview
}()
init
(
frame
:
CGRect
,
ids
:[[
String
]]?,
type
:
PhotsFileType
?)
{
init
(
frame
:
CGRect
,
ids
:[[
String
]]?,
type
:
PhotsFileType
?
,
titleText
:
String
?
)
{
self
.
ids
=
ids
self
.
titleText
=
titleText
self
.
type
=
type
for
array
in
ids
??
[]
{
...
...
@@ -87,6 +95,7 @@ class HomeInfoView :UIView{
let
smodel
=
HomeInfoTableItem
()
smodel
.
type
=
type
smodel
.
smodels
=
smodels
smodel
.
titleText
=
titleText
models
.
append
(
smodel
)
}
...
...
@@ -210,9 +219,9 @@ class HomeInfoView :UIView{
}
}
headerView
.
changeContent
(
title
:
PhotsFileType
.
duplicates
.
rawValue
,
allNumber
:
number
,
seletedCount
:
seletedNumber
)
headerView
.
changeContent
(
title
:
self
.
type
!
.
rawValue
,
allNumber
:
number
,
seletedCount
:
seletedNumber
)
deleteView
.
changeContent
(
title
:
PhotsFileType
.
duplicates
.
rawValue
,
seletedCount
:
seletedNumber
)
deleteView
.
changeContent
(
title
:
self
.
type
!
.
rawValue
,
seletedCount
:
seletedNumber
)
tableView
.
contentInset
=
UIEdgeInsets
(
top
:
0
,
left
:
0
,
bottom
:
deleteView
.
isHidden
?
12
:
deleteView
.
height
+
12
,
right
:
0
)
}
...
...
PhoneManager/Class/Session/Home/View/HomeVideoDetailCustomHeaderView.swift
0 → 100644
View file @
ca1f9038
//
// HomeVideoDetailCustomHeaderView.swift
// PhoneManager
//
// Created by edy on 2025/4/9.
//
import
Foundation
class
HomeVideoDetailCustomHeaderView
:
UICollectionReusableView
{
lazy
var
modelTitlelabel
:
UILabel
=
{
let
label
=
UILabel
()
label
.
text
=
"Videos"
label
.
textAlignment
=
.
left
label
.
textColor
=
UIColor
(
red
:
0.2
,
green
:
0.2
,
blue
:
0.2
,
alpha
:
1
)
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
20
,
weight
:
.
bold
)
return
label
}()
lazy
var
btnView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
UIColor
(
red
:
0.95
,
green
:
0.96
,
blue
:
0.99
,
alpha
:
1
)
view
.
layer
.
cornerRadius
=
16
view
.
clipsToBounds
=
true
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
=
{
let
label
=
UILabel
()
label
.
text
=
"1.02 GB"
label
.
textAlignment
=
.
left
label
.
textColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
label
.
font
=
UIFont
.
systemFont
(
ofSize
:
14
,
weight
:
.
regular
)
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
:
"ic_cmpress_home_nor"
)
return
view
}()
private
func
setUI
(){
self
.
addSubview
(
self
.
modelTitlelabel
)
self
.
addSubview
(
self
.
btnView
)
self
.
addSubview
(
self
.
sizeLabel
)
self
.
btnView
.
addSubview
(
self
.
selectImageView
)
self
.
btnView
.
addSubview
(
self
.
selectlabel
)
self
.
addSubview
(
self
.
tipBackView
)
self
.
tipBackView
.
addSubview
(
self
.
tipImageView
)
self
.
tipBackView
.
addSubview
(
self
.
tipLabel
)
self
.
tipBackView
.
addSubview
(
self
.
tipDetailLabel
)
self
.
tipBackView
.
addSubview
(
self
.
saveSizeLabel
)
self
.
tipBackView
.
addSubview
(
self
.
moreImageView
)
self
.
modelTitlelabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
0
)
make
.
top
.
equalToSuperview
()
.
offset
(
14
)
make
.
width
.
equalTo
(
96
*
RScreenW
())
make
.
height
.
equalTo
(
28
)
}
self
.
btnView
.
snp
.
makeConstraints
{
make
in
make
.
right
.
equalToSuperview
()
.
offset
(
0
)
make
.
top
.
equalToSuperview
()
.
offset
(
12
)
make
.
width
.
equalTo
(
103
*
RScreenW
())
make
.
height
.
equalTo
(
32
)
}
self
.
selectImageView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
12
)
make
.
centerY
.
equalToSuperview
()
make
.
width
.
height
.
equalTo
(
20
)
}
self
.
selectlabel
.
snp
.
makeConstraints
{
make
in
make
.
right
.
equalToSuperview
()
.
offset
(
-
12
)
make
.
top
.
equalToSuperview
()
.
offset
(
6
)
make
.
width
.
equalTo
(
60
*
RScreenW
())
make
.
height
.
equalTo
(
20
)
}
self
.
sizeLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
0
)
make
.
right
.
equalTo
(
0
)
make
.
top
.
equalTo
(
self
.
btnView
.
snp
.
bottom
)
.
offset
(
8
)
make
.
height
.
equalTo
(
20
)
}
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
(
120
*
RScreenW
())
make
.
height
.
equalTo
(
28
)
make
.
top
.
equalToSuperview
()
.
offset
(
5
)
}
self
.
tipDetailLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
self
.
tipImageView
.
snp
.
right
)
.
offset
(
10
)
make
.
width
.
equalTo
(
150
*
RScreenW
())
make
.
height
.
equalTo
(
23
)
make
.
top
.
equalTo
(
self
.
tipLabel
.
snp
.
bottom
)
.
offset
(
4
)
}
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
)
{
super
.
init
(
frame
:
frame
)
self
.
backgroundColor
=
.
white
setUI
()
}
required
init
?(
coder
aDecoder
:
NSCoder
)
{
super
.
init
(
coder
:
aDecoder
)
setUI
()
}
}
PhoneManager/Class/Session/Home/View/HomeView.swift
View file @
ca1f9038
...
...
@@ -16,10 +16,12 @@ class HomeView:UIView {
private
var
bottomView
:
UIView
?
var
titleCallBack
:
callBack
<
Any
>
=
{
array
in
}
var
titleCallBack
:
(
HomePhotosModel
,
PhotsFileType
)
->
Void
=
{
model
,
type
in
}
var
indexCallBack
:
callBack
<
Any
>
=
{
index
in
}
var
otherItemCallBack
:
(
HomePhotosModel
,
Int
)
->
Void
=
{
data
,
otherCellRow
in
}
var
model
:
PhotosManagerModel
?
{
didSet
{
...
...
@@ -236,9 +238,11 @@ extension HomeView:WaterfallMutiSectionDelegate,UICollectionViewDataSource,UICol
return
cell
case
1
:
let
cell
=
collectionView
.
dequeueReusableCell
(
withReuseIdentifier
:
HomeOtherCollectionCell
.
identifier
,
for
:
indexPath
)
as!
HomeOtherCollectionCell
cell
.
playImageView
.
isHidden
=
true
cell
.
mediaType
=
0
if
indexPath
.
row
==
0
{
if
indexPath
.
row
==
0
||
indexPath
.
row
==
3
{
cell
.
mediaType
=
1
cell
.
playImageView
.
isHidden
=
false
}
cell
.
model
=
model
?
.
otherModelArray
[
indexPath
.
row
]
return
cell
...
...
@@ -305,12 +309,18 @@ extension HomeView:WaterfallMutiSectionDelegate,UICollectionViewDataSource,UICol
}
func
collectionView
(
_
collectionView
:
UICollectionView
,
didSelectItemAt
indexPath
:
IndexPath
)
{
if
(
indexPath
.
section
==
0
)
{
let
smodel
=
model
?
.
titleModelArray
[
indexPath
.
row
]
titleCallBack
(
smodel
?
.
assets
??
[])
if
indexPath
.
row
==
0
{
titleCallBack
(
smodel
!
,
.
duplicates
)
}
else
{
titleCallBack
(
smodel
!
,
.
similar
)
}
}
else
{
let
smodel
=
model
?
.
otherModelArray
[
indexPath
.
row
]
otherItemCallBack
(
smodel
!
,
indexPath
.
row
)
}
}
}
PhoneManager/Class/Session/Home/View/Model/HomePhotosModel .swift
View file @
ca1f9038
This diff is collapsed.
Click to expand it.
PhoneManager/Class/Session/Home/View/Model/ImageSeletedCollectionItem.swift
View file @
ca1f9038
...
...
@@ -20,4 +20,5 @@ class HomeInfoTableItem {
var
type
:
PhotsFileType
?
var
smodels
:[
ImageSeletedCollectionItem
]?
var
titleText
:
String
?
}
PhoneManager/Class/Session/Home/View/VideoDetaiNavView.swift
0 → 100644
View file @
ca1f9038
//
// VideoDetaiNavView.swift
// PhoneManager
//
// Created by edy on 2025/4/9.
//
import
Foundation
class
VideoDetaiNavView
:
UIView
{
private
var
backButton
:
UIButton
!
private
var
selectButton
:
UIButton
!
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
setupUI
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
private
func
setupUI
()
{
backgroundColor
=
.
white
backButton
=
UIButton
()
backButton
.
setImage
(
UIImage
(
named
:
"nav_back"
),
for
:
.
normal
)
backButton
.
addTarget
(
self
,
action
:
#selector(
backBtnClick
)
,
for
:
.
touchUpInside
)
self
.
addSubview
(
backButton
)
backButton
.
snp
.
makeConstraints
{
make
in
make
.
centerY
.
equalTo
(
navCenterY
)
make
.
left
.
equalToSuperview
()
.
offset
(
marginLR
)
make
.
width
.
height
.
equalTo
(
iconWH
)
}
selectButton
=
UIButton
(
frame
:
CGRect
(
x
:
0
,
y
:
0
,
width
:
70
,
height
:
iconWH
))
selectButton
.
setTitle
(
"Select"
,
for
:
.
normal
)
selectButton
.
addTarget
(
self
,
action
:
#selector(
proBtnClick
)
,
for
:
.
touchUpInside
)
self
.
addSubview
(
selectButton
)
selectButton
.
snp
.
makeConstraints
{
make
in
make
.
centerY
.
equalTo
(
navCenterY
)
make
.
right
.
equalToSuperview
()
.
offset
(
-
15
)
make
.
width
.
equalTo
(
70
)
make
.
height
.
equalTo
(
iconWH
)
}
}
@objc
private
func
backBtnClick
()
{
self
.
responderViewController
()?
.
navigationController
?
.
popViewController
(
animated
:
true
)
}
@objc
private
func
proBtnClick
()
{
Print
(
"点击了选择按钮"
)
}
}
PhoneManager/Class/Session/Home/View/cell/HomeInfoTableViewCell.swift
View file @
ca1f9038
...
...
@@ -98,7 +98,7 @@ class HomeInfoTableViewCell:UITableViewCell {
backView
?
.
centerY
=
CGFloat
(
cH
/
2
)
backView
?
.
centerX
=
ScreenW
/
2
numberLabel
?
.
text
=
"
\(
model
.
smodels
?
.
count
??
0
)
"
+
"Duplicates
"
numberLabel
?
.
text
=
"
\(
model
.
smodels
?
.
count
??
0
)
\(
String
(
model
.
titleText
!
)
)
"
numberLabel
?
.
sizeToFit
()
numberLabel
?
.
x
=
(
backView
?
.
x
??
0
)
+
marginLR
numberLabel
?
.
y
=
(
backView
?
.
y
??
0
)
+
marginLR
...
...
@@ -192,6 +192,7 @@ extension HomeInfoTableViewCell:UICollectionViewDelegate,UICollectionViewDataSou
let
cell
=
collectionView
.
dequeueReusableCell
(
withReuseIdentifier
:
ImageSeletedCollectionCell
.
identifiers
,
for
:
indexPath
)
as!
ImageSeletedCollectionCell
cell
.
model
=
model
?
.
smodels
?[
indexPath
.
row
]
cell
.
photsFileType
=
model
?
.
type
cell
.
callBack
=
{[
weak
self
]
_
in
...
...
PhoneManager/Class/Session/Home/View/cell/HomeOtherCollectionCell.swift
View file @
ca1f9038
...
...
@@ -26,7 +26,7 @@ class HomeOtherCollectionCell: UICollectionViewCell {
let
iv
=
UIView
()
iv
.
clipsToBounds
=
true
iv
.
layer
.
cornerRadius
=
8
iv
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0
.51
,
blue
:
1
,
alpha
:
1
)
iv
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0
,
blue
:
0
,
alpha
:
0.2000
)
return
iv
}()
...
...
@@ -64,6 +64,14 @@ class HomeOtherCollectionCell: UICollectionViewCell {
return
label
}()
var
playImageView
:
UIImageView
=
{
let
iv
=
UIImageView
()
iv
.
contentMode
=
.
scaleAspectFill
iv
.
image
=
UIImage
(
named
:
"btn_play_home"
)
iv
.
backgroundColor
=
.
clear
return
iv
}()
// MARK: - Lifecycle
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
...
...
@@ -79,6 +87,7 @@ class HomeOtherCollectionCell: UICollectionViewCell {
backgroundColor
=
UIColor
.
colorWithHex
(
hexStr
:
"#F2F6FC"
)
self
.
contentView
.
addSubview
(
self
.
titleLabel
)
self
.
contentView
.
addSubview
(
self
.
imageView
)
self
.
contentView
.
addSubview
(
self
.
playImageView
)
self
.
imageView
.
addSubview
(
self
.
infoBackView
)
self
.
infoBackView
.
addSubview
(
self
.
countLabel
)
...
...
@@ -93,8 +102,31 @@ class HomeOtherCollectionCell: UICollectionViewCell {
didSet
{
guard
let
model
else
{
return
}
DispatchQueue
.
main
.
async
{
// 设置标题
self
.
titleLabel
.
text
=
model
.
folderName
// 获取数量
var
count
=
0
for
item
in
model
.
assets
{
count
=
count
+
item
.
count
}
// 设置数量文字
if
self
.
mediaType
==
0
{
self
.
countLabel
.
text
=
"
\(
count
)
Photos"
}
else
{
self
.
countLabel
.
text
=
"
\(
count
)
Videos"
}
// 设置文件大小文字
let
sizeKB
:
Double
=
model
.
allFileSize
/
1024
if
sizeKB
<
1024
{
self
.
sizeLabel
.
text
=
String
(
format
:
"(%.2lf) KB"
,
sizeKB
)
}
else
if
sizeKB
<
(
1024
*
1024
)
&&
sizeKB
>
1024
{
self
.
sizeLabel
.
text
=
String
(
format
:
"(%.2lf) MB"
,
sizeKB
/
1024
)
}
else
{
self
.
sizeLabel
.
text
=
String
(
format
:
"(%.2lf) GB"
,
sizeKB
/
(
1024
*
1024
))
}
}
titleLabel
.
text
=
model
.
folderName
guard
let
asset
=
model
.
assets
.
first
?
.
first
else
{
return
}
if
self
.
mediaType
==
0
{
...
...
@@ -158,19 +190,22 @@ class HomeOtherCollectionCell: UICollectionViewCell {
self
.
layer
.
masksToBounds
=
true
imageView
.
snp
.
makeConstraints
{
make
in
make
.
centerX
.
equalToSuperview
(
)
make
.
top
.
equalTo
(
self
.
titleLabel
.
snp
.
bottom
)
.
offset
(
8
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
16
)
make
.
left
.
equalToSuperview
()
.
offset
(
16
)
make
.
width
.
equalToSuperview
()
.
offset
(
-
32
)
make
.
height
.
equalTo
(
self
.
width
-
32
)
}
self
.
infoBackView
.
snp
.
makeConstraints
{
make
in
make
.
right
.
bottom
.
equalToSuperview
()
make
.
left
.
right
.
bottom
.
equalToSuperview
()
make
.
height
.
equalTo
(
40
)
make
.
width
.
equalTo
(
114
)
}
self
.
playImageView
.
snp
.
makeConstraints
{
make
in
make
.
width
.
height
.
equalTo
(
43
)
make
.
center
.
equalTo
(
self
.
imageView
.
snp
.
center
)
}
titleLabel
.
snp
.
makeConstraints
{
make
in
...
...
@@ -180,7 +215,7 @@ class HomeOtherCollectionCell: UICollectionViewCell {
self
.
countLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
12
)
make
.
top
.
equalToSuperview
()
.
offset
(
4
)
make
.
top
.
equalToSuperview
()
.
offset
(
3
)
make
.
width
.
equalTo
(
68
)
make
.
height
.
equalTo
(
20
)
}
...
...
PhoneManager/Class/Session/Home/View/cell/HomeTitleCollectionCell.swift
View file @
ca1f9038
...
...
@@ -40,6 +40,7 @@ class HomeTitleCollectionCell:UICollectionViewCell {
self
.
layer
.
cornerRadius
=
12
self
.
layer
.
masksToBounds
=
true
titleLabel
=
UILabel
()
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
16
,
weight
:
.
bold
)
titleLabel
?
.
textColor
=
UIColor
.
colorWithHex
(
hexStr
:
black3Color
)
...
...
@@ -64,7 +65,9 @@ class HomeTitleCollectionCell:UICollectionViewCell {
collectionView
?
.
dataSource
=
self
collectionView
?
.
delegate
=
self
collectionView
?
.
isUserInteractionEnabled
=
true
self
.
contentView
.
isUserInteractionEnabled
=
true
self
.
isUserInteractionEnabled
=
true
nextImage
=
UIImageView
(
image
:
UIImage
(
named
:
"icon_left_setting"
))
}
...
...
PhoneManager/Class/Session/Home/View/cell/HomeVideoDetailCell.swift
0 → 100644
View file @
ca1f9038
//
// HomeVideoDetailCell.swift
// PhoneManager
//
// Created by edy on 2025/4/9.
//
import
Foundation
import
Photos
class
HomeVideoDetailCell
:
UICollectionViewCell
{
var
currentMediaType
:
Int
=
0
var
choose
:
Bool
=
false
{
didSet
{
if
choose
{
self
.
selectImageView
.
image
=
UIImage
(
named
:
"ic_unsel_com"
)
}
else
{
self
.
selectImageView
.
image
=
UIImage
(
named
:
"ic_sel_com"
)
}
}
}
lazy
var
backImageView
:
UIImageView
=
{
let
view
=
UIImageView
()
view
.
isUserInteractionEnabled
=
true
view
.
contentMode
=
.
scaleAspectFill
view
.
clipsToBounds
=
true
view
.
layer
.
masksToBounds
=
true
view
.
layer
.
cornerRadius
=
12
return
view
}()
lazy
var
saveSizeView
:
UIView
=
{
let
view
=
UIView
()
view
.
layer
.
masksToBounds
=
true
view
.
layer
.
cornerRadius
=
4
view
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0.51
,
blue
:
1
,
alpha
:
1
)
return
view
}()
lazy
var
saveSizeLabel
:
UILabel
=
{
let
view
=
UILabel
()
view
.
textAlignment
=
.
left
view
.
textColor
=
UIColor
(
red
:
1
,
green
:
1
,
blue
:
1
,
alpha
:
1
)
view
.
font
=
UIFont
.
systemFont
(
ofSize
:
12
,
weight
:
.
regular
)
view
.
text
=
"Save 1.3MB"
return
view
}()
lazy
var
moreImageView
:
UIImageView
=
{
let
view
=
UIImageView
()
view
.
image
=
UIImage
(
named
:
"icon_left_setting_grey"
)
view
.
backgroundColor
=
.
clear
return
view
}()
lazy
var
selectImageView
:
UIImageView
=
{
let
view
=
UIImageView
()
view
.
image
=
UIImage
(
named
:
"ic_sel_com"
)
view
.
backgroundColor
=
.
clear
view
.
isUserInteractionEnabled
=
true
let
tap
=
UITapGestureRecognizer
()
tap
.
addTarget
(
self
,
action
:
#selector(
selectClick
)
)
view
.
addGestureRecognizer
(
tap
)
return
view
}()
@objc
func
selectClick
(){
self
.
choose
=
!
self
.
choose
}
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
self
.
isUserInteractionEnabled
=
true
let
tap
=
UITapGestureRecognizer
()
tap
.
addTarget
(
self
,
action
:
#selector(
imageClick
)
)
self
.
addGestureRecognizer
(
tap
)
self
.
addSubview
(
self
.
backImageView
)
self
.
addSubview
(
self
.
saveSizeView
)
self
.
saveSizeView
.
addSubview
(
self
.
saveSizeLabel
)
self
.
saveSizeView
.
addSubview
(
self
.
moreImageView
)
self
.
addSubview
(
self
.
selectImageView
)
self
.
backImageView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
height
.
width
.
equalToSuperview
()
}
self
.
saveSizeView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
12
)
make
.
bottom
.
equalToSuperview
()
.
offset
(
-
12
)
make
.
height
.
equalTo
(
25
)
make
.
width
.
equalTo
(
120
)
}
self
.
saveSizeLabel
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
offset
(
8
)
make
.
centerY
.
equalToSuperview
()
make
.
height
.
equalTo
(
25
)
make
.
width
.
equalTo
(
105
)
}
self
.
moreImageView
.
snp
.
makeConstraints
{
make
in
make
.
right
.
equalToSuperview
()
.
offset
(
-
4
)
make
.
centerY
.
equalToSuperview
()
make
.
height
.
width
.
equalTo
(
16
)
}
self
.
selectImageView
.
snp
.
makeConstraints
{
make
in
make
.
bottom
.
right
.
equalToSuperview
()
.
offset
(
-
12
)
make
.
height
.
width
.
equalTo
(
24
)
}
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
@objc
func
imageClick
(){
}
}
PhoneManager/Class/Session/Home/View/cell/ImageCollectionCell.swift
View file @
ca1f9038
...
...
@@ -57,7 +57,7 @@ class ImageCollectionCell:UICollectionViewCell {
backImageView
?
.
contentMode
=
.
scaleAspectFill
backImageView
?
.
clipsToBounds
=
true
backImageView
?
.
layer
.
masksToBounds
=
true
backImageView
?
.
isUserInteractionEnabled
=
true
self
.
backgroundColor
=
.
clear
}
...
...
PhoneManager/Class/Session/Home/View/cell/ImageSeletedCollectionCell.swift
View file @
ca1f9038
...
...
@@ -7,6 +7,7 @@
import
UIKit
import
SnapKit
import
Photos
class
ImageSeletedCollectionCell
:
UICollectionViewCell
{
...
...
@@ -29,6 +30,7 @@ class ImageSeletedCollectionCell:UICollectionViewCell {
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
var
photsFileType
:
PhotsFileType
?
var
model
:
ImageSeletedCollectionItem
!
{
...
...
@@ -55,29 +57,54 @@ class ImageSeletedCollectionCell:UICollectionViewCell {
}
else
{
DispatchQueue
.
global
()
.
async
{[
weak
self
]
in
guard
let
self
else
{
return
}
if
let
asset
=
PhotoAndVideoMananger
.
mananger
.
getPHAsssetwithID
(
ids
:
[
model
.
id
])
{
let
image
=
PhotoAndVideoMananger
.
mananger
.
getImageFromAsset
(
asset
:
asset
)
model
.
image
=
image
DispatchQueue
.
main
.
async
{[
weak
self
]
in
guard
let
self
else
{
return
}
// 如果是图片
if
self
.
photsFileType
==
.
SimilarVideos
{
// 定义请求选项来获取视频的第一帧
let
options
=
PHImageRequestOptions
()
// 获取当前版本的照片或视频
options
.
version
=
.
current
// 尽可能快地提供结果
options
.
deliveryMode
=
.
opportunistic
// 允许从iCloud请求
options
.
isNetworkAccessAllowed
=
true
// 异步请求
options
.
isSynchronous
=
false
// 从 PHAsset 获取 AVAsset
if
let
videoAsset
=
PhotoAndVideoMananger
.
mananger
.
getPHAsssetwithID
(
ids
:
[
model
.
id
]){
// 使用requestImageForAsset方法请求视频的第一帧图片
PHImageManager
.
default
()
.
requestImage
(
for
:
videoAsset
,
targetSize
:
CGSize
(
width
:
400
,
height
:
400
),
contentMode
:
PHImageContentMode
.
aspectFit
,
options
:
options
)
{
image
,
_
in
// 处理获取到的图片
if
let
thumbnailImage
=
image
{
// 使用获取到的图片,例如显示在UIImageView上
DispatchQueue
.
main
.
async
{
[
weak
self
]
in
guard
let
self
else
{
return
}
// 确保在主线程更新UI
self
.
model
.
image
=
thumbnailImage
self
.
backImageView
?
.
image
=
thumbnailImage
}
}
else
{
print
(
"无法获取图片"
)
}
}
}
}
else
{
if
let
asset
=
PhotoAndVideoMananger
.
mananger
.
getPHAsssetwithID
(
ids
:
[
model
.
id
]){
let
image
=
PhotoAndVideoMananger
.
mananger
.
getImageFromAsset
(
asset
:
asset
)
backImageView
?
.
image
=
image
model
.
image
=
image
DispatchQueue
.
main
.
async
{[
weak
self
]
in
guard
let
self
else
{
return
}
backImageView
?
.
image
=
image
}
}
}
}
}
}
}
...
...
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