Ios ZoomToRect后新CGRect的UIScrollview计算
我的问题是,在放大Ios ZoomToRect后新CGRect的UIScrollview计算,ios,objective-c,uiscrollview,zooming,Ios,Objective C,Uiscrollview,Zooming,我的问题是,在放大UIScrollview后,我无法获得准确的CGRect值。我正在使用UIScrollview的zoomToRect方法。缩放时,我正在设置contentOffset属性 代码如下: if(image != nil) { CGSize zoomViewSize = image.frame.size; CGSize scrollViewSize = self.bounds.size; if(zoomViewSize.widt
UIScrollview
后,我无法获得准确的CGRect
值。我正在使用UIScrollview
的zoomToRect
方法。缩放时,我正在设置contentOffset
属性
代码如下:
if(image != nil) {
CGSize zoomViewSize = image.frame.size;
CGSize scrollViewSize = self.bounds.size;
if(zoomViewSize.width < scrollViewSize.width) {
anOffset.x = -(scrollViewSize.width - zoomViewSize.width) / 2.0;
}
if(zoomViewSize.height < scrollViewSize.height) {
anOffset.y = -(scrollViewSize.height - zoomViewSize.height) / 2.0;
}
}
super.contentOffset = anOffset;
此代码在屏幕之间切换我的图像视图。这里一切都很好。我的问题是我必须只显示imageView
其余部分的缩放部分为黑色。为了计算缩放区域,我进行以下计算
CGSize imageSize = rect.size;
CGSize zoomedImageSize = CGSizeMake(imageSize.width * scroll.maximumZoomScale, imageSize.height *scroll.maximumZoomScale);
CGSize pageSize = scroll.bounds.size;
UIEdgeInsets inset = UIEdgeInsetsZero;
if (pageSize.width > zoomedImageSize.width) {
inset.left = (pageSize.width - zoomedImageSize.width) / 2;
inset.right = inset.left;
}
if (pageSize.height > zoomedImageSize.height) {
inset.top = (pageSize.height - zoomedImageSize.height) / 2;
inset.bottom = inset.top;
}
CGRect zoomRect = [scroll convertRect:rect fromView:image];
CGRect zoomRect1 = CGRectMake(inset.left, inset.top+50, zoomRect.size.width, zoomRect.size.height);
此zoomRect1
是图像的缩放区域。此值与我在屏幕上看到的不完全相同。有些地方我正在做计算错误,请帮我解决。但是我没有得到缩放图像区域的确切值
提前感谢使用此工作正常
- (void)handleDoubleTap:(UIGestureRecognizer *)recognizer
{
if(isAlreadyZoomed)
{
CGPoint Pointview = [recognizer locationInView:recognizer.view];
CGFloat newZoomscal = 3.0;
CGSize scrollViewSize = self.scrollContainer.bounds.size;
CGFloat width = scrollViewSize.width/newZoomscal;
CGFloat height = scrollViewSize.height /newZoomscal;
CGFloat xPos = Pointview.x-(width/2.0);
CGFloat yPos = Pointview.y-(height/2.0);
CGRect rectTozoom=CGRectMake(xPos, yPos, width, height);
[self.scrollContainer zoomToRect:rectTozoom animated:YES];
[self.scrollContainer setZoomScale:3.0 animated:YES];
isAlreadyZoomed = NO;
}
else
{
[self.scrollContainer setZoomScale:1.0 animated:YES];
isAlreadyZoomed = YES;
}
}
isAlreadyZoomed
是一个BOOL
值使用此工作正常
- (void)handleDoubleTap:(UIGestureRecognizer *)recognizer
{
if(isAlreadyZoomed)
{
CGPoint Pointview = [recognizer locationInView:recognizer.view];
CGFloat newZoomscal = 3.0;
CGSize scrollViewSize = self.scrollContainer.bounds.size;
CGFloat width = scrollViewSize.width/newZoomscal;
CGFloat height = scrollViewSize.height /newZoomscal;
CGFloat xPos = Pointview.x-(width/2.0);
CGFloat yPos = Pointview.y-(height/2.0);
CGRect rectTozoom=CGRectMake(xPos, yPos, width, height);
[self.scrollContainer zoomToRect:rectTozoom animated:YES];
[self.scrollContainer setZoomScale:3.0 animated:YES];
isAlreadyZoomed = NO;
}
else
{
[self.scrollContainer setZoomScale:1.0 animated:YES];
isAlreadyZoomed = YES;
}
}
isAlreadyZoomed
是一个BOOL
值参考我的答案。当用户双击图像@Gyanandrarefer my answer时,我正在设置缩放。当用户双击图像@Gyanndrathanks以获取答案时,我正在设置缩放。我的问题是我想在缩放后得到cgrect值。缩放后,我调用方法zoomtorect:rect。根据缩放比例,rect的原始值更改为某个值。我想在缩放后得到新cgrect的值。当我设置contentinset值以将图像移到屏幕中间时,我无法在缩放后获得cgrect值。请帮助我,你会在我的答案中得到新的缩放矩形,在那里你也可以写你的缩放。我已经静态地放置了3.0,但是将你的zoomscale放在CGFloat newZoomscal=yourzoomscale的行中;假设在调用[zoomtorect:rect animated:YES]时,CGRect rect=CGRectMake(20,20300300),此方法在缩放后不返回rect值。那么,我如何计算相对于原始矩形的缩放矩形呢?我还设置了contentInset,因此无法获得缩放矩形。为了获得zoomRect,我们将原始rect与scrollView zoomScale相乘,但我正在设置UIScrollView的contentInset属性,因此我无法获得原始rect的zoomRect感谢您的回答。我的问题是我想在缩放后得到cgrect值。缩放后,我调用方法zoomtorect:rect。根据缩放比例,rect的原始值更改为某个值。我想在缩放后得到新cgrect的值。当我设置contentinset值以将图像移到屏幕中间时,我无法在缩放后获得cgrect值。请帮助我,你会在我的答案中得到新的缩放矩形,在那里你也可以写你的缩放。我已经静态地放置了3.0,但是将你的zoomscale放在CGFloat newZoomscal=yourzoomscale的行中;假设在调用[zoomtorect:rect animated:YES]时,CGRect rect=CGRectMake(20,20300300),此方法在缩放后不返回rect值。那么,我如何计算相对于原始矩形的缩放矩形呢?我还设置了contentInset,因此无法获得缩放矩形。为了获取zoomRect,我们将原始rect与scrollView zoomScale相乘,但我正在设置UIScrollView的contentInset属性,因此无法获取与原始rect相关的zoomRect