Jak mogę utworzyć multilinię UILabel
w kreatorze interfejsów dla iOS? Próbowałem, UITextView
ale nie do końca odpowiadało to moim potrzebom.
Jak mogę dodać multilinię (tekst) na etykiecie?
ios
objective-c
swift
uilabel
line-breaks
Samuli Lehtonen
źródło
źródło
n
. Zamiast tego ustaw go na 0 (rodzaj nieskończoności). Sprawdź odpowiedź vijaya poniżej.Odpowiedzi:
Możesz użyć
numberOfLines
właściwości, która definiuje maksymalną liczbę wierszy, jaką może mieć etykieta. Domyślnie jest to1
. Ustawienie go na0
oznacza, ż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:
źródło
width
z twoją wytwórnią?Naciśnij Control+, Enteraby dodać wiersz w UILabel w Interface Builder / Storyboard.
źródło
Dzięki AppleVijay!
Również do wywołania sizeToFit, na przykład:
label.lineBreakMode = UILineBreakModeWordWrap; label.numberOfLines = 0; [label sizeToFit];
Wysokość zostanie obliczona automatycznie.
źródło
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;
źródło
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
Uwaga: Nie jest wymagane ustawianie
Minimum Font Scale
, ale dobrze jest mieć minimalny współczynnik skali, aby dopasować tekst do ramki etykiety.źródło
Liczba wierszy jest widoczna w IB z Plain UILabels ustawionym w polu wierszy na 0. Utworzy wiele linii zgodnie z przewidzianym miejscem na etykietę.
źródło
W systemie iOS7 (Xcode5) należy ustawić linie UILabel
0
na nieograniczoną liczbę wielokrotnych danych wejściowych w scenorysie.Najważniejsze jest, aby ustawić
height of the UILabel
puszkę na linie wejścia, które zamierzasz ustawić.źródło
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};
źródło
Jeśli ustawisz właściwość numberOfLines na 0, etykieta automatycznie dostosuje się do wymaganej liczby wierszy danego tekstu.
źródło
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ć.
źródło
W przypadku kodu X 7.2
- Wybierz UILabel
- Inspektor atrybutów
- 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 .
źródło