2012-04-24 16 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このコードは完璧に動作しています。ありがとうございました。しかし、助けてくれますか?これは、スクロールビューがズームされているときは機能しません。ここでズーム倍率を適用してもらえますか? –

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]; 
関連する問題