1. ホーム
  2. ios

[解決済み] ストーリーボードでカスタムフォントを使用した属性文字列が正しく読み込まれない

2022-12-24 07:11:02

質問

私たちのプロジェクトでは、カスタムフォントを使用しています。それはXcode 5でうまく動作します。Xcode 6 では、プレーン テキスト、コード内の属性付き文字列で動作します。しかし、ストーリーボードで設定されたこれらの帰属文字列は、ストーリーボードではすべて正しく見えますが、シミュレータまたはデバイスで実行すると、すべて Helvetica に戻ります。

Xcode 6 や iOS 8 SDK のバグなのか、カスタムフォントの使用方法が Xcode 6 / iOS 8 で変更されたのか、よくわかりません。

どのように解決するのですか?

私の場合、修正方法は IBDesignable クラスを使うことでした。

import UIKit

@IBDesignable class TIFAttributedLabel: UILabel {

    @IBInspectable var fontSize: CGFloat = 13.0

    @IBInspectable var fontFamily: String = "DIN Light"

    override func awakeFromNib() {
        var attrString = NSMutableAttributedString(attributedString: self.attributedText)
        attrString.addAttribute(NSFontAttributeName, value: UIFont(name: self.fontFamily, size: self.fontSize)!, range: NSMakeRange(0, attrString.length))
        self.attributedText = attrString
    }
}

Interface Builderでこれを与える。

attributedstringは通常と同じように設定できますが、fontsizeとfontfamilyは新しく利用できるプロパティでもう一度設定する必要があります。

Interface Builder はデフォルトでカスタムフォントを使用しているため、この結果は となります。 という結果になり、私はアプリを構築するときにこれを好みます。

ノート

プレーン版ではなく、これを使用している理由は、属性付きラベルに行間などのプロパティを設定しているためで、プレーンのスタイルを使用した場合には利用できません。