2017-12-20 31 views
2

UILabelの任意のテキストの前に空白を追加したいと思います。UILabelテキストに空白を追加する方法

私は次のように私はUILabelクラスを拡張することができると考えた:

class UILabel_iKK: UILabel { 

    override var text: String? { 
     didSet { 
      if let txt = self.text { 
       self.text = " " + txt 
      } 
     } 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 
} 
しかし、明らかに、これは(つまり、テキストの変更がdidSetが何度も何度も火災になり、無限ループにつながる

は何だろう。最もエレガントな方法でこれを行うための別の方法が

答えて

3

はい、それは可能だ、私はそれが好きではありませんが、次のコードは永遠にループしません:?。

これは動作するはずです
2

class Label_iKK: UILabel { 

    override var text: String? { 
     set(value) { 
      if let txt = value { 
       super.text = " " + txt 
      } 
     } 
     get { 
      return super.text 
     } 
    } 
} 
+0

AndreaとSpadの両方に感謝します。私はどうにかしてより一般的なように思えるので、実装のためにSpadsのアイディアをどうにか好みます。 – iKK

0

はあなたのアイデアのために、アンドレアとSPADSをあなたの両方をありがとう!

私は読み込み部に空文字列を追加しました。私はUI内で見てラベル内に追加の空白を入れたいだけですから(コードで扱うときは実際の値ではありません!)...

class UILabel_iKK: UILabel { 

    var myText: String? = "" 

    override var text: String? { 
     get { 
      if let txt = super.text { 
       if txt.count >= 3 { 
        return String(txt[3...]) 
       } else { 
        return super.text 
       } 
      } else { 
       return super.text 
      } 
     } 
     set(value) { 
     if let txt = value { 
      super.text = " " + txt // 3 white-spaces added here... 
      } 
     } 
    } 
} 
関連する問題