2014-01-24 7 views
1

며칠 동안 이것을 알아 내려고 노력했습니다.UIScrollView 센터에서만 집기 및 확대/축소를 할 수 있습니까?

내가 UISCrollView에 포함 된 imageView가 있고 모든 것이 올바르게 구현되었다고 가정 해 보겠습니다.

현재 작동 방법 : 사용자가 이미지의 오른쪽 상단을 집거나 확대하면 오른쪽 상단 영역으로 확대/축소됩니다. Before After pinching in top right of screen

내가 원하는 방법 : 나는 이미지에 관계없이 사진의 위치를 ​​사용자 핀치에, 만에 UIView의 중심을 확대하고자합니다.

Before After pinching anywhere in the screen

내가 핀치 위치가 화면의 중앙에 항상 있도록 어떻게 든 핀치 제스처 인식기를 차단하고 수정하는 생각,하지만 가능하다면 확인되지 않았다

. 어떤 아이디어? 감사!

답변

4

확대/축소가 중앙에서만 발생하도록하려면 scrollViewDidZoom 대리자 메서드를 사용하십시오. 내가보기로

--CODE--

-(void)scrollViewDidZoom:(UIScrollView *)scrollView{ 

    CGFloat width = scrollView.contentSize.width/2; 
    width =width-width/scrollView.zoomScale; 

    CGFloat height = scrollView.contentSize.height/2; 
    height =height-height/scrollView.zoomScale; 

    scrollView.contentOffset = CGPointMake(width, height); 
} 
+0

멋진 코드! 추가해야 할 세부 사항이 조금 더 있습니다. 검은 사각형이 가운데에 위치하는 곳에서 줌을 중앙에 위치 시키길 원합니다. 따라서 오른쪽 위와 핀치로 팬하면 검정색 사각형의 새로운 중심이 오른쪽 상단에 있습니다. 사용자가 끼는 위치에 관계없이 그림을 오른쪽 상단으로 확대하여 새 중앙으로 표시하려고합니다. 또한, 나는 "contentInset"에 대해 설명 할 scrollView가 있습니다. – blee908

0

, 당신은 많은 옵션이 있습니다. 나는 가장 쉬운 것을 찾는다. (그것이 효과가 없다면 더 깊이 파고들 것이다.)

서브 클래스 UIScrollView을하고 layoutSubviews 메소드의 오버라이드 (override) 및 (스크린 샷으로 판단, 이미지의 중심 될 일) 스크롤 뷰의 중앙에 스크롤 뷰의 visibleRect을 설정하는 데 사용합니다. 그것은 그것을 유지할 것이므로 zoomLevel이므로 변경할 필요가 없습니다.

+0

답장을 보내 주셔서 감사합니다. layoutSubViews 메서드에서 scrollView에 대해 어떤 속성을 변경합니까? scrollView에 "visibleRect"속성이있는 것 같지 않습니까? 또한 추가해야 할 세부 사항이 조금 더 있습니다. 검은 사각형이 가운데에 위치하는 곳에서 줌을 중앙에 위치 시키길 원합니다. 따라서 오른쪽 위와 핀치로 팬하면 검정색 사각형의 새로운 중심이 오른쪽 상단에 있습니다. 사용자가 끼는 위치에 관계없이 그림을 오른쪽 상단으로 확대하여 새 중앙으로 표시하려고합니다. – blee908

관련 문제