如何在 IOS 的 UIView 中仅使文本/标题涵盖的部分透明

  • 本文关键字:标题 文本 透明 IOS UIView ios
  • 更新时间 :
  • 英文 :


我正在尝试创建一个UIView,上面有text(text可能会不断变化(。我只希望该UIView text部分是透明的,以便我们能够看穿案文。换句话说,我希望文本部分显示UIView superview中的任何内容。我花了很多时间在上面,但还没有弄清楚。有人有想法怎么做吗?

你想做的事情不是微不足道的。但只要稍加努力,这是可能的。

简而言之,要使文本透明,您需要创建一个剪切文本的 CALayer,然后将其用作当前 CALayer 的遮罩。

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

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

现在使用该图像创建新的遮罩层。为此,请创建新的 CALayer 对象并分配图像。CGImage到图层的"内容"属性。

现在将该层分配给 UIView 层的"mask"属性。此视图可能只是一个带有白色"背景颜色"的空视图。

如果一切按计划进行,蒙版的黑色部分(文本(将使白色 UIView 透明。然后只需将其放在图像上即可。

请记住,蒙版不会动画化。因此,如果您想顺利过渡到其他标题,更改此掩码将需要更多额外的工作。

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

我的第一个想法是将视图子类化并实现draw:方法。 在那里,您可以使用所需的任何颜色填充视图,然后使用drawText:inRect:(或任何调用(在其上绘制具有清晰颜色的文本。这应该达到您想要的效果。

最新更新