我有UIImageView
替换图像。此视图的图层使用CAShapeLayer
进行遮罩,以便在图像中创建圆形“孔”。为了创建漏洞,我使用UIBezierPath
和.usesEvenOddFillRule = true
。
静态时效果很好。但是我需要那个洞用户手指移动。为此,我每次用户移动手指时都会创建具有偶数规则的新UIBezierPath
。在尺寸较小的小手机上看起来不错,但在iPhone 6 Plus上则不稳定。
关于如何使其顺利进行的任何想法都非常受欢迎。我不能只移动掩蔽框架CAShapeLayer
- 它会移动洞穴机器人也隐藏图像的一些边缘。因此,唯一的方法是每次用户移动手指时更改其.path
,这很慢。
编辑: matt's answer可以在某些情况下使用,但不适用于我的情况:我不是只显示UIBezierPath
定义的整个图像的一部分。这部分通常是椭圆形(但可以是矩形或圆角矩形),并且在其中切有“孔”。当孔用户手指割草时,图像的显示部分/形状不会改变 - 它是静态的。
到目前为止已经存在的无效解决方案:
UIBezierPath
UIBezierPath
洞添加到其中CAShapeLayer
的路径,并使用一些不透明的填充颜色CAShapeLayer
作为UIImageView
每次用户移动手指时都会重复此过程。我不能简单地移动整个遮罩层,因为这也会改变正在显示的图像部分。我是什么让它保持静止并只移动其中的洞。
答案 0 :(得分:1)
嗯,我不同意。移动蒙版是完全的方式。我不明白为什么你认为这有问题。也许问题仅在于你没有使掩模层大足够。它不必与屏蔽层相同。在这种情况下,它需要大约是屏蔽层大小的9倍(3个水平层和3个垂直层),这样无论用户在任何方向滑动多少,它都将继续覆盖被遮盖的层。它会移动洞穴机器人也隐藏图像的一些边缘