web-dev-qa-db-ja.com

カスタムフォントがプログラムで機能しないswift

Swift day-by-daycustom fonts でxcodeにカスタムフォントを追加する手順を実行しましたが、そのフォントをアプリのラベルに設定できませんプログラム的に。

var labeladd = UILabel(frame: CGRectMake(40, 50, 70, 22))
    //  label.center = CGPointMake(160, 284)
 ///  labeladd.font=UIFont.boldSystemFontOfSize(15)
   labeladd.font = UIFont(name:"Source Sans Pro",size:15)
    labeladd.textColor=UIColor.blackColor()
    labeladd.textAlignment = NSTextAlignment.Center
    labeladd.text = "this is custom fonts"
    myview.addSubview(labeladd)
28
bLacK hoLE

このフォントを追加したいとしましょう:_SourceSansPro-Regular.otf_

3つのステップ:

  1. フォントファイル_SourceSansPro-Regular.otf_をプロジェクトに追加します。必ず、[ターゲットに追加]でターゲットを選択してください。

enter image description here

ターゲットのビルドフェーズに移動し、それがバンドルリソースのコピーの下にあることを確認します。そうでない場合は、追加します。

enter image description here



2。ターゲットのInfoに移動します。新しいエントリを追加アプリケーションによって提供されるフォント次に、この値_SourceSansPro-Regular.otf_で新しいアイテムを追加します。

enter image description here



3。 OS X Font Bookアプリケーションを開き、フォントに移動してCommand + iを押します。 PostScript名を書き留め、その名前をSwiftコードで使用します。この場合は_SourceSansPro-Regular_です。 enter image description here



コードで:

labeladd.font = UIFont(name:"SourceSansPro-Regular", size:15)

102
Van Du Tran

フォントの名前がファイルの名前ではない場合があります。私は "NexaBook"という名前のNexaBook.otfフォントを使用しようとしていましたが、最終的には、フォントの正しい名前が "Nexa-Book"であることが問題でした。正しい名前を使用していることを確認するには、viewDidLoadに次のコードを記述し、フォントの名前を確認します。

for family: String in UIFont.familyNames
    {
        print(family)
        for names: String in UIFont.fontNames(forFamilyName: family)
        {
            print("== \(names)")
        }
    }

私の場合、私は得ました:

...
Nexa
== Nexa-Book
Avenir Next
== AvenirNext-Medium
== AvenirNext-DemiBoldItalic
== AvenirNext-DemiBold
...

私はこのアイデアを カスタムフォントをiOSアプリに追加する際のよくある間違い から得ています。カスタムフォントの使用に関する問題についての素晴らしい説明があります。

6
abanet

フレームワーク内にカスタムフォントを追加する場合は、使用する前に、アプリデリゲートにフォントを手動で読み込む必要があります。

Xcode:ダイナミックフレームワーク内でカスタムフォントを使用

0
Mocha

enter image description here (1)最初に「フォント」フォルダを選択し、それが選択されていることを確認します。

0
HafizAnser

ストーリーボードにはあるがフォントファミリーにはないフォントを取得していて、それをプログラムで設定できない場合は、Xcodeがフォントをコンパイルしていない可能性があることが原因です。それを解決するには:

  1. 必要なフォント(例:Roboto Bold)をストーリーボード上のUI要素のフォントとして設定します(例:UILabel)。
  2. プロジェクトを実行する
  3. 次に、フォントファミリ名を確認します。必要なフォント(例:Roboto Bold)の名前が表示されているはずです。
  4. これで、必要なフォント(例:Roboto Bold)をプログラムで設定できます:)
0
Shivani Bajaj