2017-01-19 6 views
1

私は、縦線で数字の配列を表示しているUILabelを持っています。ただし、2桁以上の数字を別々の行に分割しています。これをどうすれば解決できますか?UILabel sizeTo分割数を割り出す

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

任意の助けもいただければ幸いです。

ありがとうございます。

+0

が、あなたはどちらか 'NSString''サイズ(属性を使用することができます 'UILabel'の幅を増やしています) 'メソッドを使って文字列の長さを計算するか、単に' UILabel'が取り込む文字列の長さを格納するのに十分な長さであることを確認します。 'UILabel'プロパティ' numberOfLines'を1に設定して単語の折り返しがない場合は、プロパティ 'adjustFontSizeToFitWidth'をtrueに設定すると、文字列はあなたのラベルに合ってください。 –

+0

syllableLabe.numberOfLines = 4を使用してください。 – rvx

答えて

0

セットラベル幅、高さ、およびラインアウト入れ

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!) 

の設定数は

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