限制uiscrollview滚动区域

时间:2011-10-26 08:11:56

标签: iphone uiscrollview zoom

我有一个包含多个部分的图像。我将尝试用下图解释:

--|----------|---------|---
  |   1      |   2     |
  |          |         |
--|----------|---------|---
  |   3      |   4     |
  |          |         |
--|----------|---------|---

在上图中,1,2,3和4是大图像的部分。我在UIScrollView中使用UIImageView。我一次向用户显示一个部分。因此看起来这些部分是单独的图像。如果我正在显示第3部分,我隐藏了图像的所有部分,但是第3部分并更改了图像坐标,使得第3部分出现在屏幕中间。直到现在,一切都运转良好。现在我需要在部分上实现缩放。缩放一个部分后,用户将只能在该部分内滚动,并且不允许他们在缩放部分之外滚动。我无法实现这个东西,好像我设置了uiscrollview的contentoffset和contentsize属性,它将图像从屏幕上移除。

有人可以建议我如何实现这个吗?

下面是我用来定位滚动视图的代码。

- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    float updatedCurrFrameX = originalFrame.origin.x*[scroll zoomScale];
    float updatedCurrFrameY = originalFrame.origin.y*[scroll zoomScale];
    float updatedCurrFrameWidth = originalFrame.size.width*[scroll zoomScale];
    float updatedCurrFrameHeight = originalFrame.size.height*[scroll zoomScale];

    CGRect visibleRect=CGRectMake(updatedCurrFrameX, updatedCurrFrameY, updatedCurrFrameWidth, updatedCurrFrameHeight);
    scroll.contentSize= visibleRect.size;
    scroll.contentOffset=visibleRect.origin;



}

1 个答案:

答案 0 :(得分:0)

实施UIScrollViewDelegate以便在用户缩放(scrollViewDidEndZooming:withView:atScale:)时收到通知,然后通过设置contentSizecontentOffset进行相应操作。如果通过调整contentSize和offset无法达到预期效果,则可以考虑在缩放时更改scrollView的documentView。