1

ストーリーボードで UILabel をデザインすると、それらを属性付きテキストとして設定でき、Arial Narrow フォントを設定できます。しかし、上記のコードをプログラムで使用すると、次のようになります。

   NSRange auxRange = NSMakeRange(0, [myString length]);
   NSMutableAttributedString *attrStr = [myLabel.attributedText mutableCopy];
   UIFont *newFont = [UIFont fontWithName:@"Arial Narrow" size:17];
   [attrStr addAttributes:@{ NSFontAttributeName : newFont } range:auxRange];
   myLabel.attributedText = attrStr;

newFont の nil へのポインタがあります。これは、コンパイラが Arial Narrow をフォント名として見つけられなかったために発生します。

私の質問は、なぜ Storyboard で Arial Narrow を設定できるのに、コードで同じことができないのでしょうか? 可能であれば、何が間違っていますか?

4

4 に答える 4

4

電話機のフォント リストを印刷します。

for (NSString *familyName in [UIFont familyNames]) {
        for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
            NSLog(@"%@", fontName);
        }
    }

次に、追加するフォントの名前を確認します。そこにある必要があります。

印刷された名前を正確に使用してください。

于 2013-10-08T14:27:49.047 に答える
1

Interface Builder は、iOS で使用可能なフォントではなく、OS X システムにインストールされているフォントのリストを表示します。

ちなみに、Arial Narrow を使用している理由を教えてください。iOS の HelveticaNeue-Light を見てみましょう。

于 2013-10-08T16:37:46.050 に答える