2017-12-12 16 views
1

UIScrollView에 대용량 이미지가있는 UIImageView이 매우 높습니다 (약 10,000 x 10,000). 이 UIImageView에서는 확대/축소 및 스크롤이 모두 사용 가능합니다. 또한 더 작은 해상도 (약 100 x 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

시도했지만 원하는 결과를주지 않습니다. 문제는 팬 동작을 입력하는 동안 큰보기에서는보기 가능한 영역을 원하는 영역으로 전환하지 않는다는 것입니다. –