2016-09-05 18 views
0

UILabelheightは、それが保持するテキストによっては次のコードを使用しています。うまくいきます。しかし、私のUITableビューはデフォルトの高さで読み込まれますが、スクロールすると更新されます。私の値が私のUITableビューが読み込まれたときに更新されるために追加するものは何ですか?テキストに応じてUILabelの高さを計算する

私のコード:コードAlaways上記

messageOneLbl.numberOfLines = 0 
    messageOneLbl.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    messageOneLbl.text = messageOne 
    messageOneLbl.sizeToFit() 
    print("one label height is \(messageOneLbl.frame.height)") 

は、私は大きなデバイス用の小さな値を期待していた、すべてのiPhoneの画面サイズに同じ値を出力します。

+0

なぜデバイスごとに高さが異なると思いますか? –

+0

異なる幅の画面は異なる長さの文字列を保持するため – Max

答えて

0

、あなたがInterface BuilderでAutolayoutプロパティを使用している方法に依存しますコードは完全に問題ありません。また、> =(あなたが必要とする価値がある)以上の高さ制約を追加してください。問題を解決します。

0

あなたはそれのように、

func heightForLabel(text:String, font:UIFont, width:CGFloat) -> CGFloat{ 

    let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.max)) 
    label.numberOfLines = 0 
    label.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    label.font = font 
    label.text = text 

    label.sizeToFit() 
    return label.frame.height 
} 

この関数を呼び出し行うことができますし、それが高さを返し、自分のラベルにその高さを設定します。

ラベルの最初の高さ、幅、フォント、および文字列に依存します。同様にあなたのケースを管理してください!

0

それはあなたが可変の高さラベルを持つようにしたい場合にのみ、あなたのラベルを見つけるためにleftrigthtop制約を設定し、label.numberOfLines = 0

関連する問題