我有一个UILabel
,我想淡化字符串的末尾,这会超出范围,什么是更好的解决方案呢?我应该计算标签的宽度,和字符串的宽度比较,如果字符串的宽度大于标签的宽度,我应该淡化最后两个字母?我应该怎么做呢?我希望这会很容易。请写下你的答案。谢谢!我喜欢用这个方法来计算宽度:
CGRect labelRect = [text
boundingRectWithSize:labelSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{
NSFontAttributeName : [UIFont systemFontOfSize:14]
}
context:nil];
5条答案
按热度按时间ne5o7dgx1#
Swift 4.0示例:
结果:
yvgpqqbh2#
可以使用
CAGradientLayer
淡化一个线标注pgky5nke3#
仅从layoutSubviews()方法起作用
6xfqseft4#
2023.典型的大纲解决方案:
它不考虑语言方向,它假设背景是白色的,等等。
请注意,您必须明确决定和设置淡入淡出的长度,当然,在整个应用程序中是恒定的,您不能使用“文本宽度的.1”。这里我们使用标签的高度,效果很好。
8dtrkrch5#
我已经找到了答案-我应该使用google中的GTMFadeTruncatingLabelTest类