【问题标题】:Gradient fade at the end of a truncate word截断单词末尾的渐变淡入淡出
【发布时间】:2019-02-03 14:38:07
【问题描述】:
我试图得到这样的结果:
我似乎无法到达那里,这是我拥有的代码:
if (size.width > self.name.bounds.size.width) {
CAGradientLayer *l = [CAGradientLayer layer];
CGRect myFrame = self.name.bounds;
myFrame.size.width = 10.0f;
l.frame = myFrame;
l.colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor];
l.startPoint = CGPointMake(0.0f, 0.0f);
l.endPoint = CGPointMake(1.0f, 0.0f);
self.name.layer.mask = l;
}
我目前得到的是:
有什么帮助吗?
【问题讨论】:
标签:
ios
objective-c
swift
gradient
【解决方案1】:
您的代码的问题是您在此处修复了图层大小。
myFrame.size.width = 10.0f;
以上行将帧大小固定为 10 像素。这样图层大小将变为 10 像素。而且图层只能在这个宽度上渲染。
只需评论或删除上面的行以获得所需的结果。
这样你的代码现在就像
CAGradientLayer *l = [CAGradientLayer layer];
CGRect myFrame = self.name.bounds;
// myFrame.size.width = 10.0f;
l.frame = myFrame;
l.colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor];
l.startPoint = CGPointMake(0.0f, 0.0f);
l.endPoint = CGPointMake(1.0f, 0.0f);
self.name.layer.mask = l;
另外,您可以通过向数组中添加更多颜色并更改图层的startPoint 和endPoint 来使此效果更加平滑。
CAGradientLayer *l = [CAGradientLayer layer];
CGRect myFrame = self.name.bounds;
l.frame = myFrame;
l.colors = @[(id)[UIColor lightGrayColor].CGColor, (id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor];
l.startPoint = CGPointMake(0.0, 0.5);
l.endPoint = CGPointMake(1.0, 0.5);
self.name.layer.mask = l;