我的要求是我需要以这样的方式在标签中显示文本,如果文本的长度太大而无法容纳在一行中,我需要在最后截断它,这样只有最后几个字符(通常是数字 b/w 1-1000,因此文本长度可能会有所不同。)是可见的,并且它之前的文本被截断为“...”。
所以文本看起来像“abcdefgijk...10”
有什么办法可以做到这一点?
UILabel *contentLabel = [[UILabel alloc]initWithFrame:CGRectMake(50,100, 150, 30)];
contentLabel.text = @"abcdefghijklmnopqrstuvwxyz10";
contentLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
将此标签添加到您的显示中。你应该得到这样的输出
abcdefghijklmnopq...10
斯威夫特 4:
如果有人像我一样遇到这个问题,
你需要设置你的
label.numberOfLines = 1
如果你将它设置为 0,它将在一个空格处截断。
所以你的代码应该看起来像
label.numberOfLines = 1
label.lineBreakMode = .byTruncatingTail
label.adjustsFontSizeToFitWidth = false
对于寻找最新解决方案的每个人,swift 3 :
yourLabel.lineBreakMode = .byTruncatingMiddle;
试试这个:
label.lineBreakMode = NSLineBreakByTruncatingMiddle;
UILineBreakModeMiddleTruncation
从 iOS 6.0 开始弃用。
NSString 类中有很多方法使用 -length 然后使用其中任何一个
– substringFromIndex:
– substringWithRange:
– substringToIndex:
使用 NSString stringwithFormat 创建一个临时字符串,将您从 substringTo 索引和“.....”中获得的所需字符放入 substringFromIndex 中。
希望这有帮助
您可以从查找可以放在一行中的字符长度开始,比如“n”个字符。您可以借助此链接来确定“n”如何知道 NSString 是否适合 UILabel 以及最后一个适合的字符串的索引?。接下来,找到字符串的长度。如果超过 n,则提取最后两个字符。例
NSString * fooString = @"a very long string";
NSString * s2 = [fooString substringWithRange:NSMakeRange([fooString length]-3, 2)];
NSString * s1 = [fooString substringWithRange:NSMakeRange(0 , n-5)];
NSString * newString = [NSString stringWithFormat:@"%@...%@",s1,s2];
我们有不同的 UILabel 换行模式,例如
截头, 截断中间, 截尾
在 Xib 中,您可以随意设置换行模式
如果您使用 XIB 文件..
选择 --> UILable 和 选择 --> Attribute inspector 标签并更改为 Line Breaks-->Truncate tail
截断字符的简单方法...
这里是使用方法,
NSLineBreakByTruncatingMiddle
UILabel *temp = [[UILabel alloc]initWithFrame:CGRectMake(5,75, 100, 50)];
[temp setBackgroundColor:[UIColor lightGrayColor]];
temp.lineBreakMode = NSLineBreakByTruncatingMiddle;
temp.text = @"HelloBoss997";
输出:
Hello...s997