2013-10-13 5 views
10

Mam komórkę z multilinią UILabels, ale gdy etykieta tekstu nie pasuje do ramki, nie są wyświetlane żadne kropki. Jak mogę to naprawić?Jak dodawać kropki do UILabel, jeśli tekst nie pasuje do ramki

+2

Czy naprawdę potrzebujesz dodać nagrodę do tego. Istnieją setki odpowiedzi na tego rodzaju pytania. http://stackoverflow.com/questions/11302165/uilabel-linebreakmode-clip-doesnt-clip-text i https://www.google.co.uk/search?q=UILabel+lineBreakMode+&ie=utf-8&oe= utf-8 & rls = org.mozilla: en-US: official & client = firefox-a & gws_rd = cr & ei = cQiiUsPpBKTK0QXZuoHoDA proste wyszukiwanie google. – Popeye

+0

@Popeye próbowałem rozwiązać ten problem zgodnie z wcześniejszymi odpowiedziami, ale to mi nie pomaga. PS: Moja własność etykiety "numberOfLines" ustawiona na "2", jeśli jest równa "1", działa. –

+0

NumberOfLines ma domyślnie wartość 1. Spróbuj ustawić 0, jeśli nie znasz dokładnego numberOfLines i użyj metody sizeToFit z UILable. – iProgrammer

Odpowiedz

30

Czy próbowałeś tego?

yourLabel.adjustsFontSizeToFitWidth = NO; 
yourLabel.lineBreakMode = NSLineBreakByTruncatingTail; 

Przed iOS6 użycie UILineBreakModeTailTruncation

+0

Tak, ofc próbowałem.) –

+2

Myślę, że poprawną opcją jest 'NSLineBreakByTruncatingTail'. Ten, o którym wspomniałeś w swojej odpowiedzi, jest przestarzały. – Macondo2Seattle

+0

Próbowałem użyć NSLineBreakByTruncatingTail, a nie UILineBreakModeTailTruncation. –

2

Jeśli praca linebreakmode robi dla ciebie, innym rozwiązaniem jest rzeczywiście obliczyć długość ciąg zajmie i jeśli będzie dłuższy niż rozmiar etykiet , dodaj "..." sam.

Będziesz musiał grać z następującego kodu do obsługi dla wielu linii (ale idea jest podobna)

Weźmy na przykład oznaczyć (np detailLabel)

UILabel* detailLabel = cell.detailTextLabel; 
CGSize expectedDetailLabelSize = [detailLabel.text sizeWithFont:detailLabel.font 
              constrainedToSize:maximumLabelSize 
               lineBreakMode:detailLabel.lineBreakMode]; 
+0

Znam to rozwiązanie , ale jednocześnie mam nadzieję, że jest prostszy sposób.) –

3

do szybkiego 2,0 będzie

yourLabel.adjustsFontSizeToFitWidth = false; 
yourLabel.lineBreakMode = NSLineBreakMode.ByTruncatingTail 
+0

w Swift 4 wystarczy podać mały "b". like (yourLabel.adjustsFontSizeToFitWidth = false; yourLabel.lineBreakMode = NSLineBreakMode.byTruncatingTail) –

0

Dla SWIFT 3+

label.adjustsFontSizeToFitWidth = false; 
label.lineBreakMode = NSLineBreakMode.byTruncatingTail; 
Powiązane problemy