我有以下层次结构: 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/