在iOS中的UIView中如何使文本/标题覆盖的部分是透明的

我正在试图创build一个UIViewtexttext可能会不断变化)的顶部。 我只想要该UIViewtext部分是透明的,以便我们可以看穿文本。 换句话说,我希望文本部分显示任何在UIViewsuperview 。 我花了很多时间,但还没有弄明白。 任何人有想法如何做到这一点?

你想做什么并不是微不足道的。 但是有一点工作是可能的。

简而言之,为了使文本透明,您需要创build一个CALayer文本,然后将其用作当前CALayer的掩码。

首先创build一个文本的图像。 您可以创build一个UILabel,并在白色背景上显示黑色文本。 当我们完成后,黑色将变得透明。 白色的背景应该和你要应用的UIView大小相同。

现在使用UIGraphicsGetImageFromCurrentImageContext()获取这个文本的图像。 在这里应该有很多如何做到这一点的例子。

现在使用该图像创build一个新的遮罩层。 通过创build一个新的CALayer对象并将image.CGImage分配给图层的“内容”属性来完成此操作。

现在将该图层分配给UIView图层的“mask”属性。 这个视图可能只是一个带有白色“backgroundColor”的空白视图。

如果一切按计划进行,掩码(文本)的黑色部分将使白色的UIView透明。 然后把它放在一个图像上。

请记住,面具不会animation。 所以如果你想顺利地过渡到其他标题,改变这个面具将需要更多额外的工作。

您可以创build一个CALayer ,将其清除为透明,然后将文本呈现给它(必须是不透明的)。 然后,将该图层设置为view.layermask view.layer

我的第一个想法是子视图和实现draw:方法。 在那里你可以使用任何你想要的颜色来填充视图,然后使用drawText:inRect:或者其他任何被调用的方法)在它上面用清晰的颜色绘制文本。 这应该达到你想要的效果。