2015-02-25 5 views
1

У меня есть uiscrollview и добавлено изображение. Когда я щелкаю в режиме прокрутки, я могу увеличить масштаб, но просмотр прокрутки автоматически немного прокручивается. Так что я не могу увеличить нижнюю часть uiimageview.UIScrollView автоматически прокручивается во время пинча?

UIScrollView *scroll = [[UIScrollView alloc]init]; 
    scroll.minimumZoomScale = 1.0f; 
    scroll.maximumZoomScale = 16.0f; 
    scroll.delegate = self; 

[scroll setContentSize:CGSizeMake(scroll.frame.size.width, scroll.frame.size.height+2200)]; 
scroll.frame = self.view.frame; 
[scroll setBackgroundColor:[UIColor brownColor]]; 
[self.view addSubview:scroll]; 


UIImageView *img = [[UIImageView alloc]init]; 
[img setBackgroundColor:[UIColor yellowColor]]; 
[img setImage:[UIImage imageNamed:@"add_button.jpg"]]; 
[img setFrame:CGRectMake(0, 100, self.view.frame.size.width, 200)]; 
[img setContentMode:UIViewContentModeScaleAspectFit]; 
[scroll addSubview:img]; 



- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    return [[scrollView subviews] firstObject]; 
} 

ответ

0

Я буду считать, что вы используете UIPinchGestureRecognizer для Вашего мероприятия пинча ...

То, что вы хотите сделать, это добавить эти «если» заявление в начале и в конце вашего метод:

- (void)handlePinch:(UIPinchGestureRecognizer *)sender 
{ 
    if (sender.state == UIGestureRecognizerStateBegan) 
     self.scrollView.enabled = NO; 

    // pinch handling here 

    if ((sender.state == UIGestureRecognizerStateEnded) || (sender.state == UIGestureRecognizerStateCancelled)) 
     self.scrollView.enabled = YES; 
} 

Надеюсь, это поможет.

+1

Я использую UIScrollView, который получил его по умолчанию Pinch жест действия. - (UIView *) viewForZoomingInScrollView: (UIScrollView *) scrollView { return [[scrollView subviews] firstObject]; } –

+0

Из того, что вы описываете в OP, я думаю, вы хотите применить UIPinchGestureRecognizer к UIImageView, а не к UIScrollView. –

+1

@ Tim Kokesh UiscrollView по умолчанию получил UIPinchGestureRecognizer. Поэтому я предпочел использовать его. И также как я могу обрезать основное изображение, которое появляется в Crop Rect. –

0

Вот мой код, это может быть полезным

- (void) pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer 
    { 
     UIView *view = self.showImgView; 
     if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) { 
      view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale); 
      pinchGestureRecognizer.scale = 1; 
     } 
     else if (pinchGestureRecognizer.state == UIGestureRecognizerStateEnded) { 
      CGRect newFrame = self.showImgView.frame; 
      newFrame = [self handleScaleOverflow:newFrame]; 
      newFrame = [self handleBorderOverflow:newFrame]; 
      [UIView animateWithDuration:BOUNDCE_DURATION animations:^{ 
       self.showImgView.frame = newFrame; 
       self.latestFrame = newFrame; 
      }]; 
     } 
    } 
Смежные вопросы