longitachi / ZLPhotoBrowser

Wechat-like image picker. Support select photos, videos, gif and livePhoto. Support edit image and crop video. 微信样式的图片选择器,支持预览/相册内拍照及录视频、拖拽/滑动选择,编辑图片/视频,支持多语言国际化等功能;
MIT License
4.72k stars 953 forks source link

照片权限:选中的照片,当新增照片/视频的时候,数据源未刷新,展示异常,点击预览崩溃; #769

Closed KALIANS closed 1 year ago

KALIANS commented 1 year ago

如标题: 照片权限:选中的照片,当新增照片/视频的时候,数据源未刷新,展示异常,点击预览崩溃;

目前通过回调延迟解决 : extension ZLThumbnailViewController: PHPhotoLibraryChangeObserver {

func photoLibraryDidChange(_ changeInstance: PHChange) {
    guard let changes = changeInstance.changeDetails(for: albumList.result) else {
        return
    }

    ZLMainAsync(after: 0.5) {
        guard let nav = self.navigationController as? ZLImageNavController else {
            zlLoggerInDebug("Navigation controller is null")
            return
        }
        // 变化后再次显示相册列表需要刷新
        self.hasTakeANewAsset = true
        self.albumList.result = changes.fetchResultAfterChanges
        if changes.hasIncrementalChanges {
            for sm in nav.arrSelectedModels {
                let isDelete = changeInstance.changeDetails(for: sm.asset)?.objectWasDeleted ?? false
                if isDelete {
                    nav.arrSelectedModels.removeAll { $0 == sm }
                }
            }
            if !changes.removedObjects.isEmpty || !changes.insertedObjects.isEmpty {
                self.albumList.models.removeAll()
            }

            self.loadPhotos()
        } else {
            for sm in nav.arrSelectedModels {
                let isDelete = changeInstance.changeDetails(for: sm.asset)?.objectWasDeleted ?? false
                if isDelete {
                    nav.arrSelectedModels.removeAll { $0 == sm }
                }
            }
            self.albumList.models.removeAll()
            self.loadPhotos()
        }
        self.resetBottomToolBtnStatus()
    }
}

}


讨厌修改源码方式,建议修复~