UIScrollView缩放到rect

时间:2013-04-24 03:04:29

标签: ios objective-c uiscrollview

我正在尝试通过指定在scrollview坐标内的rect来缩放UIScrollView。然而,它没有按预期工作。而且我认为这是因为缩放比例或者我错过了转换。我正在尝试缩放的滚动视图来自Apple的示例PhotoScroller - ImageScrollView。我还复制了代码以生成一个框架来缩放Apple的例子:

- (CGRect)zoomRectForScrollView:(UIScrollView *)scrollView withScale:(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 = scrollView.frame.size.height / scale;
    zoomRect.size.width  = scrollView.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;
}

现在实际缩放的代码如下:

CGPoint scrollRectCenter = CGPointMake(rect.origin.x + (rect.size.width /2) ,
                                       rect.origin.y + (rect.size.height / 2));
CGFloat newZoomScale = self.imageScrollView.zoomScale * 1.3f;
newZoomScale = MIN(newZoomScale, self.imageScrollView.maximumZoomScale);
CGRect zoomToRect = [self zoomRectForScrollView:self.imageScrollView withScale:newZoomScale withCenter:scrollRectCenter];
[self.imageScrollView zoomToRect:zoomToRect animated:YES];

如何在考虑缩放的imageView缩放比例的情况下缩放到矩形,以使其正确合适?

我想要实现的是照片应用程序的效果,其中移动裁剪网格并且滚动视图缩放到该矩形。

是否有人知道链接或代码示例以实现与照片应用程序类似的效果?非常感谢。

1 个答案:

答案 0 :(得分:0)

让我猜一下......你已经实现了- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale委托方法。

出现问题是因为调用此方法时,scrollview的缩放比例重置为1.我不知道为什么,不要问我。

您可以通过两种方式修复它:

  1. 您将比例保存到变量中,并在- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale中将变量设置为适当的比例,并使用您的比例进行计算。
  2. 你没有实现血腥方法,除非你的滚动视图中有多个视图,每个视图都可以单独缩放它不值得(毕竟你可以使用scrollview.zoomScale访问缩放比例)
  3. 如果你没有实施这个方法,请忽略这个答案:)