From e46743321d205a8f2d31fe9438523344972dc990 Mon Sep 17 00:00:00 2001 From: bluesea <307723040@qq.com> Date: Mon, 25 Mar 2024 16:55:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E7=9B=B8=E5=86=8C=E5=88=86?= =?UTF-8?q?=E6=89=B9=E5=8A=A0=E8=BD=BD=EF=BC=9A=E6=AF=8F=E6=AC=A136?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CCSpaceAlbumFilterPopView2.swift | 44 ++++++++++++++++--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFilterPopView2.swift b/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFilterPopView2.swift index ef1d01b..8b64ab4 100644 --- a/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFilterPopView2.swift +++ b/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFilterPopView2.swift @@ -133,15 +133,14 @@ class CCSpaceAlbumFilterPopView2: UIView { var selectedVideoHandler: ((URL,PHAsset) -> Void)? var selectedFileType:SelectedFileType = .all { didSet{ - filterOffset = 0 reloadData() } } var dataSource:[CCSpaceAlbumFliterModel] = [] - var filterOffset = 0//筛选内容的当前下标 - let filterLimit = 80//一次性获取的内容数量 - + let filterLimit = 36//一次性获取的内容数量 + var isLoadingMoreData = false//标识是否正在加载更多的数据 + var shouldLoadDataCount = 0//标识本次总的加载数据是多少条 lazy var backView: UIView = { let imageView = UIView(frame: CGRectMake(0, KScreenHeight + 10 , KScreenWidth, Back_Height)) @@ -333,11 +332,13 @@ class CCSpaceAlbumFilterPopView2: UIView { func reloadData(){ print("重新装载数据。。。") self.dataSource.removeAll() - loadMoreData(offset: filterOffset) + self.listCollectView.reloadData() + loadMoreData(offset: 0) } func loadMoreData(offset:Int) { - + print("loadMoreData。。。") + isLoadingMoreData = true let fetchResult_collection = PHAssetCollection.fetchAssetCollections(with: PHAssetCollectionType.smartAlbum, subtype: PHAssetCollectionSubtype.any, options: nil); //筛选空间相册 var spatialAC:PHAssetCollection? @@ -361,9 +362,11 @@ class CCSpaceAlbumFilterPopView2: UIView { } let fetchResult_asset = PHAsset.fetchAssets(in: sac, options: fetchOptions) guard offset < fetchResult_asset.count else {//确保筛选有数据 + self.isLoadingMoreData = false return } + shouldLoadDataCount = min(fetchResult_asset.count - offset, filterLimit) var count = 0 for i in offset ..< fetchResult_asset.count { let asset = fetchResult_asset.object(at: i) @@ -374,6 +377,9 @@ class CCSpaceAlbumFilterPopView2: UIView { } } } + else { + isLoadingMoreData = false + } self.listCollectView.reloadData() } @@ -384,7 +390,6 @@ class CCSpaceAlbumFilterPopView2: UIView { let requestOptions = PHImageRequestOptions() requestOptions.isSynchronous = false//设置成同步回调 requestOptions.deliveryMode = .highQualityFormat - print("asset mediatype:\(asset.mediaType)") PHImageManager.default().requestImageDataAndOrientation(for: asset, options: requestOptions) {[weak self] data, dataUTI, imagePropertyOrientation, info in if let hasData = data { let photoImage:UIImage = UIImage(data: hasData)! @@ -392,6 +397,11 @@ class CCSpaceAlbumFilterPopView2: UIView { let model = CCSpaceAlbumFliterModel.initWithAssetType(assetType: AssetType.init(rawValue: asset.mediaType.rawValue-1)!, asset: asset,image:photoImage, localIdentifier: asset.localIdentifier) self?.dataSource.append(model) self?.listReloadData() + self?.shouldLoadDataCount = (self?.shouldLoadDataCount ?? 0) - 1 + if (self?.shouldLoadDataCount ?? 0) <= 0 { + self?.isLoadingMoreData = false + } + } } @@ -408,6 +418,26 @@ extension CCSpaceAlbumFilterPopView2:UICollectionViewDataSource, UICollectionVie func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return self.dataSource.count } + + + func scrollViewDidScroll(_ scrollView: UIScrollView) { + let contentOffset = scrollView.contentOffset + let contentSize = scrollView.contentSize + let frameSize = scrollView.frame.size + + // 判断是否滑动到底部 + if contentOffset.y + frameSize.height >= contentSize.height { + // 此时 collectionView 即将滑动到底部 + guard self.isLoadingMoreData == false else { + print("正在加载中,等加载完毕在装载更多。。。。") + return + } + self.loadMoreData(offset: self.dataSource.count) + } + } + + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: AlbumIdentifierCell, for: indexPath) as! CCSpaceAlbumFliterCollectionCell