Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定Objective-C中的Mac OSX计算机上是否安装了NSFont?_Objective C_Cocoa_String_Fonts - Fatal编程技术网

如何确定Objective-C中的Mac OSX计算机上是否安装了NSFont?

如何确定Objective-C中的Mac OSX计算机上是否安装了NSFont?,objective-c,cocoa,string,fonts,Objective C,Cocoa,String,Fonts,是否有方法检查系统是否安装了具有字符串名称的NSFont?检查此阵列中是否存在该NSFont: NSArray *fonts = [[NSFontManager sharedFontManager] availableFontFamilies]; 打电话 [fonts containsObject:@"Times"]; containsObject使用isEqual:方法比较两个对象。因为您知道字体数组中的每个对象都是NSString,所以您知道如果数组包含@“Times”,您将得到是,如果

是否有方法检查系统是否安装了具有字符串名称的NSFont?

检查此阵列中是否存在该NSFont:

NSArray *fonts = [[NSFontManager sharedFontManager] availableFontFamilies];
打电话

[fonts containsObject:@"Times"];
containsObject
使用
isEqual:
方法比较两个对象。因为您知道
字体
数组中的每个对象都是
NSString
,所以您知道如果数组包含
@“Times”
,您将得到
,如果数组不包含
则会得到

<

用于查找字体系列(可能由多个字体(样式)组成)

然后还可以检查粗体、斜体等(确切名称)

您可能还想使用(但请确保字体名称的格式正确) 请注意,这可能需要更多的资源

- (BOOL)isFontNameInstalledInSystem {
    return ([NSFont fontWithName:self.fontName size:[NSFont systemFontSize]]) != nil;
}

如何检查数组?是否必须使用for语句?很抱歉,刚才在答案正文中添加了一个说明。这并不完全正确,因为您正在检查字体系列,而不是字体…请注意,字体系列可能有不同的字体(样式),如粗体、斜体,我们假设粗体可能尚未安装。如何使用swift执行此操作?在swift中,类似于这样的操作可以实现:NSFontManager.shared.availableMembers(“Times”)
NSFontDescriptor *fontDescriptor =
    [NSFontDescriptor fontDescriptorWithFontAttributes:
        @{ NSFontNameAttribute: @"Bank Gothic Medium" }];
NSArray *matches =
    [fontDescriptor matchingFontDescriptorsWithMandatoryKeys: nil];
- (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;
}