我想有一个应用程序包括一个自定义字体渲染文本,加载它,然后使用它与标准UIKit元素如UILabel。这可能吗?
当前回答
遵循这个步骤
1)在项目中复制你的字体
2)以源代码模式打开你的.plist文件…(注意-不要打开info.plist)
3)在此之前-右键单击你的字体,在fontforge或类似的编辑器中打开它,并将其安装到你的系统中,它应该是安装的
4)类型
<key>UIAppFonts</key>
<array>
<string>MyriadPro.otf</string>
</array>
5)在你的类中输入这个代码。m
[lblPoints setFont:[UIFont fontWithName:@"Myriad Pro" size:15.0]];
这里lblPoints将改变你的UILabel
完成了! ! 如果你的字体仍然不能工作,首先检查你的字体兼容性
其他回答
您可以在资源文件夹中添加所需的“FONT”文件。然后转到项目信息。plist文件,并使用键“Fonts provided by the application”和值“FONT NAME”。
然后你可以调用方法[UIFont fontwithName:@"FONT NAME" size:12];
我在iOS 3.1.2上尝试了这个页面上的各种建议,以下是我的结论:
简单地使用[UIFont fontWithName:size:]与资源目录中的字体将不起作用,即使使用FontForge设置了FOND名称。
[UIFont fontWithName:size:]将工作,如果字体首先使用GSFontAddFromFile加载。但是GSFontAddFromFile不是iOS 3.1.2的一部分,所以它必须像@rpetrich所描述的那样动态加载。
正如之前所有的答案所表明的,这是非常有可能的,而且在更新的iOS版本中非常容易。
我知道这不是一个技术上的答案,但因为很多人都做错了(这实际上违反了许可,如果你被起诉,可能会花费你很多钱),让我在这里强调一个警告:在iOS(或任何其他类型)应用程序中嵌入自定义字体基本上是重新分配字体。大多数商业字体的许可都禁止再分发,所以请确保您按照许可行事。
作为一个增强@bdev的答案,这里是一个更新版本列出自定义字体。
步骤1:使用@bdev的答案找出所有系统字体并保存到文件中。
将以下代码放在第一个视图控制器的-(void)viewDidLoad中,在[super viewDidLoad]之后(或在App Delegate中):
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray array];
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
[system_fonts addObject:fontName];
}
}
if([paths count] > 0) {
[system_fonts writeToFile:[[paths objectAtIndex:0]
stringByAppendingPathComponent:@"array.out"] atomically:YES];
}
运行应用程序一次。事后停止。
步骤2:添加自定义字体到项目
使用已接受的答案中显示的方法,添加您的自定义字体(记得更新.plist并通过勾选add to Target添加要构建的字体文件。
步骤3:将系统字体与当前字体列表进行比较
将步骤1中的代码替换为:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray arrayWithContentsOfFile:[[paths objectAtIndex:0]
stringByAppendingPathComponent:@"array.out"]];
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
if (![system_fonts containsObject:fontName]) {
NSLog(@"%@", fontName);
}
}
}
运行App,你添加的自定义字体列表就会显示出来。
这适用于iOS 3.2到iOS 6(未来的版本可能会正常工作)。也适用于.ttc和.ttf。
目前还没有发布,但下一个版本的cocos2d (2d游戏框架)将支持可变长度的位图字体作为角色地图。
http://code.google.com/p/cocos2d-iphone/issues/detail?id=317
作者没有确定这个版本的发布日期,但我确实看到一个帖子说它将在未来一两个月发布。
推荐文章
- 错误ITMS-9000:“冗余二进制文件上传。火车1.0版本已经有一个二进制版本上传。
- Swift -转换为绝对值
- 从父iOS访问容器视图控制器
- 自定义dealloc和ARC (Objective-C)
- 调整UITableView的大小以适应内容
- 在代码中为UIButton设置一个图像
- NSRange从Swift Range?
- UICollectionView中的单元格间距
- 我如何在我的iOS应用程序中每n分钟得到一个后台位置更新?
- 如何使用iOS创建GUID/UUID
- 禁用所呈现视图控制器的交互式撤销
- 点击按钮时如何打开手机设置?
- 如何使用UIVisualEffectView来模糊图像?
- 如何修复UITableView分隔符在iOS 7?
- 故事板中的自定义单元格行高设置没有响应