2014-05-12 9 views
10

Próbuję wyświetlić UILabel z 2 linie z czymś takim:UILabel z 2 liniami, jak obcinać każdą linię niezależnie?

"Here is the first line (a long one) and that's it" 
"And this is the second line with random number of chars" 

Z Przybliżanie Tail wyświetla to:

"Here is the first line (a long one) and that's ..." 

Moim celem jest wyświetlacz:

"Here is the first line (a long .." 
"And this is the second line wit.." 

Czy można to zrobić z UILabel ustawionym na 2 linie i bez użycia 2 UILabel's?

+0

Czy w tekście występują przerwy linii? jeśli tak, można obliczyć długość tekstu dla danych ustawień kontrolnych i pojedynczo obciąć linie. W przeciwnym razie nie rozumiem dokładnie tego, co chcesz osiągnąć. –

+0

Przepraszam, zrobiłem to i działa. Ale kiedy ekran zostanie obrócony do krajobrazu, chciałbym, aby każda linia "rozszerzyła się" i dlatego o to pytam. Jakiekolwiek myśli ? –

+0

Dobrze, musisz powtórzyć obliczenia za każdym razem, gdy obszar rysunku lub tekst zostanie zmieniony. Można tego dokonać przez podklasę 'UILabel' i przesłonięcie' setText: 'i' layoutSubviews', chociaż ta pierwsza może nie pokrywać wszystkich ustawiaczy tekstu, a ta ostatnia może nie być najlepszą metodą zmiany tekstu, strzeż się tworzenia nieskończonego rekurencja. –

Odpowiedz

-4

Najpierw należy ustawić liczbę linii na 0 (nieskończona liczba linii);

textLabel.numberOfLines = 0; 

Następnie można złamać gdziekolwiek chcesz w ten sposób:

textLabel.text = "str1 \n str2" 
+0

- 1: Spróbuj utworzyć przykładowy projekt ... nie będzie działać z jedną wersją UILabel ... –

+0

Problem nie dotyczy łamania linii, jest obcinaniem. To nie pomoże. –

-2

podzielić ciąg na \n utworzyć dwa sznurki. Następnie utwórz 2 zestawy UILabel o numerach numberOfLines = 1 i lineBreakMode = .ByTruncatingTail. Układaj je w widoku, jeden na drugim.

+0

Pytanie dotyczy konkretnie jednej etykiety, a nie dwóch. –

Powiązane problemy