     
     deinit {
         logd("Released \(type(of: self))")
+    }
+    
+    public func scrollViewDidScroll(_ scrollView: UIScrollView) {
+        updateCachedAssets()
     }
 }
 

    
    open func deselectAll() {
        var indexPaths = [IndexPath]()
        for selectedAsset in selectedArray {
            if let row = AssetsManager.shared.assetArray.firstIndex(of: selectedAsset) {
                let indexPath = IndexPath(row: row, section: 0)
                deselectCell(at: indexPath)
                delegate?.assetsPicker?(controller: picker, didDeselect: selectedAsset, at: indexPath)
                indexPaths.append(indexPath)
            }
        }
        updateSelectionCount()
        updateNavigationStatus()

        super.viewDidLayoutSubviews()
        if !didSetInitialPosition {
            if pickerConfig.assetsIsScrollToBottom {
                guard let fetchResult = AssetsManager.shared.fetchResult else { return }
                let count = fetchResult.count
                if count > 0 {
                    if self.collectionView.collectionViewLayout.collectionViewContentSize.height > 0 {
                        let lastRow = self.collectionView.numberOfItems(inSection: 0) - 1
