带有两个图像的 UIScrollview - 保持 1 个图像可缩放和 1 个图像静态(固定大小)

Posted

技术标签:

【中文标题】带有两个图像的 UIScrollview - 保持 1 个图像可缩放和 1 个图像静态(固定大小)【英文标题】:UIScrollview with two images - Keeping 1 image zoomable and 1 image static (fixed size) 【发布时间】:2010-04-22 06:57:53 【问题描述】:

我有一个UIView,其中包含一个可缩放的UIImageView,还有另一个半透明的UIView

我想要实现的是能够缩放UIImageView,同时保持半透明视图静态而不是缩放。

如果我在UIImageView(添加到UIScrollView)上添加半透明UIView,一切都会放大。但是,如果我将两者都作为子视图添加到基础 UIView,则只能跟踪半透明的 UIView,因为它是最后一个添加的。

我确实需要控制首先位于半透明UIView 以进行触摸,因为我可能想要调整半透明视图的大小。但是,如果使用两根手指,我想将触摸控制权交给UIScrollView。无论如何我可以做到这一点吗?下一个响应者似乎不起作用。除了子类化UIWindow,我还尝试使用hittest,但是基础UIView 需要推送/弹出导航控制能力,所以我认为我不能子类化UIWindow 以推送到导航堆栈。

任何帮助将不胜感激。

谢谢,

温斯顿

【问题讨论】:

【参考方案1】:

嗯..你可以试试这个层次结构(可能是子类):

UIView (container)
 > UIView (semitransparent overlay)
 > UIScrollview
   - UIView (zoomable content)

这样,叠加层不会缩放。

那么棘手的事情是多层上的用户交互。如果您的叠加层中有不应该检测到用户触摸的区域,这很容易,因为您只需将 UIView 属性“userInteractionEnabled”设置为“否”,以将触摸应该“转发”到底层图层的视图部分。

但如果我说对了,你需要一些更复杂的东西。您可能可以在容器 UIView 中设置某种主触摸控制器,找出正在发生的事情,然后调用其子视图的某些方法/转发事件。 我不知道您需要在容器中覆盖/实现的所有确切方法,但请查看ScrollView Suite 示例代码中的 tapZoom 演示。这是一个很好的例子。

出于好奇,请问这个交互模型是做什么用的?

【讨论】:

您好 Efrain,感谢您的回复。基本上我想要达到的效果是在图像顶部有一个带有变暗半透明层的图像。这个变暗的图层包含一个可以看到原始图层的矩形框(变得清晰)。这个裁剪框可以通过边角进行调整。我希望这有助于解释。我相信我尝试了您的解决方案并将再试一次,我记得它并没有完全提供我正在寻找的效果并洗掉了遮罩层非常感谢您的帮助:) Winston 顺便说一句..关于正在转发什么样的触摸事件等,也许你可以阅读这个:developer.apple.com/iphone/library/documentation/iPhone/…

以上是关于带有两个图像的 UIScrollview - 保持 1 个图像可缩放和 1 个图像静态(固定大小)的主要内容,如果未能解决你的问题,请参考以下文章

带有图像的 UIScrollView

如何在 Swift 的 UIScrollView 中的视图之间添加填充? [关闭]

带有背景图像的 UIScrollView

带有图像的 UIScrollView

在 UIScrollView 中释放带有图像的不可见按钮

带有嵌套图像的 UiScrollview 看起来很奇怪