我的项目中包含一个自定义字体,在我将Xcode升级到版本6并使用iOS 8作为基本SDK之前,它完全正常.现在,如果我在iOS 8模拟器或设备上运行应用程序,自定义字体将不再有效,但它仍然适用于我的iOS 7设备.有什么建议?
小智 20
就我而言,另一种解决方案有效 当我将字体添加到项目中时,它们不会自动添加到已编译的捆绑包资源中.所以我不得不去'目标' - >'构建阶段' - >'复制捆绑资源'并手动添加所有字体.这样做了
我找到了“丢失”字体的原因。事实上,字体仍然存在,但从 iOS 7 到 iOS 8,字体名称发生了微妙但突然的变化:在 iOS 7 中,它被称为“Custom_Font-Style”,但现在在 iOS 8 中,它被称为“Custom-字体样式”。请注意,自定义和字体之间的下划线现在更改为破折号。幸运的是,字体系列名称保持不变,即“自定义字体系列”,因此现在我必须从字体系列中将其提取出来,而不是对字体名称进行硬编码,如下所示:
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;
}
Run Code Online (Sandbox Code Playgroud)
我不确定字体文件如何呈现其信息,但现在我猜我的字体文件(自定义字体.ttf)仅提供字体系列名称“自定义字体系列”,并且iOS从某些规则派生其字体名称,这对于由于某些原因从 iOS 7 更改为 iOS 8,所以之前我们有 Custom_Font-Style,现在我们有 Custom-Font-Style。
| 归档时间: |
|
| 查看次数: |
7593 次 |
| 最近记录: |