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

我不确定“淡出”是否是正确的术语,因为它看起来很像animation效果,但是我想在iPhone Safari应用程序的地址栏中看到。 当URL显示的时间太长时,string的末尾“淡出”而不是被截断为“…”。

我认为这可以很容易地通过在XIB文件中将换行符设置从“截断尾部”更改为“剪辑”,然后使用具有透明度的图像来创build效果来完成。 但设置为“剪辑”似乎夹在一个单词的结尾,而不是一个字的中间,或者甚至是一个字母的中间,如在Safari或Chrome for iPhone中所见。 这对我来说并不合适,实际上给人的印象是文本是完整的,经过仔细观察,用户会注意到文本没有意义。

什么是最好的方式来“淡出”不符合文本标签的string? 提前致谢。

看一下Google Toolbox for Mac GTMFadeTruncatingLabel ,它是一个可重复使用的组件。

您也可以使用这里find的类别的组合:( 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。