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 子类的某些区域中获得透明度