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 未出现在单元格中