it-swarm.com.ru

Обрезать часть текста в UILabel

Мое требование заключается в том, что мне нужно отображать текст в метке таким образом, чтобы, если длина текста слишком велика для размещения в одной строке, мне нужно было обрезать ее в конце таким образом, чтобы только последние несколько символов (обычно число ч/б 1-1000, поэтому длина текста может варьироваться.) и текст перед тем, как он будет усечен с "...". 

Таким образом, текст будет выглядеть примерно так: «abcdefgijk ... 10»

Есть ли способ, которым я могу достичь этого?

9
user2990765
UILabel *contentLabel = [[UILabel alloc]initWithFrame:CGRectMake(50,100, 150, 30)];
contentLabel.text = @"abcdefghijklmnopqrstuvwxyz10";
contentLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;

Добавьте этот ярлык на ваш дисплей. Вы должны получить что-то вроде этого

abcdefghijklmnopq...10
13
Srinivasan N

Для всех, кто ищет более свежее решение, Swift 3:

yourLabel.lineBreakMode = .byTruncatingMiddle;
5
Melanie Journe

Swift 4:

Если кто-то столкнется с этой проблемой, как я, 

вам нужно установить свой label.numberOfLines = 1 

если он установлен в 0, он будет усечен в пробел.

поэтому ваш код должен выглядеть так 

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

Попробуй это: 

 label.lineBreakMode = NSLineBreakByTruncatingMiddle;

UILineBreakModeMiddleTruncation устарела с iOS 6.0.

2
Krishna Kumar

В раскадровке 

  1. Выберите метку, которую вы хотите обрезать символы.

  2. Выберите «Инспектор атрибутов».

  3. Под меткой атрибутов. Вы можете найти Line Break

 enter image description here

Готово.

1
iSrinivasan27

Если вы используете файл XIB ..

выберите -> UILabel и выберите -> тег инспектора атрибутов и перейдите в разрывы строк -> усечь хвост

просто способ обрезать символы ...

0
jeyachandran

Вот как это использовать, NSLineBreakByTruncatingMiddle

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

Результат : Hello...s997

0
Balram Tiwari

есть много методов в классе NSString use -length, а затем использовать любой из этих

– substringFromIndex:
– substringWithRange:
– substringToIndex:

создайте временную строку, используя NSString stringwithFormat, поместите нужные вам символы, которые вы получите из индекса substringTo, и «.....», а затем свои числа из строки substringFromIndex.

надеюсь это поможет 

0
Waseem05

Вы можете начать с поиска длины символов, которые можно поместить в строку, скажем, «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];
0
mak

У нас есть разные режимы Line Break для UILabel, такие как 

Усеченная голова, Усеченная середина, Усеченный хвост

В Xib вы можете установить режим Line Break, что вы хотите

0
Ome