自定义字体在Xcode 11(macOS Catalina)上无法显示

14

我在故事板中的下拉菜单选择字体时遇到了自定义字体加载问题,我有Poppins字体和MarvinVisionsBig字体。我已将它们添加为目标成员、捆绑资源,并将它们添加到plist中,它们已经安装在系统中。我尝试了所有方法,但貌似没有任何作用。

使用以下代码打印这些字体:

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

控制台:

图片描述

下拉菜单:

图片描述

字体:

图片描述

捆绑资源:

图片描述

Plist:

图片描述


1
我有同样的问题--注意到在Xcode 10/Mojave中它可以工作,但是在升级到Catalina后(不是Xcode 11),这个问题出现了,因为在Xcode 11/Mojave中它对我来说是可以工作的。 - Sean Dev
@SeanDev 是的,问题来自Catalina,在我的个人电脑上我保留了Mojave,XCode 11可以正常工作,但是在Catalina上我发现了这个问题。希望苹果能够解决这个问题。 - mohamed mernissi
有人有这个问题的解决方案吗? - Hilaj S L
有人有解决方案吗? - Sachin Kishore
在 info.plist 中输入完整的文件名,包括文件扩展名。例如,“应用提供的字体”应列出 Poppins-Bold.ttf。 - Marcy
对我来说,当我将字体添加到捆绑标识资源中时,它起作用了。确保在plist中同时包含字体扩展名和名称。 - undefined
9个回答

1

将您的项目位置更改并进入活动监视器,静默Xcode和模拟器,然后它就可以工作了。


1
这是升级到Xcode 11.4的已知问题,似乎只影响升级到Catalina而不是清洁安装的用户。
理论上,在Info.plist中拥有字体并设置字体授权应该可以工作,但我无法使其合作。我的解决方案不建议使用,因为它可能会损坏您的Xcode,但对于那些花费数小时且不想回退的人来说,这只是一个快速修复。
这是一个无代码解决方案。你需要做的是从Xcode 11.3.1编译13.4。
  1. 浏览Xcode 11.4 beta的程序包内容,并从Contents > Developer > Platforms > iPhoneOS > DeviceSupport复制标记为“13.4”的文件夹。
  2. 将其粘贴到Xcode 11.3.1内的相同目录位置。
  3. 在11.3.1中打开你的项目/工作区。
  4. 按下CMD+Shift+K进行清理,然后再次运行。现在字体应该按预期运行。
  5. 如果问题仍然存在,请从您的设备/模拟器中删除该应用程序,然后尝试第3步和第4步。

1
  1. 从Bundle资源中移除info.plist (->构建阶段 ->复制Bundle资源)

  2. 添加字体能力和权限 (->签名和能力 -> +能力 ->选择 '字体' -> 勾选 '安装字体' 和 '使用已安装的字体')

图片: Xcode截图


不起作用..还有其他方法吗?????? 我们已经在这上面苦苦挣扎了三个星期。 - karthikeyan
这与问题无关,也没有起作用。 - nickdnk
这与权限无关。 - Manish

1
很遗憾,对我来说唯一的解决方案是重新安装Mac OS Catalina。现在在xCode界面构建器中一切都正常工作。

如何重新安装Catalina?从应用商店下载并安装,对吗?这是全新安装吗? - Am1rFT
不需要格式化你的电脑。https://www.macworld.co.uk/how-to/mac/reinstall-mac-os-recovery-3593641/ - mohamed mernissi

0

我认为这是新版Xcode或Catalina编译器的一个bug,现在解决这个问题的方法是在将字体添加到应用程序提供的字体时,在您的.plist文件中指定字体扩展名。

类似于这样的Poppins-Bold.otfPoppins-Bold.ttf

我已经尝试过这个方法,它有效。


2
已经设置了,但是它没有起作用,我不知道问题出在哪里。 - mohamed mernissi

0

如果我将标签更改为属性文本,我就能在列表中看到字体,并且在切换回普通文本后它仍然存在,但我还没有找出如何解决问题,除非进行完全重新安装,而我大约3周前已经这样做了。


0
尝试删除字体的引用,然后再将它们添加到项目中,这对我起了作用,就是这么简单。

0
在Catalina上使用Xcode 12.4时,我遇到了这个问题。我发现我直接从下载文件夹将字体文件添加到项目中,但忽略了将它们复制到应用程序目录中。我删除了这些文件,使用Finder将它们外部复制到我的应用程序目录中,然后重新添加它们。然后它就可以工作了!

0
我为这个问题纠结了整整一天。最后,我通过将info.plist中的键名从“Fonts provided by application”更改为“UIAppFonts”来解决了它。由于使用SwiftUI创建的新项目不包含info.plist文件,我怀疑可能导入了一些来自旧plist文件的过时元素。当我尝试通过属性列表UI添加字体时,它添加了一个看起来已经过时且不适合我的项目的“Fonts provided by application”键。 也许对某人有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接