我在我的app.i中使用多个自定义字体知道如何添加自定义字体,但所有这些过程的可怕部分是我们要使用自定义字体,因为大多数自定义字体名称与文件不同我们正在app.here中使用我想解释我最近的例子,首先我在我的应用程序中添加了两个自定义字体文件
为了获得上述自定义字体名称,我尝试了这种方式
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
NSArray *fontNames;
NSInteger indFamily, indFont;
FontnameArray=[[NSMutableArray alloc] init];
for (indFamily=0; indFamily<[familyNames count]; ++indFamily)
{
fontNames = [[NSArray alloc] initWithArray:
[UIFont fontNamesForFamilyName:
[familyNames objectAtIndex:indFamily]]];
for (indFont=0; indFont<[fontNames count]; ++indFont)
{
NSString *fullName = [NSString stringWithFormat:@"%@",[fontNames objectAtIndex:indFont]];
[FontnameArray addObject:fullName];
}
}
[FontnameArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSLog(@" Font name: %@", FontnameArray);
上面的代码为我显示199个字体名称,所以我很难在199种字体中选择自定义字体名称,为了让我的疑问清楚,我只需将字体文件拖到字体书然后我得到了自定义字体的原始名称。
[UIFont fontWithName:@"Ethiopia Primary" size:20]];
[UIFont fontWithName:@"Ethiopia jiret" size:20]];
所以问题是如何在Array中获取所有自定义字体名称,而不是将每个字体文件拖放到Fontbook以获取orignal名称。
答案 0 :(得分:1)
只需与iOS中存在的所有字体进行比较
*创建像this code这样的新项目,并将所有字体名称的数组写入plist文件
- (void)writeAlliOSFontsToPlist{
NSArray *fontFamilies = [UIFont familyNames];
[self savePlist:@"AllFont" fromArray:fontFamilies];
}
- (NSString *) getFilePathForPlist:(NSString *) plistName {
// placeholder
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[pathArray objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist",plistName]];
}
-(void) savePlist:(NSString *)plistName fromArray:(NSArray *)array {
[array writeToFile:[self getFilePathForPlist:plistName] atomically:YES];
}
打开您的模拟器目录并将this plist复制到您的App捆绑包。 然后将此plist读取到一个数组,并通过this code
与所有字体进行比较-(void)dumpCustomFonts{
NSArray *iOSFontsArray = [NSArray arrayWithContentsOfFile:
[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
@"AllFont.plist"]];
NSMutableArray *fontFamilies = (NSMutableArray *)[UIFont familyNames];
[fontFamilies removeObjectsInArray:iOSFontsArray];
NSLog(@"%@",fontFamilies);
}
我已经在我的测试项目中完成了所有操作,您只需复制并粘贴它即可。
答案 1 :(得分:0)
您应该在.plist
中添加自定义字体
1)使用键
"Fonts provided by application"
添加新条目。2)现在将每个带有扩展名的自定义字体文件名添加到此数组中,如:
现在您可以通过以下方式检索所有自定义字体:
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"Info.plist"];
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];
fontFamilyNames = [plistData valueForKey:@"UIAppFonts"];
NSLog(@"%@",fontFamilyNames);
NSString *fontFamilyName = [[fontFamilyNames objectAtIndex:index] stringByDeletingPathExtension];
UILabel *fontNameLabel = [[[UILabel alloc] init] autorelease];
fontNameLabel.text = @"Preview Text";
fontNameLabel.font = [UIFont fontWithName:fontFamilyName size:20.0];