导致 UIScrollView zoomToRect: 只显示一部分

Posted

技术标签:

【中文标题】导致 UIScrollView zoomToRect: 只显示一部分【英文标题】:Cause UIScrollView zoomToRect: to only display a portion 【发布时间】:2011-11-17 10:22:06 【问题描述】:

我有一个包含 UIImageView 的 UIScrollView 子类。当用户双击该区域时,我想缩放到该 CGRect(从 CGPoint 计算)并“隐藏”UIImageView 的其余部分。 Mavel.app 和 The Walking Dead.app 在看漫画时的最终效果是相似的。

到目前为止,我得到了:

-(void)presentRect:(CGRect)rect 
  self.bounds = originalFrame;    //1
  [UIView beginAnimations:@"navigateToPos" context:nil];    
  [self zoomToRect:rect animated:NO];
  self.bounds = rect;   
  [UIView commitAnimations];

这可行,但“zoomToRect”需要 UIScrollView 的整个边界,当我重新启动它时(第 1 行),它会产生不希望的效果。

我被这个困住了。我不知道我是否需要一种新方法或需要使用 UIScrollView 的另一个属性。

感谢任何帮助。谢谢。

【问题讨论】:

我的印象是他们在 uiscrollview 上使用了两个黑条,并动画缩放和定位。没什么难的。 嗯我不确定,这意味着有 4 个条形图并根据可见矩形计算每个条形图的 Rects... 【参考方案1】:

我下载了这个应用程序来查看它。我几乎可以肯定他们甚至没有使用 uiscrollview。页面移动的方式让我想到了这一点。而 uiscrollview 应该只在你真正需要的时候使用,因为它在你定制的时候有很多问题。 (平铺内容、缩放和其他问题)。

滑动到下一页大约只有 50px,页面转到下一页,在 uiscrollview 中它没有发生,因为它的工作方式不同。

正如我之前所说,它可能是使用 4 条制作的(正如您纠正我的那样),或者它可以通过包装 uiimage 并用作掩码的视图来完成。您只需要计算缩放方块的大小并将其移动到中心,然后调整包装视图的大小以适应这个新大小。页面的 uiscrollview 的替代品可以是一个简单的图片库,但是您将这个“漫画视图”放在哪里。

【讨论】:

iPhone 或 iPad 的行为略有不同。在 iPad 中,如果您向右移动 50 像素,您可以看到下一张图片,例如使用 UIScoolView 的图库。【参考方案2】:

我已经解决了使用 UIScrollView 中的其他属性来模拟所需的效果。

【讨论】:

以上是关于导致 UIScrollView zoomToRect: 只显示一部分的主要内容,如果未能解决你的问题,请参考以下文章

带有 UIScrollView 的 UITableViewCell 导致其他单元格的内容消失

导致 UIScrollView zoomToRect: 只显示一部分

iOS:setContentSize 导致我的整个 UIScrollView 框架跳跃

UIScrollView出现位移问题

滚动其子uiscrollview时如何防止滚动uiscrollview?

UIScrollView 无限滚动 setContentOffset