PinthToZoom и Pan of UIView с несколькими изображениями - PullRequest
3 голосов
/ 26 января 2012

Я разрабатываю приложение для 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.

Как я могурешить эту проблему?

Спасибо

...