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?
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?
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 to 1
. Ustawienie go na 0
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:
width
z twoją wytwórnią?
Naciśnij Control+, Enteraby dodać wiersz w UILabel w Interface Builder / Storyboard.
Dzięki AppleVijay!
Również do wywołania sizeToFit, na przykład:
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];
Wysokość zostanie obliczona automatycznie.
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;
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.
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ć.
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};
Jeśli ustawisz właściwość numberOfLines na 0, etykieta automatycznie dostosuje się do wymaganej liczby wierszy danego tekstu.
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ć.