iOS UIView 子类将透明文本绘制到背景

Posted

技术标签:

【中文标题】iOS UIView 子类将透明文本绘制到背景【英文标题】:iOS UIView subclass draw see-through text to background 【发布时间】:2014-12-28 01:57:19 【问题描述】:

我想在 UIView 上的子类上绘制文本,以便文本被剪切掉,并且视图后面的背景显示出来,就像在此处找到的 OSX Mavericks 徽标中一样。

背景图片视图 IBOutlet UIView *ViewTest IBOutlet UIlabel *labelTest alpha:0 style(显示背景图片)

http://s25.postimg.org/tkf1sa3x9/1122.png

我会说我更像是一名中级/早期高级 ios 开发人员,所以请随意向我抛出一些疯狂的解决方案。我希望我必须覆盖 drawRect 才能做到这一点。

【问题讨论】:

【参考方案1】:

一种方法是使用图层蒙版。将文本渲染到图像上,并将该图像设置为图层的蒙版,并将该图层指定为视图的蒙版。

// Create your mask layer
CALayer* maskLayer = [CALayer layer];
maskLayer.frame = CGRectMake(0,0,yourMaskWidth ,yourMaskHeight);
maskLayer.contents = (__bridge id)[myTextRenderedImage CGImage];

// Apply the mask to your uiview layer        
yourUIView.layer.mask = maskLayer;

myTextRenderedImage 是您呈现纯文本的图像。

【讨论】:

没有 UILabel。您在图像上渲染文本。然后将其设置为遮罩层的内容。 我可以用 uitextview.layer 代替 myTextRenderedImage CGImage 吗?希望能帮到你

以上是关于iOS UIView 子类将透明文本绘制到背景的主要内容,如果未能解决你的问题,请参考以下文章

更新 UIView 子类中 drawRect 中绘制的组件中的文本

如果 drawRect: 被覆盖,子类化的 UIView 显示黑色背景

如何使用 drawRect 覆盖在 UIView 子类的某些区域中获得透明度

我正在使用 drawRect 实现 UIView 子类:如何绘制按钮?

以编程方式在子类 UIView 的子视图上自动布局

将多个 UIImageViews 添加到子类 UIView