截断UILabel中的部分文本

时间:2013-12-06 06:47:28

标签: ios objective-c ios7 uilabel text-formatting

我的要求是我需要以这样的方式在标签中显示文本:如果文本的长度太大而无法容纳在一行中,我需要在结尾处截断它,使得只有最后几行字符(通常是数字b / w 1-1000,因此文本长度可能会有所不同。)是可见的,并且前面的文本被截断为“...”。

所以文字看起来像“abcdefgijk ... 10”

有什么方法可以实现这个目标吗?

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)

在故事板中

  1. 选择要截断字符的标签。

  2. 选择属性检查器。

  3. 在标签属性下。您可以找到换行符

  4. enter image description here

    完成。

答案 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