画像を背景にした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が開始された場所の中央にも配置されません。
どうすればこの問題を解決できますか?
ありがとうございました