2012-01-04 97 views
0

我有一个UILabel我试图将半透明渐变作为颜色应用于。举例来说,在我的UILabel子类我试图设置渐变颜色是这样的:UILabel带有图层阴影的文字颜色透明度?

self.textColor = [UIColor colorWithPatternImage:someTransparentGradient]; 

虽然这个瞎搞,不过,我发现,UILabel似乎并没有能够与透明画当图层阴影已到位。我试图设置文本颜色清除:

self.textColor = [UIColor clearColor]; 

但文本结束为白色。想法?

如果您将文本颜色设置为清除,然后将图层阴影应用于文本视图,则可以自己复制问题。

+0

你在哪里设置了textColor?即,'self.textColor = [UIColor clearColor];' – Ilanchezhian 2012-01-04 06:34:56

+0

我在我的'UILabel'子类中将它设置为一个自定义方法。 – 2012-01-04 06:38:40

+0

你有'不透明'设置为'YES'吗? – 2012-01-20 20:52:34

回答

1

我通常不会接受我自己的答案,但在这种情况下,我必须。这似乎是一个错误。每当将图层阴影应用于UILabel时,不再支持文本透明度。我将提交一份雷达。

3

如果您通过nib创建了UILabel,并且在initWithFrame中设置了textColor,您将无法获得所需的结果。

UILabel子类中,编写initWithCoder并设置颜色。

-(id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     // Initialization code 
     self.textColor = [UIColor clearColor]; 
    } 
    return self; 
} 

编辑

看,这是屏幕截图用默认值(灰色)的背景。

enter image description here

这是白色背景

enter image description here

截图请下载sample application和尝试。

+0

我通过nib文件创建了'UILabel',但是我没有重写'initWithFrame',因为如果它是从一个nib实例化的,那么就不会调用它。我有一个自定义初始化程序,它在标准的'initWithCoder:'之后被调用。但是如果你真的用'[UIColor clearColor]'尝试你的方法,你会发现文本仍然是白色的。 – 2012-01-04 06:40:51

+0

我尝试过'clearColor'。如果它是clearColor,那么文本是不可见的。所以确保你在'initWithCoder'里设置颜色 – Ilanchezhian 2012-01-04 06:56:06

+0

我已经上传了测试应用程序。请下载并尝试。 – Ilanchezhian 2012-01-04 07:33:22