我有一个自定义字体包含在我的项目中,直到我将我的Xcode升级到版本6并以iOS 8作为基础SDK时,它才工作得很好。现在,如果我在iOS 8模拟器或设备上运行应用程序,自定义字体不再有效,但它仍然可以在我的iOS 7设备上运行。有什么建议么?自定义字体不适用于iOS 8
回答
我发现了“缺失”字体的原因。实际上字体仍然存在,但是从iOS 7到iOS 8,字体名称有一个微妙但突然的变化:在iOS 7中,它被调用,例如, “Custom_Font-Style”,但现在在iOS 8中被称为“Custom-Font-Style”。注意Custom和Font之间的下划线现在变成短划线。幸运的是字体系列名称保持不变,为“定制字体家庭”,所以现在而不是硬编码的字体名称我不得不从字体系列中提取出来,像这样:
static NSString *_myCustomFontName;
+ (NSString *)myCustomFontName
{
if (!_myCustomFontName)
{
NSArray *arr = [UIFont fontNamesForFamilyName:@"Custom Font Family"];
// I know I only have one font in this family
if ([arr count] > 0)
_myCustomFontName = arr[0];
}
return _myCustomFontName;
}
我不知道字体文件如何显示其信息,但现在我想我的字体文件(自定义字体.ttf)只提供字体系列名称“自定义字体系列”,并且iOS从特定规则中获取其字体名称,出于某种原因从iOS 7到iOS 8,所以在使用Custom_Font-Style之前,现在我们有Custom-Font-Style。
如前所述,iOS 8和以前版本的字体名称读取方式不同。我不得不在把支票来决定使用哪个名称:
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
OS_SPECIFIC_GOTHIC_FONT = @"New";
} else {
OS_SPECIFIC_GOTHIC_FONT = @"Highway Gothic";
}
您可以使用搜索,获取信息和字体册找到不同的名称(iOS 8的使用,而其余的字体册标题在获取信息中使用全名)
在我的情况下,另一个解决方案工作。当我将字体添加到项目中时,它们不会自动添加到已编译的束包资源中。所以我必须去'目标' - >'建立阶段' - >'复制捆绑资源'并手动添加所有字体。这奏效了
真棒..为我工作.. +1 – 2016-03-15 05:35:58
由于http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/建议,应该列出在运行时可用的所有字体查看自定义字体是否可用:
for family: String in UIFont.familyNames() {
print("\(family)")
for name: String in UIFont.fontNamesForFamilyName(family) {
print("== \(name)")
}
}
拉尔斯·布隆伯格答案Swift 3
for family in UIFont.familyNames {
print("\(family)")
for name: String in UIFont.fontNames(forFamilyName: family) {
print("== \(name)")
}
}
- 1. sizeWithFont:constrainedToSize不适用于自定义字体
- 2. 自定义字体不适用于我的iOS应用程序
- 3. 自定义字体不适用于iOS 10中的iMessage扩展
- 4. IOS 8,自定义字体问题
- 5. UIScreenEdgePanGestureRecognizer不适用于iOS 8
- 6. Testflight不适用于iOS 8
- 7. AlamofireObjectMapper不适用于iOS 8
- 8. 字体不适用于自定义语言字符
- 9. 自定义ttf字体不适用于iPhone应用程序
- 10. 自定义字体不适用于Appcelerator Titanium SDK 5.3.1
- 11. Rails自定义字体不适用于Firefox和IE
- 12. iOS的自定义字体
- 13. iOS 5自定义字体
- 14. 定制的自定义Url方案不适用于iOS 9
- 15. VTCompressionSessionCreate适用于iOS 9,但不适用于iOS 8
- 16. 触摸控件适用于iOS 7,6,5 ...但不适用于iOS 8
- 17. 约束条件适用于iOS 8,但不适用于iOS 7
- 18. 字体真棒不适用于iOS
- 19. 不能找到自定义字体 - iOS
- 20. 自定义字体iOS不显示
- 21. iOS:自定义字体大小不变
- 22. 自定义字体在ios不工作
- 23. Ionic 2 RC3 iOS 8自定义字体字母间距问题
- 24. 的UITextView呈现自定义字体错误地适用于iOS 7
- 25. 当使用itext将html转换为pdf时,自定义字体适用于Windows,但不适用于Ubuntu。
- 26. iOS 8中的自定义字体未显示
- 27. 添加自定义字体,键盘扩展IOS 8
- 28. SceneKit euler角度不适用于iOS 8
- 29. Xamarin.iOS NSUrlSession不适用于iOS 8
- 30. 适用于本机应用程序的iOS 8自定义键盘
如何进行进入Info.plist的样子。该文件位于您的应用程序中的位置?你如何访问字体? – idmean 2014-09-20 15:41:34
我知道,至少在Xcode5中,如果您在文件名中使用大写字母而不是大写字母,但在设备上它确实很重要。也许他们也改变了Xcode6的这个规则。 – bdv 2014-09-20 19:34:42
@bdv是的,我记得很久以前,当处理模拟器和设备中显示/未显示的一些图像时。至于这个字体的东西,我检查过,它都是小写字母,并且匹配磁盘上的文件名。 – CodePlumber 2014-09-20 20:49:40