私はUICollectionView
に4つのカスタムセルを持っています。セルのデリゲートは、collectionViewを含み、カスタムセルデリゲートを拡張するメインビューです。各セルには、UIScrollView
が含まれ、順番にUIImageView
が表示されます。今のところ私はピンチとダブルタップでズームイン/ズームアウトし、セルのスクロールビュー内で画像を移動できます。同時に複数のUiScrollViewsをスクロールして挟み込む
私はビューを一緒にロックする必要があるので、私はピンチ(ズームまたは移動)セル内で、その変更は他のセルで "コピー"する必要がありますように、 "ロックビュー"ボタンがあります。セル内で10%のズームが増加すると、他のすべてのセルで10%のズームが増加します(各セルのセルに独立してzoomScale
)。同様に、1つのセルの左側への10単位の移動は、他のセルの左側への10単位の移動を必要とする。
私はUIScrollView.zoom(to : rect)
かUIScrollView.zoomScale
それを使用したときに私の最初の問題があることだった私のメインUICollectionView
に今度は私の他のセルへのアクセスを持っている私のscrollViewsの変化を検出して、私のデリゲートを呼び出すためにscrollViewDidScroll(_ scrollView: UIScrollView)
メソッドを使用していますしたがって、無限ループのいくつかの王を作成し、再び他の細胞内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
を再生しようとしましたが、スケーリングファクタが正しく動作することができませんでした。
ご協力いただければ幸いです。