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?


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:


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.


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.


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;

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.


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ę.


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ć.


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};

0

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


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ć.


-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


Liczba linii jest widoczna w IB z Plain UILabels.
Graham Lea
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.