淡出不适合的文本标签字符串的结尾(而不是截断)

时间:2012-08-28 07:02:29

标签: iphone ios text nsstring uilabel

我不确定“淡出”是否是正确使用的术语,因为它似乎很多都是指动画效果,但是我想要实现的目标可以在iPhone的地址栏中看到Safari应用。当URL太长而无法显示时,字符串的末尾“淡出”而不是用“...”截断。

我认为可以通过在XIB文件中将“断线”设置从“截断尾部”更改为“剪辑”,然后使用透明图像来创建效果,从而轻松完成此操作。但设置为“剪辑”似乎剪切在一个单词的结尾,而不是单词的中间,或甚至是字母的中间,如Safari或Chrome for iPhone中所示。这对我来说并不适用,它实际上给人的印象是文本是完整的,当仔细检查时,用户会注意到文本没有意义。

“淡出”不适合文字标签的字符串的最佳方法是什么?提前谢谢。

2 个答案:

答案 0 :(得分:6)

查看适用于Mac的Google工具箱GTMFadeTruncatingLabel,这是一个可重复使用的组件。

答案 1 :(得分:2)

您还可以使用此处的类别组合:(https://stackoverflow.com/a/24508153/2654425)和渐变。

并做:

if([myLabel isTruncated]){

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



}

这适用于iOS 7& iOS8上。