[英]Truncate part of text in UILabel
我的要求是我需要在标签中显示文本,如果文本的长度太大而无法容纳在一行中,我需要在最后以最后几个字符(通常是最后几个字符)截断它一个数字b / w 1-1000所以文本长度可能会有所不同。)是可见的,其前面的文本被截断为“...”。
所以文字看起来像“abcdefgijk ... 10”
有什么办法可以实现吗?
UILabel *contentLabel = [[UILabel alloc]initWithFrame:CGRectMake(50,100, 150, 30)];
contentLabel.text = @"abcdefghijklmnopqrstuvwxyz10";
contentLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
将此标签添加到您的显示器。 你应该得到这样的输出
abcdefghijklmnopq...10
对于每个寻找更新解决方案的人来说,swift 3:
yourLabel.lineBreakMode = .byTruncatingMiddle;
斯威夫特4:
有人像我一样遇到这个问题,
你需要设置label.numberOfLines = 1
如果你将它设置为0,它将在空格处截断。
所以你的代码应该是这样的
label.numberOfLines = 1
label.lineBreakMode = .byTruncatingTail
label.adjustsFontSizeToFitWidth = false
尝试这个:
label.lineBreakMode = NSLineBreakByTruncatingMiddle;
从iOS 6.0不推荐使用UILineBreakModeMiddleTruncation
。
NSString类中有很多方法使用-length然后使用其中任何一个
– substringFromIndex:
– substringWithRange:
– substringToIndex:
使用NSString stringwithFormat创建一个临时字符串,将你从substringTo索引得到的所需字符和“.....”从字符串by 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并选择 - >属性检查器标签并更改为换行符 - >截断尾部
简单地截断字符的方法......
以下是如何使用它, NSLineBreakByTruncatingMiddle
UILabel *temp = [[UILabel alloc]initWithFrame:CGRectMake(5,75, 100, 50)];
[temp setBackgroundColor:[UIColor lightGrayColor]];
temp.lineBreakMode = NSLineBreakByTruncatingMiddle;
temp.text = @"HelloBoss997";
输出: Hello...s997
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.