3

画像を背景にしたUIViewと画像を背景にした複数のボタンを備えたiPhoneアプリケーションを開発しています。画像は国の画像であり、ボタンはその国の地域/州です。

問題は、画面が小さすぎてこのすべてのデータを表示できないことです。そのため、UIViewのピンチツーズームを有効にして、ユーザーが国をよりよく表示できるようにします。

UIViewControllerの「viewDiDLoad」内に次を追加しました。

UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] 
                                             initWithTarget:self 
                                             action:@selector(twoFingerPinch:)] 
                                            autorelease];

[[self view] addGestureRecognizer:twoFingerPinch];

そして、twoFingerPinchメソッドを追加しました。

- (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer {
   if (recognizer.scale > minValue){
      CGAffineTransform transform = CGAffineTransformMakeScale(recognizer.scale, recognizer.scale);
      self.view.transform = transform;
   }
}

正しく機能します。問題は、UIViewが大きくなりますが、ユーザーが内部をナビゲートできないことです。

そこで、UIViewをUIScrollViewに切り替え、「twoFingerPinch」メソッド内に次のように追加しました。

if (recognizer.state == UIGestureRecognizerStateEnded){

    float scaleForView = mLastScale;

    UIScrollView *tempScrollView=(UIScrollView *)self.view;

    int newWidth = self.view.frame.size.width * scaleForView;
    int newHeight = self.view.frame.size.height * scaleForView;

    tempScrollView.contentSize=CGSizeMake(newWidth,newHeight);

    mLastScale = 1.0;
}

ただし、うまく機能しません。UISrollViewははるかに大きくなりますが、画像が拡大縮小されるにつれて大きくはならず、pinchToZoomが開始された場所の中央にも配置されません。

どうすればこの問題を解決できますか?

ありがとうございました

4

0 に答える 0