10

UITextViewaと aUILabelをカスタム フォントを使用するように設定しました。(これは縦にミラーリングされたモンゴル語フォントですが、効果がわかるように英語のテキストも含めました。) Interface Builder では単語が表示されますが、シミュレーターではほとんどの文字がUITextView空のボックスになっています。奇妙なことに、UILabeldo の文字はシミュレーターで正しく表示されます。

UITextViewそれらを同様に表示するにはどうすればよいですか?

ここに画像の説明を入力

ノート:

  • Xcode バージョン 6.3.2 を使用しています。この SO Q&Aから、カスタム フォントは IB の Xcode 6 で動作するはずであることがわかりました。
  • UITextViewプロジェクトにフォント ファイルを追加し、と の両方のカスタム フォント リストから選択しましたUILabel
  • プロジェクトに「アプリケーションによって提供されるフォント」キーを追加し、Info.plistそれにカスタムフォントを追加しました。 ここに画像の説明を入力
  • この質問UITextViewは非常に似ています(ただし、問題について言及していないため異なりUILabelます)。この記事の執筆時点では、その質問の OP は、投票数の多い回答が役に立ったかどうかを示していません。その回答のコードを実行して、フォントが本当にバンドルに含まれていることを確認しました。バンドルに含まれていることを確認する次の結果が得られたため、それでも問題は解決しません。

    Family : ChimeeWhiteMirrored
        Font : ChimeeWhiteMirrored
    

誰かが私の間違いを見たり、他のアイデアを持っていますか?

アップデート

@darkheartfeltの反対票を受け取り、以下の私の回答にコメントした後、何かを見逃したのではないかと考えて、元の問題を再現しました。iOS 9 では、シミュレーターでのフォントの表示が多少異なりますが、基本的な問題は依然として存在します。IB では問題なく表示されますが、シミュレーターでは表示されません。

ここに画像の説明を入力

問題は次のように再現できます (Xcode 7.1.1 を使用)。

  1. 新しいシングル ビュー プロジェクトを開始します。
  2. プロジェクトにフォントを追加します (関連する github プロジェクトからダウンロードできます)。
  3. Info.plist ファイルに、「アプリケーションが提供するフォント」をフォント名「ChimeeWhiteMirrored.ttf」で追加します。
  4. ターゲットの「Copy Bundle Resources」に ChimeeWhiteMirrored.ttf が含まれていることを確認します。
  5. をストーリーボードに追加しUITextViewます。
  6. IB 属性インスペクターに次のテキストを貼り付けます。1-10:           one two three four five six seven eight nine ten
  7. IB Attributes インスペクターで、フォントを Custom に、ファミリーを ChimeeWhiteMirrored に設定します。

これにより、特殊文字の問題が再現されます。以下の回答で説明したように、この問題を解決する唯一の方法は、コードでフォントを設定することです。

import UIKit
class ViewController: UIViewController {

    @IBOutlet weak var textView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // set custom font
        textView.font = UIFont(name: "ChimeeWhiteMirrored", size: (textView.font?.pointSize)!)
    }
}

私が間違っているか、何かが欠けている場合は、お知らせください。それまでは、以下の受け入れられた回答を引き続き使用する必要があります。

4

4 に答える 4

1

2 つのカテゴリ クラスを作成する

-------UILabel+ChimeeWhiteMirrored.h--------------

#import <UIKit/UIKit.h>

@interface UILabel (ChimeeWhiteMirrored)
@property (nonatomic, copy) NSString* fontNamelight;
@property (nonatomic, copy) NSString* fontNamebold;
@property (nonatomic, copy) NSString* fontNameboldIltalic;
@property (nonatomic, copy) NSString* fontNameRegular;
@end

--------------------------------------------
-------UILabel+ChimeeWhiteMirrored.m--------------

 #import "UILabel+ChimeeWhiteMirrored.h"

 @implementation UILabel (ChimeeWhiteMirrored)


 - (NSString *)fontNamelight {
     return self.font.fontName;
 }
 - (NSString *)fontNamebold {
     return self.font.fontName;
 }
 - (NSString *)fontNameRegular {
     return self.font.fontName;
 }

 - (NSString *)fontNameboldIltalic {
     return self.font.fontName;
 }



 - (void)setFontNameRegular:(NSString *)fontName {
     self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
 }

 - (void)setFontNamelight:(NSString *)fontName {
     self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
 }

 - (void)setFontNamebold:(NSString *)fontName {
     self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
 }

 - (void)setFontNameboldIltalic:(NSString *)fontName {
     self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
 }




 @end

--------------------------------------------

そして、ttf ファイルの名前をプロパティからラベルに直接追加するよりも、プロジェクト コード フォルダーに ttf ファイルを追加します。

ここに画像の説明を入力

于 2015-06-24T06:21:27.723 に答える
1

webfont を使用している場合は、.ttf ファイルをダウンロードしてプロジェクトにドロップします。xcodeで必要に応じて、コピー項目にチェックマークを付けるのを忘れないでください

次にこれを情報 plist に追加します

<key>UIAppFonts</key>
    <array>
        <string>Your fontname.ttf</string>
        <string>Bakersfield Bold.ttf</string>
   </array>

次に、フォントファミリー名を見てください。フォントファイルにもあります。ダウンロードした場所から、そこにもアクセスできます。ttfファイル名が次のフォントを追加したように:このフォント名のBakersfield Bold.ttfは次のとおりです:Bakersfield-Bold お気に入り

UIFont *helvFont = [UIFont fontWithName:@"Bakersfield-Bold" size:14.0];
于 2018-03-29T05:28:59.817 に答える