淡出标签文本的末尾
我有一个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类