UIScrollView仅在中心处捏合和缩放?

时间:2014-01-24 21:13:20

标签: ios uiview uiscrollview uigesturerecognizer

几天来一直试图解决这个问题。

假设我在UISCrollView中嵌入了一个imageView,一切都正确实现。

目前的功能如何:当用户捏住并放大图片的右上角时,它会向右上方区域缩放。 Before After pinching in top right of screen

我希望如何:我希望图片只在UIView的中心缩放,无论用户在照片上的位置如何。

Before After pinching anywhere in the screen

我在考虑以某种方式拦截捏手势识别器并对其进行修改,以使捏位置始终位于屏幕的中心,但不确定是否可能。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:5)

如果您希望缩放仅在中心发生,请使用 scrollViewDidZoom 委托方法。

<强> - CODE -

-(void)scrollViewDidZoom:(UIScrollView *)scrollView{

    CGFloat width = scrollView.contentSize.width/2;
    width =width-width/scrollView.zoomScale;

    CGFloat height = scrollView.contentSize.height/2;
    height =height-height/scrollView.zoomScale;

    scrollView.contentOffset = CGPointMake(width, height);
}

答案 1 :(得分:0)

在我看来,你有很多选择。我将陈述一个我觉得最容易的东西(如果它不起作用,将深入研究)。

UIScrollView进行子类化并覆盖它的layoutSubviews方法,并使用它将滚动视图的visibleRect设置为滚动视图的中心(恰好是其中心)图片,通过截图判断)。它将保持zoomLevel,因此您无需更改它。