@@ -10,37 +10,11 @@ import Foundation
10
10
import Photos
11
11
import TLPhotoPicker
12
12
13
- class CustomPhotoPickerViewController : TLPhotosPickerViewController , ViewerControllerDataSource {
13
+ class CustomPhotoPickerViewController : TLPhotosPickerViewController {
14
14
var dismissPhotoPicker : ( ( _ withTLPHAssets: [ TLPHAsset ] ) -> Void ) ?
15
15
16
16
var viewerController : ViewerController ?
17
17
18
- func numberOfItemsInViewerController( _: ViewerController ) -> Int {
19
- var count = 0
20
-
21
- for section in 0 ..< collectionView. numberOfSections {
22
- count += collectionView. numberOfItems ( inSection: section)
23
- }
24
-
25
- return count
26
- }
27
-
28
- func viewerController( _: ViewerController , viewableAt indexPath: IndexPath ) -> Viewable {
29
- let viewable = PreviewItem ( id: UUID ( ) . uuidString)
30
-
31
- if let cell = collectionView? . cellForItem ( at: indexPath) as? Cell , let placeholder = cell. imageView? . image, let asset = cell. asset {
32
- viewable. assetID = asset. localIdentifier
33
-
34
- if asset. duration > 0 {
35
- viewable. type = . video
36
- }
37
-
38
- viewable. placeholder = placeholder
39
- }
40
-
41
- return viewable
42
- }
43
-
44
18
override func viewDidLoad( ) {
45
19
super. viewDidLoad ( )
46
20
if config. isPreview {
@@ -69,11 +43,11 @@ class CustomPhotoPickerViewController: TLPhotosPickerViewController, ViewerContr
69
43
let footerView = PreviewFooterView ( )
70
44
footerView. viewDelegate = self
71
45
72
- self . viewerController? . delegate = self
73
-
74
46
self . viewerController!. footerView = footerView
75
47
}
76
48
49
+ self . viewerController? . delegate = self
50
+
77
51
self . present ( self . viewerController!, animated: true , completion: nil )
78
52
}
79
53
}
@@ -113,6 +87,34 @@ class CustomPhotoPickerViewController: TLPhotosPickerViewController, ViewerContr
113
87
}
114
88
}
115
89
90
+ extension CustomPhotoPickerViewController : ViewerControllerDataSource {
91
+ func numberOfItemsInViewerController( _: ViewerController ) -> Int {
92
+ var count = 0
93
+
94
+ for section in 0 ..< collectionView. numberOfSections {
95
+ count += collectionView. numberOfItems ( inSection: section)
96
+ }
97
+
98
+ return count
99
+ }
100
+
101
+ func viewerController( _: ViewerController , viewableAt indexPath: IndexPath ) -> Viewable {
102
+ let viewable = PreviewItem ( id: UUID ( ) . uuidString)
103
+
104
+ if let cell = collectionView? . cellForItem ( at: indexPath) as? Cell , let placeholder = cell. imageView? . image, let asset = cell. asset {
105
+ viewable. assetID = asset. localIdentifier
106
+
107
+ if asset. duration > 0 {
108
+ viewable. type = . video
109
+ }
110
+
111
+ viewable. placeholder = placeholder
112
+ }
113
+
114
+ return viewable
115
+ }
116
+ }
117
+
116
118
extension CustomPhotoPickerViewController : PreviewHeaderViewDelegate {
117
119
func headerView( _: PreviewHeaderView , didPressClearButton _: UIButton ) {
118
120
self . viewerController? . dismiss ( nil )
@@ -235,11 +237,22 @@ extension CustomPhotoPickerViewController: PreviewFooterViewDelegate {
235
237
236
238
extension CustomPhotoPickerViewController : ViewerControllerDelegate {
237
239
func viewerController( _ viewerController: ViewerController , didChangeFocusTo indexPath: IndexPath ) {
238
- guard let footerView = viewerController. footerView as? PreviewFooterView else { return }
240
+ if indexPath. row == 0 {
241
+ let cell = self . collectionView. cellForItem ( at: indexPath) as? TLPhotoCollectionViewCell
242
+
243
+ if cell? . isCameraCell == true {
244
+ viewerController. dismiss ( nil )
245
+ return
246
+ }
247
+ }
248
+
249
+ guard let footerView = viewerController. footerView as? PreviewFooterView
250
+ else { return }
239
251
240
252
guard let button = footerView. selectButton else { return }
241
253
242
- guard let cell = self . collectionView. cellForItem ( at: indexPath) as? TLPhotoCollectionViewCell , let localID = cell. asset? . localIdentifier else { return }
254
+ guard let cell = self . collectionView. cellForItem ( at: indexPath) as? TLPhotoCollectionViewCell , let localID = cell. asset? . localIdentifier
255
+ else { return }
243
256
244
257
guard let asset = TLPHAsset . asset ( with: localID) else { return }
245
258
0 commit comments