2013-01-10 15 views
5

Możliwe zduplikowane:
Measuring the pixel width of a string in Objective CSkróć NSString, aby dopasować rozmiar?

używać [ciąg drawInRect:] Sposoby i chciałby, że łańcuch jest obcinana do maksymalnej długości, która pasuje w tym rozmiarze. Nie jest to tak proste, jak ustalenie liczby znaków w linii, ponieważ każda litera ma inną szerokość. Powód, dla którego chcę znaleźć miejsce, w którym ciąg nie jest już widoczny, pozwala mi dodawać elipsy na końcu łańcucha.

+1

Pytanie oznaczone jako duplikat wyjaśnia, jak mierzyć NSString, a nie jak je skracać. – picciano

+1

Oto sposób, aby to zrobić: '- (NSString *) stringByTruncatingToWidth: (CGFloat) atrybuty szerokości: (NSDictionary *) textFontAttributes { CGSize size = [self sizeWithAttributes: textFontAttributes]; if (size.width <= width) { return self; } dla (int i = 2; i picciano

Odpowiedz

0

Gdzie chcesz użyć tego ciągu? Jeśli jest w UILabel, możesz użyć NSLineBreakMode = NSLineBreakByTruncatingTail.

2

Sprawdź dokumentację drawInRect:withAttributes: w NSString Additions Reference. W sekcji „Stałe” znajdziesz opcję, że robi to, co chcesz automatycznie:

NSStringDrawingTruncatesLastVisibleLine obcina i dodaje znak wielokropka do ostatniej widocznej linii, jeśli tekst nie mieści się w granicach określonych.

1

Możesz użyć, jeśli rozwiązanie podane przez @Mundi jest niewystarczające lub musisz wiedzieć, ile tekstu pasuje.

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size 

w pętli zmniejszając rozmiar tekstu, dopóki nie pasuje.

Powiązane problemy