截断 UILabel 中的部分文本

问题描述 投票:0回答:10

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

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

有什么办法可以做到这一点?

ios objective-c ios7 uilabel text-formatting
10个回答
16
投票
UILabel *contentLabel = [[UILabel alloc]initWithFrame:CGRectMake(50,100, 150, 30)];
contentLabel.text = @"abcdefghijklmnopqrstuvwxyz10";
contentLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;

将此标签添加到您的显示中。你应该得到这样的输出

abcdefghijklmnopq...10

7
投票

斯威夫特 4:

如果有人像我一样遇到这个问题,

你需要设置你的

label.numberOfLines = 1

如果你将它设置为 0,它将在一个空格处截断。

所以你的代码应该看起来像

    label.numberOfLines = 1
    label.lineBreakMode = .byTruncatingTail
    label.adjustsFontSizeToFitWidth = false

5
投票

对于寻找最新解决方案的每个人,swift 3 :

yourLabel.lineBreakMode = .byTruncatingMiddle;

1
投票

试试这个:

 label.lineBreakMode = NSLineBreakByTruncatingMiddle;

UILineBreakModeMiddleTruncation
从 iOS 6.0 开始弃用。


1
投票

在情节提要中

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

  2. 选择属性检查器。

  3. 在标签属性下。你可以找到Line Break

完成


0
投票

NSString 类中有很多方法使用 -length 然后使用其中任何一个

– substringFromIndex:
– substringWithRange:
– substringToIndex:

使用 NSString stringwithFormat 创建一个临时字符串,将您从 substringTo 索引和“.....”中获得的所需字符放入 substringFromIndex 中。

希望这有帮助


0
投票

您可以从查找可以放在一行中的字符长度开始,比如“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];

-1
投票

我们有不同的 UILabel 换行模式,例如

截头, 截断中间, 截尾

在 Xib 中,您可以随意设置换行模式


-1
投票

如果您使用 XIB 文件..

选择 --> UILable 和 选择 --> Attribute inspector 标签并更改为 Line Breaks-->Truncate tail

截断字符的简单方法...


-1
投票

这里是使用方法,

NSLineBreakByTruncatingMiddle

UILabel *temp = [[UILabel alloc]initWithFrame:CGRectMake(5,75, 100, 50)];
[temp setBackgroundColor:[UIColor lightGrayColor]];
temp.lineBreakMode = NSLineBreakByTruncatingMiddle;
temp.text = @"HelloBoss997";

输出:

Hello...s997

© www.soinside.com 2019 - 2024. All rights reserved.