Etykieta wielowierszowa systemu iOS w Kreatorze interfejsów

133

Jak mogę utworzyć multilinię UILabelw kreatorze interfejsów dla iOS? Próbowałem, UITextViewale nie do końca odpowiadało to moim potrzebom.

Jak mogę dodać multilinię (tekst) na etykiecie?

Samuli Lehtonen
źródło
Czy możesz wyjaśnić, dlaczego id nie odpowiadał Twoim potrzebom? TextView z atrybutem tylko do odczytu jest taki sam jak etykieta wielowierszowa.
Shreesh,
Wygląda na to, że nie ma właściwości koloru podświetlonego tekstu.
Samuli Lehtonen
7
Dla innych odwiedzających to pytanie, nie stosuj się do zaakceptowanej odpowiedzi ustawiania linii na 5 lub n. Zamiast tego ustaw go na 0 (rodzaj nieskończoności). Sprawdź odpowiedź vijaya poniżej.
GoodSp33d

Odpowiedzi:

179

Możesz użyć numberOfLineswłaściwości, która definiuje maksymalną liczbę wierszy, jaką może mieć etykieta. Domyślnie jest to 1. Ustawienie go na 0oznacza, że ​​etykieta będzie miała nieograniczoną liczbę wierszy .

Możesz to zrobić w kodzie:

textLabel.numberOfLines = 5 // for example

Lub w programie Interface Builder:

akashivskyy
źródło
Próbowałem, to działa, kiedy piszę etykietę, ale kiedy naciskam Enter, aby zaakceptować, wszystko idzie w jednej linii.
Samuli Lehtonen
3
A co widthz twoją wytwórnią?
akashivskyy
8
Ok, mam to teraz, zwiększyłem wysokość, to dało. Dzięki!
Samuli Lehtonen
Możesz ustawić linie na 0 dla nieograniczonej liczby linii.
paulmelnikow
2
Zobacz także tę odpowiedź, która wyjaśnia, jak wpisać etykietę wielowierszową w IB: stackoverflow.com/a/992511/893113
paulmelnikow
118

Naciśnij Control+, Enteraby dodać wiersz w UILabel w Interface Builder / Storyboard.

user1233894
źródło
2
Dzięki, właśnie to próbowałem zrobić :)
mcont
To powinno być rozwiązanie!
SunnySonic
14
Niezłe. Ale "Q" nie jest chyba konieczne
Rendel
1
@Oliver Logic nie wychodzi z Xcode ... Nie czytałeś poprawnie. Powiedział CONTROL + Q + ENTER (a nie CMD + Q) .. Ale Rendel ma rację, wystarczy tu tylko CONTROL + ENTER.
gaskbr
1
@Logic nie zamyka Xcode ... Nie czytałeś poprawnie. Powiedział CONTROL + Q + ENTER (a nie CMD + Q) .. Ale Rendel ma rację, wystarczy tu tylko CONTROL + ENTER.
gaskbr
47

Dzięki AppleVijay!

Również do wywołania sizeToFit, na przykład:

label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];

Wysokość zostanie obliczona automatycznie.

Bogdana
źródło
11
Uwaga: UILineBreakModeWordWrap jest przestarzałe od iOS6. Użyj [label setLineBreakMode: NSLineBreakWordWrapping]; zamiast.
John Feagans
5
Brak „By”. label.lineBreakMode = NSLineBreakByWordWrapping
user1872384
1
użyj NSLineBreakMode.ByWordWrapping zamiast UILineBreakModeWordWrap do szybkiego
Deb
12

ustaw szerokość etykiety na małą, a następnie użyj IB, aby ustawić podziały wierszy na zawijanie słów

lub używaj z takim kodem

Znalazłem rozwiązanie.

Wystarczy dodać następujący kod:

textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;
Vijay-Apple-Dev.blogspot.com
źródło
6

Ustaw liczbę linii na zero dla dynamicznych informacji tekstowych, będzie to przydatne, gdy tekst się zmienia.

Programowo (Swift 3)

var label = UILabel()
let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
label.text = stringValue
label.numberOfLines = 0 // Set 0, if number of lines not specified.
label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame

Korzystanie z Inetrface Builder

wprowadź opis obrazu tutaj

Uwaga: Nie jest wymagane ustawianie Minimum Font Scale, ale dobrze jest mieć minimalny współczynnik skali, aby dopasować tekst do ramki etykiety.

Krunal
źródło
Jak ustawić zmienną wysokości etykiety na podstawie zawartego w niej tekstu?
Renascent
@Renascent - Na liście rozwijanej „Autoshrink” znajduje się kolejna wartość - Minimalny rozmiar czcionki, który może rozwiązać problem.
Krunal
2

Liczba wierszy jest widoczna w IB z Plain UILabels ustawionym w polu wierszy na 0. Utworzy wiele linii zgodnie z przewidzianym miejscem na etykietę.

siddhant
źródło
1

W systemie iOS7 (Xcode5) należy ustawić linie UILabel 0na nieograniczoną liczbę wielokrotnych danych wejściowych w scenorysie.
Najważniejsze jest, aby ustawić height of the UILabelpuszkę na linie wejścia, które zamierzasz ustawić.

Rzemieślnik
źródło
0
textLabel.lineBreakMode = UILineBreakModeWordWrap;

textLabel.numberOfLines = 0;

CGSize size =  [[[arrNewsFeed objectAtIndex:row] objectForKey:@"c"]  sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(188, CGFLOAT_MAX)
                                                                     lineBreakMode:NSLineBreakByTruncatingTail];

textLabel.frame = (CGRect){.origin = cell.lblNewsDescription.frame.origin, .size = size};
Tanvi Jain
źródło
0

Jeśli ustawisz właściwość numberOfLines na 0, etykieta automatycznie dostosuje się do wymaganej liczby wierszy danego tekstu.

Pablo Marrufo
źródło
0

Walczyłem z tym przez długi czas. Chciałem tylko, aby tekst mojej etykiety pojawił się w drugiej linii. Ale cokolwiek zrobię, po prostu przepełni pole UILabel. U mnie zmiana inspektora autorealizacji rozmiaru zadziałała. Prosta naprawa.

Może komuś, kto szuka czegoś podobnego, może się przydać.

Harshal Karande
źródło
-2

W przypadku kodu X 7.2

  1. - Wybierz UILabel

  2. - Inspektor atrybutów

  3. - Tekst - wybierz Przypisane

Następnie możesz zobaczyć więcej atrybutów, które możesz dodać do swojej etykiety, w której możesz również znaleźć liczbę wierszy . Które sprawiają, że Twoja etykieta jest wielowierszowa .

Obraz X-Code dla wielowierszowego UILabel

codeCraft
źródło
Liczba linii jest widoczna w IB z Plain UILabels.
Graham Lea