淡出标签文本的末尾

我有一个UILabel ,我想淡出string的结尾,这将是越界。 有什么更好的解决scheme呢? 我应该计算标签的宽度,比较它与string宽度,如果string宽度大于标签的,我应该淡化后两个字母? 我到底该怎么做? 我希望这会很容易。 请写下你的解决scheme。 谢谢! 我更喜欢用这种方法来计算宽度:

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

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 

结果:

结果

您可以使用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; 

示例淡入淡出的标签

我find了答案 – 我应该使用谷歌的 GTMFadeTruncatingLabelTest类