0
ラベルがあり、その幅は100です。 'ABC'、 'ABCD'、 'ABCDE'のような文字列もあります。ラベルに ' AB C '、' ABC D '、' ABCDE '。これを行うにはどうすればいいですか?UIlabelで文字列を整列するにはどうすればいいですか?
ラベルがあり、その幅は100です。 'ABC'、 'ABCD'、 'ABCDE'のような文字列もあります。ラベルに ' AB C '、' ABC D '、' ABCDE '。これを行うにはどうすればいいですか?UIlabelで文字列を整列するにはどうすればいいですか?
NSAttributedString
とNSKernAttributeName
を文字間のスペースに使用できます。私は開発のためのオブジェクト-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
}
}
まあ:私はあなたの目的のためのシンプルなサブクラスを作成しましたアイディア。 –
これからあなたの質問に(またはタグを介して)それを明記してください。 –