UIScrollView 还是 UIImageView?

Posted

技术标签:

【中文标题】UIScrollView 还是 UIImageView?【英文标题】:UIScrollView or UIImageView? 【发布时间】:2012-02-24 10:04:09 【问题描述】:

我需要在屏幕上放置一张照片,并且它应该可以滚动或缩放,

我知道 UIScrollView 会做这些,所以我分配了一个,但是我的照片呢?

我想我不应该只将照片设置为我的 UIScrollView 的背景颜色,而且我还没有在文档中找到 UIScrollView 的任何属性来保存图像,例如“imageView”、“contentView”或类似的东西。

那么,我应该怎么做才能在我的屏幕上制作一张图片并让它能够响应手指触摸呢?

非常感谢!

【问题讨论】:

在 UiScrollView 中添加一个 UIImageView 作为 subView。 【参考方案1】:

将 UIImageView 添加到 UIScrollView 并为其设置最小/最大比例值。

然后实现下面的 UIScrollViewDelegate 函数。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView  
    return yourImageView;

如果您想缩放多个项目,请将所有视图添加到 UIView 中,然后将该 UIView 放入 UIScrollView 中。当然你必须在上面的函数中将返回视图更改为那个 UIView。

【讨论】:

【参考方案2】:

只需将您的UIImageView 添加为UIScrollView 的子视图。此外,将滚动视图的contentSize 属性设置为等于图像视图的frame 的大小。

【讨论】:

为什么滚动视图s contentSize`应该大于它要显示的内容的大小? 因为如果你设置equal,那么图片就不会滚动了? 您正在考虑滚动视图的大小。您希望滚动视图的 size 大于您在其中显示的内容的大小。 contentSize 应该等于子视图的大小。 好吧,你可能应该去告诉写这个tutorial的人他们犯了一个错误。当你这样做的时候,你应该让 Apple 知道他们需要修复他们的Scroll View Programming Guide。 谢谢,你的回答对我也有帮助!【参考方案3】:

scrollView 是第一步。 然后你应该添加一个 UIImageView 并在里面加载一个图像。 您还需要设置滚动视图的 max e min zoomScale 属性 而且你必须实现scrollview委托方法– viewForZoomingInScrollView:

【讨论】:

以上是关于UIScrollView 还是 UIImageView?的主要内容,如果未能解决你的问题,请参考以下文章

使用许多图像缩放 UIScrollView 的正确方法?

在 UIScrollView 内的 UIImageView 上启用 GestureRegnizer

在 UIScrollView 中放大多个 UIImageView

如果我隐藏 NavigationBar 和 ToolBar,UIScrollView 会向上移动

UIScrollView 还是 UIImageView?

水平展开的uiscrollview还是uitableview?