環境
Xcode 11.1
Swift 4.2
iOS13
事象
最新の環境で、ビルドするとUITextView UILabelのテキストが、明朝体風の Times New Romen へ変わってしまう問題が発生しました。
Debug View Hierarchy上で確認してみると Times New Romen というフォントが設定されてしまう。
暫定対応
NSAttributedStringを使う方法とFontを再設定する方法があります。
あくまで暫定対応なので、アップデートで治る可能性もあるため、急いで直したい場合は、以下で対応できました。
let stringAttributes: [NSAttributedStringKey : Any] = [.font : UIFont.systemFont(ofSize: 14.0)]
textView.attributedText = NSAttributedString(string: "text", attributes: stringAttributes)
or
// customクラスを作成する
class SystemFontTextView: UITextView {
override var text: String! {
didSet {
font = UIFont.systemFont(ofSize: font?.pointSize ?? 14)
}
}
}
参考
System font renders as Times New Roman in certain contexts
####追記:2019/10/08 18:30 現在、iOS 13.1.2
Xcode 11.1でも直らない
####追記:2020/05/15/ 18:00
CoreTextのログが出るが、使えている
[23824:577523] CoreText note: Client requested name ".PingFangSC-Regular", it will get TimesNewRomanPSMT rather than the intended font. All system UI font access should be through proper APIs such as CTFontCreateUIFontForLanguage() or +[UIFont systemFontOfSize:].