我的要求是我需要以这样的方式在标签中显示文本:如果文本的长度太大而无法容纳在一行中,我需要在结尾处截断它,使得只有最后几行字符(通常是数字b / w 1-1000,因此文本长度可能会有所不同。)是可见的,并且前面的文本被截断为“...”。
所以文字看起来像“abcdefgijk ... 10”
有什么方法可以实现这个目标吗?
答案 0 :(得分:13)
UILabel *contentLabel = [[UILabel alloc]initWithFrame:CGRectMake(50,100, 150, 30)];
contentLabel.text = @"abcdefghijklmnopqrstuvwxyz10";
contentLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
将此标签添加到您的显示器。你应该得到像这样的输出
abcdefghijklmnopq...10
答案 1 :(得分:5)
对于寻找更新近期解决方案的所有人,swift 3:
yourLabel.lineBreakMode = .byTruncatingMiddle;
答案 2 :(得分:4)
Swift 4:
有人像我一样遇到这个问题,
您需要设置label.numberOfLines = 1
如果将它设置为0,它将在空格处截断。
所以你的代码应该是
label.numberOfLines = 1
label.lineBreakMode = .byTruncatingTail
label.adjustsFontSizeToFitWidth = false
答案 3 :(得分:2)
试试这个:
label.lineBreakMode = NSLineBreakByTruncatingMiddle;
iOS 6.0中不推荐使用 UILineBreakModeMiddleTruncation
。
答案 4 :(得分:1)
答案 5 :(得分:0)
NSString类中有很多方法使用-length,然后使用其中任何一个
– substringFromIndex:
– substringWithRange:
– substringToIndex:
使用NSString stringwithFormat创建一个临时字符串,将你想要的字符串从substringTo索引到“.....”然后你的数字来自字符串by substringFromIndex。
希望这会有所帮助
答案 6 :(得分:0)
您可以从找到可以放在一行中的字符长度开始,比如'n'字符。您可以借助此链接来确定“n”How to know if NSString fits in UILabel or not and index of the last string which fits?。接下来,找到字符串的长度。如果它超过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];
答案 7 :(得分:0)
我们为UILabel提供了不同的换行模式,如
截断头, 截断中间, 截断尾巴
在Xib中,您可以根据需要设置换行模式
答案 8 :(得分:0)
如果您使用XIB文件.. 选择 - > UILabel和 选择 - >属性检查器标记并更改为换行符 - >截断尾部
简单地截断字符...
答案 9 :(得分:0)
以下是如何使用它,NSLineBreakByTruncatingMiddle
UILabel *temp = [[UILabel alloc]initWithFrame:CGRectMake(5,75, 100, 50)];
[temp setBackgroundColor:[UIColor lightGrayColor]];
temp.lineBreakMode = NSLineBreakByTruncatingMiddle;
temp.text = @"HelloBoss997";
输出:
Hello...s997