2017-01-19 8 views
1

Ich habe ein UILabel, das ein Array von Zahlen in einer vertikalen Linie anzeigt; es zerlegt jedoch Zahlen, die aus zwei oder mehr Ziffern bestehen, in separate Zeilen. Wie kann ich das lösen?UILabel sizeToFit, das Zahlen zerlegt

syllableArr = ["6", "5", "5", "11"] 

func updateSyllableLabel() { 

    //Updates content of syllable label 

    let multiLineString = self.syllableArr.joined(separator: "\n") 
    syllableLabel.text = multiLineString 
    syllableLabel.numberOfLines = 0 
    syllableLabel.lineBreakMode = NSLineBreakMode.byWordWrapping 
    syllableLabel.sizeToFit() 
} 

Here is a screenshot of what this code produces

Jede Hilfe sehr geschätzt würde.

Vielen Dank im Voraus.

+0

die Breite des 'UILabel' erhöhen, können Sie entweder verwenden können' 'NSString' Größe (Attribute) '' Methode, um die berechnete Länge Ihres Strings zu erhalten oder einfach sicherzustellen, dass Ihr 'UILabel' lang genug ist, um eine beliebige Länge des Strings aufzunehmen. Sie können auch die' UILabel' -Eigenschaft 'numberOfLines' auf 1 setzen Kein Wortumbruch, dann setze die Eigenschaft 'adjustFontSizeToFitWidth' auf 'true' und die Zeichenfolge wird auf 'verkleinern' gesetzt passen Sie in Ihr Etikett. –

+0

Verwenden Sie silbileLabe.numberOfLines = 4. – rvx

Antwort

0

Set Etikettenbreite, Höhe und festgelegte Anzahl von Zeilen

let syllableArr = ["6", "5", "5", "11"] 
    let multiLineString = syllableArr.joined(separator: "\n") 
    let syllableLabe = UILabel(frame: CGRect(x: 10, y: 20, width: 10, height: 80)) x,y width and height set according you 

    syllableLabe.text = multiLineString 
    syllableLabe.numberOfLines = 4 
    syllableLabe.lineBreakMode = NSLineBreakMode.byWordWrapping 
    print(“label text ===%@",syllableLabe.text!) 

Out Put ist

label text ===%@6 
        5 
        5 
        11 

if you want to break 11 
let str: String = syllableArr[3] 
str = ""11" 
let digits = String(str).characters.map { Int(String($0))! } 
print("digits is ---%@",digits) and create new array as this 
let newsyllableArr = ["6", "5", "5", "1","1"] and use same logic above 
Verwandte Themen