私のプロジェクトでは、swift 3.0を使用しています。今は、次のクラス(UILabelサブクラス)を使用して、UILabelフレームの高さに基づいてフォントサイズを調整しています。 UILabelフレームの変更が発生すると、layoutSubviewsは比例フォントサイズを再計算します。NSMutableAttributedStringのフォントサイズをUILabelのフレームの高さに比例して調整します
class Label: UILabel {
// FIXME: - properties
var fontSize: CGFloat = 0
var frameHeight: CGFloat = 0
// FIXME: - proportional font size adjustment
override func layoutSubviews() {
super.layoutSubviews()
font = font.withSize(frame.size.height * (fontSize/frameHeight))
}
}
使い方:
private let id: Label = {
let label = Label()
label.textAlignment = .left
label.numberOfLines = 1
label.font = UIFont.systemFont(ofSize: 17, weight: .semibold)
label.textColor = UIColor(hex: 0x212121, alpha: 1)
label.fontSize = 17
label.frameHeight = 20
label.clipsToBounds = true
return label
}()
今、私は通常のテキストで太字、残りとしてUILabelのStringの一部を示したいと思います。だから私はこのスレッドでいくつかの助けを見つけた:Making text bold using attributed string in swift
私はNSMutableAttributedStringのために "Prajeet Shrestha"拡張を使用しています。 UILabelフレームの変更が発生した場合しかし、私は、私はこのNSMutableAttributedStringのフォントサイズを変更する方法
// "Prajeet Shrestha's" extension
extension NSMutableAttributedString {
func bold(_ text:String) -> NSMutableAttributedString {
let attrs:[String:AnyObject] = [NSFontAttributeName : UIFont(name: "AvenirNext-Medium", size: 12)!]
let boldString = NSMutableAttributedString(string:"\(text)", attributes:attrs)
self.append(boldString)
return self
}
func normal(_ text:String)->NSMutableAttributedString {
let normal = NSAttributedString(string: text)
self.append(normal)
return self
}
}
を得ていないのですか?
助けが必要です。
私はUILabelのフレーム幅に基づいて調整する必要はありません。フォントサイズをUILabelのフレームの高さに比例させたい – appleBoy21
応答に興味を示してくれてありがとう。しかし、私の質問の完全なシナリオを読んでください。私はNSMutableAttributedStringフォントサイズを変更し直したい。 – appleBoy21