【问题标题】:UILabel add GradientLayer [duplicate]UILabel 添加 GradientLayer [重复]
【发布时间】: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 会影响内存。

标签: ios uilabel cagradientlayer


【解决方案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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    相关资源
    最近更新 更多