【问题标题】:Fade the end of a label text淡化标签文本的结尾
【发布时间】:2014-06-23 11:58:04
【问题描述】:

我有一个UILabel,我想淡化字符串的结尾,这将超出范围。对此有什么更好的解决方案? 我应该计算标签的宽度,将其与字符串宽度进行比较,如果字符串宽度大于标签的宽度,我应该淡化最后两个字母吗?我应该怎么做? 我希望这很容易。请写下你的解决方案。谢谢! 我更喜欢用这种方法来计算宽度:

CGRect labelRect = [text
                    boundingRectWithSize:labelSize
                    options:NSStringDrawingUsesLineFragmentOrigin
                    attributes:@{
                     NSFontAttributeName : [UIFont systemFontOfSize:14]
                    }
                    context:nil];

【问题讨论】:

标签: ios uilabel


【解决方案1】:

你可以使用CAGradientLayer淡化一行标签

CAGradientLayer *l = [CAGradientLayer layer];
l.frame = self.textLabel.bounds;
l.colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor];
l.startPoint = CGPointMake(0.1f, 1.0f);
l.endPoint = CGPointMake(0.95f, 1.0f);
self.textLabel.layer.mask = l;

【讨论】:

  • 我正在尝试在按钮中执行此操作,但无法执行此操作。你能查一下吗?
【解决方案2】:

Swift 4.0 示例:

    let gradient = CAGradientLayer()

    gradient.frame      = titleLabel.bounds
    gradient.colors     = [UIColor.white.cgColor, UIColor.clear.cgColor]
    gradient.startPoint = CGPoint(x: 0.1, y: 0.0)
    gradient.endPoint   = CGPoint(x: 0.95, y: 0.0)

    label.lineBreakMode = .byClipping
    label.layer.mask = gradient

结果:

【讨论】:

    【解决方案3】:

    我找到了答案 - 我应该使用来自 google 的 GTMFadeTruncatingLabelTest 类

    【讨论】:

      【解决方案4】:

      仅适用于 layoutSubviews() 方法

      override func layoutSubviews() {
          super.layoutSubviews()
      
          let maskLayer = CALayer()
          maskLayer.frame = label.bounds
      
          let gradientLayer = CAGradientLayer()
          gradientLayer.frame = label.bounds
          gradientLayer.colors = [UIColor.white.cgColor, UIColor.clear.cgColor]
          gradientLayer.startPoint = CGPoint(x: 0.7, y: 0.0)
          gradientLayer.endPoint = CGPoint(x: 0.95, y: 0.0)
      
          maskLayer.addSublayer(gradientLayer)
          label.layer.mask = maskLayer
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-22
        • 2020-10-26
        • 2017-04-18
        • 2021-06-23
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多