【问题标题】:Restrict uiscrollview scroll area限制uiscrollview滚动区域
【发布时间】:2011-10-26 08:11:56
【问题描述】:

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

--|----------|---------|---
  |   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;



}

【问题讨论】:

    标签: iphone uiscrollview zooming


    【解决方案1】:

    实现 UIScrollViewDelegate 以在用户缩放 (scrollViewDidEndZooming:withView:atScale:) 时收到通知,然后通过设置 contentSizecontentOffset 采取相应措施。如果通过调整contentSize和offset不能达到想要的效果,可以考虑在缩放时改变scrollView的documentView。

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      相关资源
      最近更新 更多