2017-12-12 30 views
1

私はUIScrollViewのサイズが大きいUIImageViewを非常に高い解像度(約10,000 x 10,000)で表示しています。このUIImageViewでは、ズームとスクロールの両方が有効になっています。私はまた、より小さな解像度(約100×100)で同じ画像を持つ小さいUIImageViewを持っています。私はより大きなUIImageViewの目に見える部分を小さい方のUIImageViewに示しています。ユーザーは、小さい方のパンでUIImageViewの大きい場所の他の場所に移動できます。UIImageView次の画像は、私が説明しようとしていることを示しています。私の問題は、より小さなUIImageViewでパンニングしながら、大きなUIScrollViewでのスクロールは本当に遅いです。それは簡単なフィードバックを遅くすることができますので、 enter image description here別のビューでスクロールするとUIScrollViewがスクロールする速度が速くなります

// function that handles the pan on green view 
func handlePanNavigation(gestureRecognizer: UIPanGestureRecognizer) { 

    if gestureRecognizer.state == .began || gestureRecognizer.state == .changed { 
     let translation = gestureRecognizer.translation(in: navigationPanel) 
     guard let gv = gestureRecognizer.view else { return } 
     let point = CGPoint(x: gv.center.x + translation.x, y: gv.center.y + translation.y) 
     gestureRecognizer.view?.center = point 
     gestureRecognizer.setTranslation(.zero, in: navigationPanelView) 

     let transform = CGAffineTransform(scaleX: orgSize.width*tiledScrollView.zoomScale/navSize.width, y: orgSize.height*tiledScrollView.zoomScale/navSize.height) 
     let offset = navigationPanelView.frame.origin.applying(transform) 
     tiledScrollView.setContentOffset(offset, animated: true) 
    } 
} 

答えて

1

あなたは、ユーザーの入力のリアルタイムの変換を適用しながら、オフセット内容の変更をアニメーションべきではありません。

変更

tiledScrollView.setContentOffset(offset, animated: true) 

tiledScrollView.setContentOffset(offset, animated: false) 
0

に私はあなたがこれを実現する方法を完全かどうか分からないが、あなたがスローダウンしたり、スピードアップパンジェスチャーの翻訳をしたい場合は、追加します乗数。

switch gesture.state { 

    case .began: 
     gesture.setTranslation(CGPoint.zero, in: gesture.view) 

    case .changed: 

     gesture.setTranslation(CGPoint.zero, in: gesture.view) 

     if someView.frame.origin.y < someThreshold { 
      someView.center = CGPoint(x: someView.center.x, y: someView.center.y + (translation.y * 0.25)) 
     } 

    ... 

ここで、someThresholdを超えるすべてのパンは、4倍遅くなります。あなたの場合、明らかに、1より大きい乗数を追加してください。

+0

これを試しましたが、これは望ましい結果をもたらしません。問題は、パンのジェスチャーを入力している間は、大きな視野では視認可能な領域が所望の領域に変わらないということです。 –

関連する問題