[Swift]NSFontAttributeNameでFontサイズの変更が効かない

labelで表示している文字の一部分だけのフォントを変えようとしていましたが、うまくいかず、調べて対応しました。
注意:NSFontAttributeNameでUIFontを指定しても全然文字サイズが変わらない場合がある

やりたいこと

labelで表示している文字の一部分だけのフォントを変えたい。

方法

以下のストーリーボードでの設定が大事だった

label
 text
  Plain / Attributed

ここの設定をAttributedに変えたタイミングで、別の設定が追加された?ため(「wR hR」て表示されているやつ)

実装例

"100 点"という文字列を"100"の部分を赤文字、fontSize:52で表示させる

let score = "100"
let scoreLength = score.characters.count
let attrText = NSMutableAttributedString(string: score + " 点")
attrText.addAttribute(NSForegroundColorAttributeName,
                      value: UIColor.redColor(),
                      range: NSMakeRange(0, scoreLength))
attrText.addAttribute(NSFontAttributeName,
                      value: UIFont(name: "Helvetica Neue", size: 52.0)!,
                      range: NSMakeRange(0, scoreLength))
labelhoge.attributedText = attrText

全く同じ状況で、ハマっていた記事がありました。

  • SizeClassでハマった話…

https://qiita.com/AnzNetJp/items/b537c506ee53684c8096

コメント

タイトルとURLをコピーしました