2015-08-11 9 views
6

Jak utworzyć UILabel z tego rodzaju formatem tekstu? Czy używałbyś NSAttributedString?NSAttributedString z zakładkami

enter image description here

+0

http://stackoverflow.com/questions/6699930/how-can-i-use-t-t-tab-operator- do-formatowania-instrukcji-w kolumnach – Mattias

+2

To bardziej dotyczy układu, który atrybuty znaków, więc nie sądzę, że jest to coś odpowiedniego dla 'NSAttributedString'. – trojanfoe

+0

Powinieneś przyjrzeć się użyciu ograniczeń układu. – WMios

Odpowiedz

16

NSAttributedString mogą tworzyć kolumn tekstowych z tabulacji. Jest to podobne do sposobu, w jaki odbywa się to w edytorze tekstu z takimi samymi ograniczeniami.

let text = "Name\t: Johny\nGender\t: Male\nAge\t: 25\nFavourites\t: Reading, writing" 

let paragraphStyle = NSMutableParagraphStyle() 
paragraphStyle.tabStops = [NSTextTab(textAlignment: NSTextAlignment.Left, location: 150, options: [:])] 
paragraphStyle.headIndent = 150 

label.attributedText = NSAttributedString(string: text, attributes: [NSParagraphStyleAttributeName: paragraphStyle]) 

Screenshot of label rendering the above attributed string

tabStops zapewnia pozycji punktowych miejscach nadal tekst po każdej karcie. Tutaj zrobiliśmy jedną kartę w rozsądnym punkcie po pierwszej kolumnie. headIndent informuje etykietę, że zawijany tekst ma być wcięty o ustaloną kwotę, więc przechodzi do następnego wiersza.

Ograniczenia z tego podejścia są:

  1. Zakładka lokalizacja przystanek jest wartością punktu stałego więc musisz wiedzieć, co chcesz. Jeśli wybrana wartość jest mniejsza niż szerokość pierwszej kolumny dla niektórych linii, te linie będą wcięte do innej lokalizacji.
  2. Zawijanie działa tylko wtedy, gdy ostatnia kolumna jest tą, która się zawija. Ponieważ twoja druga kolumna była poprzedzona ":" Możesz albo po prostu zwiększyć swój headIndent, albo też podzielić ":" na \t:\t i ustawić drugi tabulator. Jeśli nie pozwalasz na zawijanie tekstu, nie stanowi to problemu.

Jeśli ograniczenia te są zbyt restrykcyjne, można zmienić strukturę etykiety tak, aby była zbiorem wielu etykiet z ograniczeniami automatycznego układu.

Powiązane problemy