2012-04-24 5 views
0

레이블이있는 UIScrollView가 있습니다. 나는 터치 이벤트 좌표를 얻고있다. 사용자가 화면을 클릭 할 때 변수 좌표에 클릭 좌표를 저장하면 클릭 한 지점의 y 좌표가 내보기의 중심이 될 수 있도록 ([myScrollView setContentOffset]와 같은 것을 사용하여)보기를 스크롤하고 싶습니다. 그래서 어떤 텍스트를 클릭하면 화면 중앙으로 자동 스크롤됩니다. 나는 이것의 수학을 운동하는 방법을 잘 모르겠습니다 ...스크롤이 UIScrollView의 화면 가운데로 클릭

어떤 도움을 주실 수 있습니까?

답변

3
UIScrollView *aScrollView;  
CGPoint touchPoint; 
[aScrollView scrollRectToVisible:CGRectMake(touchPoint.x - roundf(aScrollView.frame.size.width/2.), 
                touchPoint.y - roundf(aScrollView.frame.size.height/2.), 
                aScrollView.frame.size.width, 
                aScrollView.frame.size.height) 
                animated:YES]; 

작동해야합니다.

+0

감사 카이, 그것은 작동합니다. 그래도 여전히 문제가 있습니다 - 처음에는 텍스트를 클릭하면 중심으로 스크롤됩니다. 이것은 내가 원하는 것입니다. 그러나 다시 클릭하면 (화면 중앙에있는 동안) 이전 위치로 다시 스크롤됩니다 ... – izaslavs

+0

이상하게 들립니다. 어쩌면 당신은 올바른 방식으로 터치 포인트를 잡고/저장하지 않을 것입니다. 일부 코드 게시 (다른 질문에서). –

+0

@KaiHuppmann이 코드는 완벽하게 작동합니다. 고맙습니다. 그러나 당신은 저를 도울 수 있습니까? scrollview가 확대/축소되면 작동하지 않습니다. 여기에 줌 비율을 적용 할 수 있습니까? –

0

내 솔루션은 비슷하지만 규모를 사용하고 있으며 터치 포인트가 아닌보기 중심에 배치하고 싶습니다. 그래서 먼저 중심점을 계산해야합니다.

내 마지막 코드 :

UIView *view; //View to center 
UIScrollView *scrollView; //scroll view 

CGPoint point = CGPointMake(view.frame.origin.x + view.frame.size.width/2, 
          view.frame.origin.y + view.frame.size.height/2); 

CGRect rectToZoom = CGRectMake(point.x * scrollView.zoomScale - roundf(scrollView.frame.size.width /2.), 
           point.y * scrollView.zoomScale - roundf(scrollView.frame.size.height /2.), 
           scrollView.frame.size.width, 
           scrollView.frame.size.height); 

[scrollView scrollRectToVisible:rectToZoom animated:YES]; 
관련 문제