1

UIViewにscrollViewがあり、ScrollView.scrollviewとimageviewのimageViewのサイズが同じです。イメージビューのコンテンツモードを設定しましたが、UIViewContentModeScaleAspectFitです。私が画像ビューをダブルタップすると、画像ビューは画像ビューの可視画像だけを拡大するのではなく、画像の透明部分をズームする。どのように表示するには、画像をズームするだけですか?

私は、画像表示の拡大表示画像のみを必要とします。事前に

image_scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,screen_width,550)]; 
self.image_view = [[UIImageView alloc] initWithFrame:CGRectMake(0,0, image_scroll.frame.size.width, image_scroll.frame.size.height)]; 
self.image_view.backgroundColor=[UIColor clearColor]; 
self.image_view.contentMode = UIViewContentModeScaleAspectFit; 
self.image_view.clipsToBounds = true; 
self.image_view.userInteractionEnabled = YES; 
self.image_view.image=[UIImage imageNamed:@"img1.png"]; 
doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)]; 
[doubleTap setNumberOfTapsRequired:2]; 
[self.image_view addGestureRecognizer:doubleTap]; 
[image_scroll setMaximumZoomScale:4.0]; 
[image_scroll addSubview:self.image_view]; 


- (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer { 

     NSLog(@"handleDoubleTap"); 

     float newScale = [image_scroll zoomScale] * 2.0; 

     if (newScale > image_scroll.maximumZoomScale){ 
      newScale = image_scroll.minimumZoomScale; 
      CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]]; 

      [image_scroll zoomToRect:zoomRect animated:YES]; 

     } 
     else{ 

      newScale = imageScroll.maximumZoomScale; 
      CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]]; 

      [image_scroll zoomToRect:zoomRect animated:YES]; 
     } 
    } 
} 


- (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center { 

    CGRect zoomRect; 
    // the zoom rect is in the content view's coordinates. 
    // At a zoom scale of 1.0, it would be the size of the imageScrollView's bounds. 
    // As the zoom scale decreases, so more content is visible, the size of the rect grows. 
    zoomRect.size.height = [image_scroll frame].size.height/scale; 
    zoomRect.size.width = [image_scroll frame].size.width/scale; 

    // choose an origin so as to get the right center. 
    zoomRect.origin.x = center.x - (zoomRect.size.width/2.0); 
    zoomRect.origin.y = center.y - (zoomRect.size.height/2.0); 

    return zoomRect; 

} 

1.Original画像 enter image description here 2.After画像ズーム enter image description here enter image description here

感謝。

+0

この問題も発生しています。 –

答えて

0

のObjective-C

私はあなたが私のデモプロジェクトをチェックすべきだと思う: https://github.com/VivekVithlani/PinchZoom-Objective-c.git

私はそれが唯一のピンチズームをだ、ズームするダブルタップを実装していません。

問題が解決しました100%

関連する問題