如何实现动态UIView遮罩?

Posted

技术标签:

【中文标题】如何实现动态UIView遮罩?【英文标题】:How to achieve dynamic UIView masking? 【发布时间】:2012-01-15 01:10:39 【问题描述】:

我正在尝试实现一种动态 UIView 遮罩效果。这是一个草图:

如您所见,我正在尝试创建一个 UIView,它可以有效地切穿图像以显示其背后的图像。我已经知道如何静态返回带有蒙版的图像,但是我希望“显示器”可以拖动(我将使用平移手势)并实时显示。

是否有人对如何实现这一目标有任何想法或起点?谢谢

(注意:我的演示是白色层,但我实际上想展示另一张图像或照片)。

【问题讨论】:

你从什么代码开始? 无,我正在寻找有关如何让 UIView 剪切图像的想法或技巧。 很抱歉,不太确定你想要对非透明部分产生什么效果,但是你不能有一个比你的图片大得多的视图,里面有一个 100% 透明的正方形中间及其边界是白色的,不透明度为 60%?然后拖动这个视图?不需要遮罩或任何东西 - 只需一个 UIScrollView。 @PeterSarnowski 很抱歉造成混乱。基本上我有两个图像堆叠在另一个之上。我想要一个小矩形区域来切开顶部图像,以便显示底部图像。 我在当前项目中遇到了同样的问题。如果您可以分享代码示例,请不胜感激。 【参考方案1】:

屏蔽图像并不难。

此链接显示了基础知识。 http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html

但我个人认为我会制作 2 个 UIImage 视图并裁剪可拖动 UIView 的内容。我不确定,但我希望剪切和平移第二张图像的计算成本会比应用蒙版要少,并且会为您带来更好的帧速率。

所以我会这样做:完整图像的 UIImageView。一个 UIView 在它上面,带有一个白色和一些透明度设置,使它看起来是白色的,然后是一个带有图像的 UIImageView 放置或裁剪,以便只显示正确的部分。

【讨论】:

请原谅我的描述,“白色”层实际上将是另一个图像。所以它的 2 个图像相互堆叠,我需要一个矩形来切开中间图像以显示底部图像。任何想法表示赞赏。d 谢谢! 是的。大多数情况下都是一样的。使用 3 个 UIImageViews。裁剪顶部的一个,使其看起来像是穿过中间的一个。它并没有真正被掩盖,但对最终用户来说是一样的。 嘿,听起来很有趣。您所说的“裁剪顶部”是什么意思?我在想我的顶部 UIImageView 必须以某种方式在该确切位置复制底部图像(因为矩形是可拖动的)。谢谢 您好,谢谢,我知道您所说的裁剪图像是什么意思。我已经完成了我的原型。谢谢! @user339946 你能分享关于这个主题的任何资源吗?提供的上述链接对我不起作用。

以上是关于如何实现动态UIView遮罩?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用子视图的延迟/动态加载实现自定义 UIView,类似于 UITableView

只需用矩形遮罩 UIView

如何在ios的UIView中找到遮罩的位置和大小

Jquery mobile中如何实现遮罩效果

UIView 遮罩透明。

淡出 UIView?