Я разрабатываю приложение для iphone с UIView, в котором изображение является фоновым, а несколько кнопок - изображением в качестве фона.Изображение - это изображение страны, а кнопки - это регионы / штаты этой страны.
Проблема в том, что на экране слишком мало места для отображения всех этих данных, поэтому я хочу включить пинч-до-разум UIView, который позволяет пользователю иметь лучшее представление о стране.
Внутри 'viewDiDLoad' моего UIViewController я добавил:
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 Iдобавлено:
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.
Как я могурешить эту проблему?
Спасибо