2017-08-29 7 views

答えて

1

NSAttributedStringNSKernAttributeNameを文字間のスペースに使用できます。私は開発のためのオブジェクト-Cを使用して、私の質問を見ていただきありがとうございます、私は私のissue.Itが良いために有用であるあなたの答えを読んでいるのです、

class StretchingLabel: UILabel { 

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

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     sharedInit() 
    } 

    private func sharedInit() { 
     self.lineBreakMode = .byClipping 
     self.textAlignment = .center 
    } 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     realignText() 
    } 

    private var scale: CGFloat { return UIScreen.main.scale } 

    override var text: String? { 
     didSet { 
      realignText() 
     } 
    } 

    private func realignText() { 
     guard let text = text else { return } 

     let textWidth = ceil((text as NSString).boundingRect(with: self.frame.size, options: [], attributes: [NSFontAttributeName: self.font], context: nil).width * scale)/scale 
     let availableWidth = self.frame.width - textWidth 
     let interLetterSpacing = availableWidth/CGFloat(text.characters.count - 1) 

     let attributedText = NSAttributedString(string: text, attributes: [NSFontAttributeName: self.font, NSKernAttributeName: interLetterSpacing]) 
     self.attributedText = attributedText 
    } 

} 
+0

まあ:私はあなたの目的のためのシンプルなサブクラスを作成しましたアイディア。 –

+0

これからあなたの質問に(またはタグを介して)それを明記してください。 –

関連する問題