自定义字体在 iOS 8 中不起作用

     2023-02-27     47

关键词:

【中文标题】自定义字体在 iOS 8 中不起作用【英文标题】:Custom Font is not working in iOS 8 【发布时间】:2014-09-20 15:39:32 【问题描述】:

我的项目中包含一个自定义字体,在我将 Xcode 升级到版本 6 并使用 iOS 8 作为基础 SDK 之前,它一直运行良好。现在,如果我在 iOS 8 模拟器或设备上运行应用程序,自定义字体不再有效,但它仍然适用于我的 iOS 7 设备。有什么建议吗?

【问题讨论】:

Info.plist 中的条目看起来如何。文件在您的应用程序中的什么位置?你是如何访问字体的? 我知道至少在 Xcode5 中,文件名中是否使用大写并不重要,但在设备上却很重要。也许他们也为 Xcode6 更改了这条规则。 @bdv 是的,我记得很久以前在处理模拟器和设备中显示/未显示的一些图像时。至于这个字体的东西,我查了一下,都是小写的,和磁盘上的文件名匹配。 如果它不是系统文件名,那么我会查看复制包资源,看看它们是否被列为字体。我必须以艰难的方式找到它.. @bdv 我刚刚发现 iOS 8 中发生了什么。请参阅下面的答案,不过感谢您的提示和提示。 【参考方案1】:

在我的情况下,另一个解决方案有效。当我将字体添加到项目中时,它们并没有自动添加到已编译的捆绑资源中。所以我不得不去 'Targets' -> 'Build Phases' -> 'Copy Bundle Resources' 并手动添加所有字体。这成功了

【讨论】:

【参考方案2】:

我找到了“丢失”字体的原因。实际上字体仍然存在,但是从 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;

我不确定字体文件是如何呈现其信息的,但现在我猜我的字体文件(自定义 font.ttf)只提供了一个字体系列名称“自定义字体系列”,而 iOS 从某些规则中派生出它的字体名称,由于某种原因从 iOS 7 更改为 iOS 8,所以之前我们有 Custom_Font-Style,现在我们有 Custom-Font-Style。

【讨论】:

【参考方案3】:

如前所述,iOS 8 和之前版本的字体名称读取方式不同。我必须签到才能决定使用哪个名称:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) 
    OS_SPECIFIC_GOTHIC_FONT = @"New";
 else 
    OS_SPECIFIC_GOTHIC_FONT = @"Highway Gothic";

您可以使用 Finder、Get Info 和 Font Book 来查找不同的名称(iOS 8 在 Font Book 中使用标题,而其余的在 Get Info 中使用 Full Name)

【讨论】:

【参考方案4】:

正如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)")
    

【讨论】:

【参考方案5】:

Lars Blumberg 回复 Swift 3

    for family in UIFont.familyNames 
        print("\(family)")
        for name: String in UIFont.fontNames(forFamilyName: family) 
            print("== \(name)")
        
    

【讨论】:

自定义字体在 Firefox 中不起作用。

】自定义字体在Firefox中不起作用。【英文标题】:CustomfontisnotworkinginFirefox.【发布时间】:2014-07-2210:33:50【问题描述】:我已经搜索了它的解决方案,并且我认为,我正在按照建议做所有事情,但它仍然无法正常工作。自定义字... 查看详情

自定义字体在 React Native 中不起作用

】自定义字体在ReactNative中不起作用【英文标题】:CustomfontnotworkinginReactNative【发布时间】:2017-08-1816:37:42【问题描述】:我想在我的应用程序中使用来自google字体的字体。Hereisthefont.我已将.ttf文件放在app/fonts中。package.json:"name"... 查看详情

自定义委托在 iOS 中不起作用

】自定义委托在iOS中不起作用【英文标题】:CustomdelegatedoesnotworkinginiOS【发布时间】:2015-08-3018:47:17【问题描述】:我的自定义委托不起作用。以前我使用了自定义委托,但这次它不起作用。我想将数据(更改后的UISlider值)从U... 查看详情

将自定义字体安装到 WP 中不起作用

】将自定义字体安装到WP中不起作用【英文标题】:InstallingcustomfontintoWPnotworking【发布时间】:2021-06-1507:07:54【问题描述】:所以,我尝试在我的网站上使用RubikMonoOne字体,但它不会显示给任何人。我使用@fontface并尝试清除我的... 查看详情

系统字体在 iOS 模拟器中不起作用

...关于这个主题的大部分问题和答案,它们似乎都适用于自定义字体,而不是系统字体。我正在使用界面生成器并在SpriteKit场景中有一个SKLabelNode,我将字体更改为“LithosPro”。它在IB中正确显示,但在模拟器中运行时会显示通用... 查看详情

自定义 segue 在 iOS 9.1 中不起作用

