【问题标题】: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;
    

    另外,您可以通过向数组中添加更多颜色并更改图层的startPointendPoint 来使此效果更加平滑。

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      相关资源
      最近更新 更多