내 iPad 앱에서 확대/축소 UIScrollView를 사용하여 이미지를 표시하고 있습니다. 핀치로 인해 이미지가 더 작거나 클 수 있습니다. 나는 또한 bouncesZoom
을 사용하도록 설정하여 사용자가 너무 멀리까지 늘리면 최대 또는 최소 줌으로 되돌아 오도록 설정할 수 있습니다.UIScrollView 줌 바운스를 취소하려면 어떻게해야합니까?
이제 꼬집음이 최소 확대/축소 크기보다 10 % 작은 이미지로 끝나면 바운스가 일어나지 않도록 방지하고 이미지를 " 닫아. 이렇게하면 일종의 "집어 치우기"제스처가 생길 수 있습니다. 내가이 일을 함께 올 한 것은, 가장 간단한에, 이것이다 : 이것은 이미 튀는 것이 시점에서 제외하고, 잘 작동, 그래서
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
if (self.zoomBouncing && zoomedToScale/self.minimumZoomScale < 0.90) {
// We've let go and were under 90% of the minimum size.
self.minimumZoomScale = zoomedToScale;
[self shrinkImageToNothing];
} else {
// How far have we gone?
zoomedToScale = self.zoomScale;
}
}
minimumZoomScale
의 설정은 아무것도하지 않는다. 따라서 바운스와 수축이 동시에 발생합니다. 상상할 수 있듯이 이상하게 보입니다.
내 질문은 : 어떻게하면이 특정 상황에서만 바운스가 일어나지 않도록 할 수 있습니까? 제스처가 끝나고 UIScrollView가 다시 튀어 오르기로 결정할 때 사이에서 뭔가 할 수있는 UIScrollViewDelegate 메서드가 없습니다. 나는 포함, 행운과 다른 기술의 무리를 시도했다 : 내 90 % 줌 임계 값이 통과되면
- 는
–viewForZoomingInScrollView:
에서nil
반환. 줌의 모든 포인트가 아니라 제스처가 시작될 때이 메서드가 호출되기 때문에 작동하지 않습니다. - 확대/축소 비율이 90 % 미만인 경우
bouncesZoom
을-scrollViewDidZoom:
으로 설정하고 90 % 이상인 경우 true로 설정하십시오.bouncesZoom
이 거짓 일 때 크기를 허용하지 않기 때문에 90 % 이하로 내려 가면 이미지를 크게 왜곡합니다. -touchesEnded:withEvent
메서드를 추가하는 중입니다. 절대로 불리지 않는다.- 내 자신의 UIPinchGestureRecognizer를 추가하여 UIScrollView의 자체 핀치 인식기와 동시에 실행합니다. UIScrollView의 집어 넣기 동작 후에 핸들러 (및 대리자 메서드)가 으로 호출되기 때문에 작동하지 않습니다. 제스처가 그 사실을 알리기 전에 바운스하기로 결정합니다. 광산을 추가하고 핵심 제스처를 다시 추가하여 모든 핵심 제스처를 제거하려고했습니다. 하지만 내 몸짓은 이고, UIScrollView가 튀어 오르는 것을 결정한 후에도 여전히이 호출되었습니다.
저는 약간의 상실감이 있습니다. 다른 사람이 이렇게하려고했습니다.
shrinkImageToNothing은 무엇이고 cachedMinZoomScale은 설정되는 위치는 무엇입니까? – jjxtra