】自定义segue在iOS9.1中不起作用【英文标题】:CustomseguenotworkinginiOS9.1【发布时间】:2015-11-0300:50:20【问题描述】:我正在尝试创建自定义转场。它在第一次不起作用。后来我通过创建一个扩展UIStoryboardSegue的新文件并创建一个名... 查看详情

UISearchBar 的自定义 InputView 在 iOS7 中不起作用

】UISearchBar的自定义InputView在iOS7中不起作用【英文标题】:CustomInputViewforUISearchBardoesn\'tworkiniOS7【发布时间】:2013-09-2404:24:39【问题描述】:我需要在UISearchBar中设置我的自定义inputView。所以我编写了以下代码,在iOS5和iOS6中完美... 查看详情

iOS swift中的自定义视图出口在视图控制器中不起作用

】iOSswift中的自定义视图出口在视图控制器中不起作用【英文标题】:CustomviewoutletsiniOSswiftarenotworkinginviewcontroller【发布时间】:2016-03-0211:19:03【问题描述】:大家好,我在swift中使用了一个视图控制器和一个自定义视图视图控制... 查看详情

UICollectionViewListCell 的自定义子类中的自我调整大小在 iOS 14 中不起作用

】UICollectionViewListCell的自定义子类中的自我调整大小在iOS14中不起作用【英文标题】:SelfsizinginCustomsubclassofUICollectionViewListCellnotworkinginiOS14【发布时间】:2020-07-1508:02:39【问题描述】:背景:iOS14引入了一种新的方法来注册和配... 查看详情

iOS Button 在自定义视图中不起作用

】iOSButton在自定义视图中不起作用【英文标题】:iOSButtonnotworkincustomview【发布时间】:2017-03-2203:51:19【问题描述】:有两个自定义视图-viewA和viewB。ViewB是在viewA中添加的一个小视图。起初viewA充满了整个屏幕。ViewB位于viewA的底... 查看详情

IOS Segue 在自定义标签栏中不起作用

】IOSSegue在自定义标签栏中不起作用【英文标题】:IOSSegueisnotworkinginCustomTabbar【发布时间】:2014-12-0109:42:58【问题描述】:我使用segue制作了我的自定义标签栏,它运行成功,现在我尝试在标签栏视图控制器上的两个视图控制器... 查看详情

自定义登录在 Spring 中不起作用

】自定义登录在Spring中不起作用【英文标题】:CustomLoginnotworkinginSpring【发布时间】:2015-02-0814:08:35【问题描述】:我们正在尝试创建自定义登录页面。我们的configure方法写如下@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException//h... 查看详情

自定义授权属性在 WebAPI 中不起作用

】自定义授权属性在WebAPI中不起作用【英文标题】:CustomauthorizationattributenotworkinginWebAPI【发布时间】:2014-06-1321:01:58【问题描述】:publicclassCustomAuthorizeAttribute:AuthorizationFilterAttributeprotectedoverrideboolAuthorizeCore(HttpContextBaseh 查看详情

自定义鼠标指针在 IE11 中不起作用

】自定义鼠标指针在IE11中不起作用【英文标题】:CustommousepointernotworkinginIE11【发布时间】:2015-03-0715:47:43【问题描述】:我正在尝试实现一个在IE11中不起作用的自定义光标。这在chrome中运行良好。谁能帮我让它在InternetExplorer11... 查看详情

自定义 uitableviewcell 在 LazyTableImages 中不起作用

】自定义uitableviewcell在LazyTableImages中不起作用【英文标题】:CustomuitableviewcellnotworkinginLazyTableImages【发布时间】:2012-11-2606:37:38【问题描述】:我在我的应用程序中使用自定义UITableView单元格,并且我已集成LazyTableImages示例代码... 查看详情

React Native Expo 自定义字体权重在 iOS 设备上不起作用

】ReactNativeExpo自定义字体权重在iOS设备上不起作用【英文标题】:ReatNativeExpocustomfontWeightdoesn\'tworkoniOSdevice【发布时间】:2018-07-1603:01:49【问题描述】:我根据博览会网站加载了open-sans-regular字体:asynccomponentDidMount()awaitFont.loadAsy... 查看详情

为啥添加自定义 SASS 变量在 Ionic 中不起作用?

】为啥添加自定义SASS变量在Ionic中不起作用?【英文标题】:WhyaddingcustomSASSvariablesdoesnotworkinIonic?为什么添加自定义SASS变量在Ionic中不起作用?【发布时间】:2014-12-0921:06:51【问题描述】:我使用-s选项设置了一个新的ionic项目以... 查看详情

自定义过滤在 django rest 框架中不起作用

】自定义过滤在djangorest框架中不起作用【英文标题】:customfilteringnotworkingindjangorestframework【发布时间】:2022-01-0807:49:25【问题描述】:我尝试通过定义过滤器类并在我的视图中导入来使用自定义过滤,但它不起作用。我的代码... 查看详情