2

我正在尝试在其之上创建一个UIViewwith text(可能会不断变化)。text我只希望其中的text一部分UIView是透明的,以便我们可以看穿文本。换句话说,我希望文本部分superview显示UIView. 我花了很多时间在上面,但还没有弄清楚。任何人都有想法如何做到这一点?

4

3 回答 3

1

您可以创建一个CALayer,将其清除为透明,然后将文本渲染到其中(必须是不透明的)。然后,将该层设置为maskview.layer

于 2013-08-28T19:28:10.383 回答
1

你想做的事情不是微不足道的。但这可以通过一点工作来实现。

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

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

现在使用 UIGraphicsGetImageFromCurrentImageContext() 获取此文本的图像。应该有很多关于如何在 SO 上执行此操作的示例。

现在使用该图像创建一个新的蒙版层。通过创建一个新的 CALayer 对象并将 image.CGImage 分配给图层的“内容”属性来做到这一点。

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

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

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

于 2013-08-28T19:31:23.673 回答
0

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

于 2013-08-28T19:29:20.587 回答