2017-12-01 11 views
1

Xcode 9.xを使用しており、UILabel(InterfaceBuilder)で属性付きテキストを使用したいと考えています。Interface Builderで属性付きテキストを使用するSFフォントの使用方法

設定したい:システムフォント(San Fracisco)と一部の単語は太字のスタイルです。しかし、それは動作しません(イタリック作品ではなく太字 ...)。

私はXcodeプロジェクト内のすべてのサンフランシスコのフォントをインポートしない限り、私は(サンフランシスコのPro /ディスプレイ)システムフォントを選択することはできません(しかし、それは非常に重いです!:15MB)

をあなたはそれをしてください動作させるにはどうすればよいですか?どうも。

+2

属性付き文字列の設定は、IMOひどいUXを持っています。プログラムでテキストを設定し、 'UIFont.systemFont(ofSize:)'を使ってください。 – the4kman

+0

私は同意します。残念ながら私はこれを避けることを望んだ: '( – QLag

答えて

1

あなたが知っている限り、あなたはInterface Builder内でそれを厳密に行うことはできません。

ただし、囲みビューまたはラベルビュー自体をサブクラス化する場合、awakeFromNib()でフォントフェースを簡単にリセットし、ラベル用のInterface Builderから残りの設定をそのまま使用することができます。これにより、プログラムで最初から完全に作成する必要がなくなります。

属性、制約、アクションなど、通常どおりIBにラベルを設定します。プレビューには任意のフォントを使用します。スタイティングされたラベルのアウトレットをCtrlキーを押しながらドラッグし、次にawakeFromNibのフォントを切り替えるためのコードを使用するようにしてください。あなたのアプリが実行されると、IBですでに確立しているすべての属性、位置制約などと共に、システムフォントが使用されます。

[編集:IBから引き継が取得することはありません太字フォントの太さを、追加して修正しました。】例えば

:IBで

class EnclosingViewSubclass : UIView { 

    // The outlet you create for the label 
    @IBOutlet weak var styledLabel: UILabel! 

    // ... 

    override func awakeFromNib() { 
     super.awakeFromNib() 

     // setting the label's font face to the system font, including picking 
     // up the font-size you establish in InterfaceBuilder 
     styledLabel.font = UIFont.systemFont(ofSize: styledLabel.font.pointSize, 
              weight: UIFontWeightBold) 
    } 
} 
関連する問題