我有一个UICollectionView
四个自定义单元格。单元格的委托是我的主视图,它包含collectionView并扩展了一个自定义单元格委托。每个单元格包含一个UIScrollView
,后者又包含并显示一个UIImageView
。现在,我可以捏和doubleTap放大和缩小,并在单元格的scrollViews内移动图像。同时滚动和捏合多个UiScrollViews
我在我的应用程序中有一个“锁定视图”按钮,它应该将视图锁定在一起,这样如果我在一个单元格中捏住(缩放或移动),应该将这个更改“复制”到其他单元格中。单元格中10%的缩放增加会引发所有其他单元格中的10%缩放增加(独立于每个单元格电流zoomScale
)。同样,一个单元向左移动10个单位应该将其他单元向左移动10个单位。
我使用scrollViewDidScroll(_ scrollView: UIScrollView)
方法来检测我的scrollViews的变化,并叫我代表这反过来又可以访问我的其他细胞在我的主UICollectionView
我的第一个问题是,当我用UIScrollView.zoom(to : rect)
或UIScrollView.zoomScale
它将再次触发其他细胞从而创造无限循环的一些王scrollViewDidScroll(_ scrollView: UIScrollView)
,但我设法通过使用来修复:
var isZooming = false
func scrollViewCustomZoom(to rect: CGRect, animated : Bool) {
isZooming = true
scrollView.zoom(to: rect, animated: animated)
isZooming = false
}
和:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if isZooming { return }
// do stuff, typically call the delegate
}
但现在我的问题是:我需要在我的scrollViewDidScroll
方法中计算什么,以及我需要在委托中的每个单元格中设置什么,才能获得我要查找的行为?
我已经试过玩scrollView.bounds
,scrollView.origin
或scrollView.size
,但无法获得比例因子的正确表现。
任何帮助将是最受欢迎和赞赏。