ios - Swift/IOS 重置 CollectionViewCell 中的 ImageView 缩放

标签 ios swift uiscrollview uicollectionview uicollectionviewcell

我有以下层次结构: UIViewController -> UICollectionView -> UICollectionViewCell -> UIScrollView -> UIImageView -> UIImage

有了这个层次结构,我就可以拥有良好的缩放功能。但是当我完成放大并滑入下一个图像时,我需要将前一个 ImageView 重置为其原始比例。

我的尝试: 我将集合中的当前索引存储到

self.currendIndex

然后尝试获取 Collection View 单元格并在 View Controller 内的scrollViewWillBeginDecelerating事件中设置其 ScrollView 缩放

    func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
        let indexPath = IndexPath(item: self.currendIndex, section: 0)
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! ImageCollectionViewCell
        DispatchQueue.main.async {
            cell.scrollView.zoomScale = 1
            cell.scrollView.contentOffset = CGPoint(x: 0, y: 0)
        }
    }

但它不会缩小它,它只是转到下一个元素,然后当我回来时它仍然具有缩放级别。

如何解决?

最佳答案

我通过使用 reloadItems 方法解决了这个问题:

func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
    let indexPath = IndexPath(item: self.currendIndex, section: 0)

    DispatchQueue.main.async(execute: {() -> Void in
        self.collectionView.reloadItems(at: [indexPath])
    })
}

它必须在异步内部

关于ios - Swift/IOS 重置 CollectionViewCell 中的 ImageView 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49742205/

相关文章:

swift - 函数和下标之间有什么区别,特别是在下面的代码中?

objective-c - 获取一个 ScrollView 矩形的所有可见 subview ?

ios - iOS:将Admob广告添加到应用中导致错误

ios - 如何将标签从一个 UITableView 添加到另一个 UITableView

ios - UISearchController:昏暗的覆盖层覆盖了搜索栏本身

ios - 无论我尝试什么,UIScrollView 都不会滚动

ios - 如何滚动我的 UIViewController 内容?

ios - 无法启动模拟器。(Xcode 版本 7.2 (7C68))

IOS:在自定义 View Controller 和 View Controller 之间传回数据

ios - Swift - 我如何将常规 XML 文件转换为 .plist XML 文件