2016-05-13 34 views
7

Używam ContextLabel do analizowania @, # i adresów URL. Jest to najlepsze rozwiązanie, które znalazłem, ponieważ rozmiar jest poprawny i nie wpływa na wydajność. Najpierw analizuje ciąg na wejściu i konwertuje go na NSAttributedString, a następnie przypisuje go do attributedText właściwości UILabel. Wszystko działa zgodnie z oczekiwaniami, z wyjątkiem ogona obcinania - to bardzo błędne (patrz rys poniżej)NSAttributedString tail truncation w UILabel

enter image description here

Gdzie mam zacząć kopać - Czy to źle na atrybuty przypisane ciąg? Lub problem z układem etykiety? Dzięki!

+0

Czy ciężko kodowania szerokość tej etykiecie? – Feroz

Odpowiedz

14

miałem ten problem i poprawiony przez dodanie NSParagraphStyle określające pożądany tryb przerwania linii:

//assuming myString is an NSMutableAttributedString 
    let paragraphStyle = NSMutableParagraphStyle() 
    paragraphStyle.lineBreakMode = .byTruncatingTail 

    let range = NSRange(location: 0, length: myString.mutableString.length) 
    myString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: range) 

Patrz Word wrap for NSMutableAttributedString dalszego odniesienia.

0

Podążanie również działa niezależnie od użycia AttributedText lub zwykłego tekstu.
Upewnij się, aby dodać poniższy wiersz po ustawieniu AttributedText i czcionki na etykiecie:

label.lineBreakMode = .byTruncatingTail