複数行のテキストを含むUILabelがいくつかありますが、行間隔が希望よりも大きくなっています。これを変更する方法はありますか?
質問する
11209 次
3 に答える
46
こんにちはこれは遅い返信ですが、1行の高さを変更してテキストをプレーンから属性に変更するのに役立つ場合があります
于 2013-10-23T10:30:55.660 に答える
2
iOS 6以降、Appleがに追加さNSAttributedString
れ、行間隔の変更UIKit
に使用できるようになりました。NSParagraphStyle
実際にNIBから変更するには、souvickcseの回答を参照してください。
于 2012-08-24T16:19:12.627 に答える
1
私はインターフェイスビルダーで属性付きテキストを使用するのが嫌いなので(私は常にIBのバグに遭遇します)、インターフェイスビルダーでUILabelに直接複数の行の高さを設定できるようにする拡張機能があります
extension UILabel {
@IBInspectable
var lineHeightMultiple: CGFloat {
set{
//get our existing style or make a new one
let paragraphStyle: NSMutableParagraphStyle
if let existingStyle = attributedText?.attribute(NSAttributedString.Key.paragraphStyle, at: 0, effectiveRange: .none) as? NSParagraphStyle, let mutableCopy = existingStyle.mutableCopy() as? NSMutableParagraphStyle {
paragraphStyle = mutableCopy
} else {
paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 1.0
paragraphStyle.alignment = self.textAlignment
}
paragraphStyle.lineHeightMultiple = newValue
//set our text from existing text
let attrString = NSMutableAttributedString()
if let text = self.text {
attrString.append( NSMutableAttributedString(string: text))
attrString.addAttribute(NSAttributedString.Key.font, value: self.font, range: NSMakeRange(0, attrString.length))
}
else if let attributedText = self.attributedText {
attrString.append( attributedText)
}
//add our attributes and set the new text
attrString.addAttribute(NSAttributedString.Key.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attrString.length))
self.attributedText = attrString
}
get {
if let paragraphStyle = attributedText?.attribute(NSAttributedString.Key.paragraphStyle, at: 0, effectiveRange: .none) as? NSParagraphStyle {
return paragraphStyle.lineHeightMultiple
}
return 0
}
}
于 2019-02-01T17:01:12.153 に答える