带有图层阴影的UILabel文本颜色透明度?
Posted
技术标签:
【中文标题】带有图层阴影的UILabel文本颜色透明度?【英文标题】:UILabel text color transparency with layer shadows in place? 【发布时间】:2012-01-04 06:24:16 【问题描述】:我有一个UILabel
,我正尝试在其上应用半透明渐变作为颜色。例如,在我的 UILabel
子类中,我试图以这种方式设置渐变颜色:
self.textColor = [UIColor colorWithPatternImage:someTransparentGradient];
然而,在处理这个问题时,我发现UILabel
似乎无法在当图层阴影到位时以透明度进行绘制。我试图将文本颜色设置为清除:
self.textColor = [UIColor clearColor];
但文本最终是白色的。想法?
如果您将文本颜色设置为清除,然后将图层阴影应用到文本视图上,您可以自己复制问题。
【问题讨论】:
你在哪里设置了textColor?即,self.textColor = [UIColor clearColor];
我在 UILabel
子类中的自定义方法中设置了它。
您是否将opaque
设置为YES
?
@MarkAdams: opaque
设置为 NO
。
【参考方案1】:
如果您已经通过 nib 创建了 UILabel
并将 textColor 设置为 initWithFrame
,您将不会得到想要的结果。
在UILabel
子类中,写initWithCoder
并设置颜色。
-(id)initWithCoder:(NSCoder *)aDecoder
self = [super initWithCoder:aDecoder];
if (self)
// Initialization code
self.textColor = [UIColor clearColor];
return self;
编辑
看,这是默认(灰色)背景的屏幕截图。
这是白底截图
请下载sample application并试用。
【讨论】:
我确实通过 nib 文件创建了UILabel
,但我没有覆盖 initWithFrame
,因为如果它是从 nib 实例化的,则不会调用它。我有一个在标准 initWithCoder:
之后调用的自定义初始化程序。但是如果你真的用[UIColor clearColor]
尝试你的方法,你会看到文本仍然是白色的。
我试过clearColor
。如果是 clearColor,则文本不可见。因此,请确保在 initWithCoder
中设置颜色
我已经上传了测试应用程序。请下载并试用。
@Aadhira:是的,弄清楚了为什么您的项目有效而不是我的。我正在对图层应用阴影。试试看,你会看到的。【参考方案2】:
我通常不接受自己的答案,但在这种情况下我必须接受。这似乎是一个错误。无论何时将图层阴影应用于UILabel
,都不再支持文本透明度。我会归档雷达。
【讨论】:
以上是关于带有图层阴影的UILabel文本颜色透明度?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不改变文本透明度的情况下为 UILabel 设置背景图像并调整其 alpha?