2017-09-19 6 views
3

私は、水平スタックビューコントローラで2つのラベルがあります。スウィフト切り捨てラベル代替テキスト

[This is... This is...]

が代替とラベルを提供する方法があります:

labelA.text = "This is text number A" 
labelB.text = "This is text number B" 

彼らは切り捨てされているが

labelA.alternateText = "A" 
labelB.alternateText = "B" 
のように、元のテキストを切り捨てる場合は表示するテキスト10

それは

[A B ]

が表示されますが、それは

答えて

3

をできたあなたはこのような何かができれば、まだ両方のラベルのフルテキストを表示していました:

1:かどうかをチェックするために拡張機能を追加しますあなたのラベルは切り捨てられます

extension UILabel { 
    var isTruncated: Bool { 
     guard let labelText = text else { 
      return false 
     } 
     let labelTextSize = (labelText as NSString).boundingRect(
      with: CGSize(width: frame.size.width, height: .greatestFiniteMagnitude), 
      options: .usesLineFragmentOrigin, 
      attributes: [NSFontAttributeName: font], 
      context: nil).size 

     return labelTextSize.height > bounds.size.height 
    } 
} 

2:元の文字列を格納する辞書を追加します

var dict = [Int:Any]() 

3:あなたはあなたのラベルを追加

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 30, height: 50)) 
label.text = "This is text number A" 
label.tag = 0 

4(キーを表します)それらにタグを追加します。ラベルが切り捨てられた場合、それは彼らがデフォルト値を追加している場合は、チェックして、あなたの辞書に元の値を格納します。

if label.isTruncated { 
    dict.updateValue(label.text, forKey: label.tag) 
    label.text = "A" 
} 

5:

let original = dict[0] // for tag 0 for example 
元の値を取り戻すために10
関連する問題