UILabel 添加 GradientLayer [重复]

Posted

技术标签:

【中文标题】UILabel 添加 GradientLayer [重复]【英文标题】:UILabel add GradientLayer [duplicate] 【发布时间】:2013-05-11 10:57:58 【问题描述】:

要向 UILabel 添加背景渐变,我使用以下代码。

在使用渐变之前,UILabel 是这样出现的。

现在,要添加渐变,我使用以下代码。

   CAGradientLayer *gradLayer=[CAGradientLayer layer];
    gradLayer.frame=self.myView.layer.bounds;
    [gradLayer setColors:[NSArray arrayWithObjects:(id)([UIColor redColor].CGColor), (id)([UIColor cyanColor].CGColor),nil]];
    gradLayer.endPoint=CGPointMake(1.0, 0.0);

    [self.myView.layer addSublayer:gradLayer];

UILabel 如下,但没有文字。

我也尝试在UILabel层的底部添加该层但没有成功。

[self.myView.layer insertSublayer:gradLayer atIndex:0];

【问题讨论】:

尝试将渐变添加到视图,然后将标签添加为该视图的子视图。如果您将标签的颜色设置为[UIColor clearColor],则应显示渐变和文本。 所以你的意思是说,不能为 UILabel 设置渐变。那么按照你的说法,我将不得不添加一个 UIView,设置它的渐变,然后添加 UILabel。很好,但是如果要添加许多 UILabel,则引入对象会增加内存占用 我不认为每个UILabel 多一个简单的UIView 会影响内存。 【参考方案1】:

您可能需要将标签设置在不同 UIView 的顶部:

 UIView *labelBackground = [[UIView alloc] initWithFrame:self.label.frame];
 self.label.backgroundColor = [UIColor clearColor];
 self.label.frame = self.label.bounds;

 CAGradientLayer *gradLayer=[CAGradientLayer layer];
 gradLayer.frame = labelBackground.layer.bounds;
 [gradLayer setColors:[NSArray arrayWithObjects:(id)([UIColor redColor].CGColor), (id)([UIColor cyanColor].CGColor),nil]];
 gradLayer.endPoint=CGPointMake(1.0, 0.0);

 [labelBackground.layer addSublayer:gradLayer];

 [labelBackground addSubview:self.label];

 [self.view addSubview:labelBackground];

【讨论】:

以上是关于UILabel 添加 GradientLayer [重复]的主要内容,如果未能解决你的问题,请参考以下文章

GradientLayer 中的 Swift -Animation 未出现在单元格中

UIView 添加闪烁的渐变光

GradientLayer 显示在按钮外

ios 给view添加一个渐变的背景色

GradientLayer 与 Swift 中的单元格标签重叠?

GradientLayer显示在按钮外部