2010-12-02 14 views

答えて

4

それがこの配列に存在するかどうチェック:

NSArray *fonts = [[NSFontManager sharedFontManager] availableFontFamilies]; 

[fonts containsObject:@"Times"]; 

containsObjectを呼び出すことによって、2つのオブジェクトを比較するためにisEqual:メソッドを使用しています。あなたはfonts、アレイ内のすべてのオブジェクトがNSStringであることを知っているので、それがない場合は、NO配列が@"Times"が含まれている場合は、YESを得るだろうことを知っている、と。

+0

もう少しリソースが集中的イアこと ノート? for文を使用する必要がありますか? –

+0

申し訳ありませんが、回答の本文に説明が追加されました。 –

+0

はフォントファミリは、太字、斜体などの異なるフォント(スタイル)を、持っているかもしれないことに注意してのは、言わせて...あなたはフォントファミリ、ないフォントをチェックしているように、完全に正しくないこと –

0

あなたは、いくつかのフォント(スタイルで構成することができますフォントファミリ()

NSFontDescriptor *helveticaNeueFamily = 
    [NSFontDescriptor fontDescriptorWithFontAttributes: 
     @{ NSFontFamilyAttribute: @"Helvetica Neue" }]; 
NSArray *matches = 
    [helveticaNeueFamily matchingFontDescriptorsWithMandatoryKeys: nil]; 

を見つけるための

https://developer.apple.com/library/mac/documentation/TextFonts/Conceptual/CocoaTextArchitecture/FontHandling/FontHandling.html

を参照する必要があり、その後、あなたは太字、イタリックにも確認することができ、等(正確な名前)

- (BOOL)isFontNameInstalledInSystem { 

    if (self.fontName == nil) { 
     return NO; 
    } 

    NSFontDescriptor *fontDescriptor = [NSFontDescriptor fontDescriptorWithFontAttributes:@{NSFontNameAttribute:self.fontName}]; 
    NSArray *matches = [fontDescriptor matchingFontDescriptorsWithMandatoryKeys: nil]; 

    return ([matches count] > 0); 
} 

あなたにも使用します(ただし、適切なフォーマットでフォント名を持つようにしてください)したい場合があり、これは、私は、配列を確認しに行くかどう

- (BOOL)isFontNameInstalledInSystem { 
    return ([NSFont fontWithName:self.fontName size:[NSFont systemFontSize]]) != nil; 
} 
関連する問題