У меня есть scrollView в UIView, а изображениеView в ScrollView.scrollview и 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 изображение 2.После масштаб изображения
Спасибо заранее.
Я также получаю эту проблему. –