设置标签字体为粗体和斜体

5

我正在尝试使用NSMutableAttributedString将标签的特定部分设置为粗体和斜体,但我只能得到其中一个。我使用的字体是Clear Sans。在Storyboard中将整个标签的字体设置为Bold Italic可以正常工作,但我只需要其中的一部分。因此,我使用了

for family in UIFont.familyNames() {
    print("\(family)\n\t\(UIFont.fontNamesForFamilyName(family))")
}

为了确保它在那里,我找到了。
Clear Sans
    ["ClearSans", "ClearSans-Bold", "ClearSans-Italic"]

由于某种原因,它不在这里,但是在storyboard中。所以我尝试使用这个答案,但它会崩溃,我猜是因为我没有找到ClearSans-BoldItalic,但我不知道为什么它不在那里。
最后,我尝试将两者“堆叠”在一起,像这样。
let bold = UIFont(name: "ClearSans-Bold", size: 20)
let italic = UIFont(name: "ClearSans-Italic", size: 20)

attributedCaption.addAttribute(NSFontAttributeName, value: bold!, range: (imageContainer.caption as NSString).rangeOfString(matchString))
attributedCaption.addAttribute(NSFontAttributeName, value: italic!, range: (imageContainer.caption as NSString).rangeOfString(matchString))

但这样做只使用了最后一个属性,这正是我所期望的。
有没有其他方法可以使用,使得加粗和斜体都显示在标签的同一部分? 编辑 我想要包含项目中的字体,以便清楚地表明我已经导入它们。第二张图片是故事板上字体列表。虽然被遮盖了,但实际上是Clear Sans字体族。 Installed fonts Storyboard options

1
尝试下载“Clear Sans Bold Italic”字体。然后您应该能够使用“ClearSans-BoldItalic”。https://www.fontsquirrel.com/fonts/clear-sans - kye
1
你不能只是通过使用所需的符号特征来实例化UIFontDescriptor对象,然后从该描述符实例化新字体来随意创建字体。你用描述符描述的字体必须已经存在于系统中,无论是标准字体还是手动添加的字体。所以,就像kye所指出的那样,下载粗斜体版本,将其添加到你的项目中,并使用它的名称来实例化一个新字体。 - Russian
@kye 我刚刚更新了问题,并附上了我的字体文件夹的截图。我已经将它包含在项目中(这就是为什么它出现在故事板中),但没有想到在问题中包含它。谢谢! - Cody Harness
1
@Cody Harness,你是否已经在UIAppFonts键下的info.plist中添加了粗体斜体版本? - Russian
@Russian 就是这样!我甚至没有想到过,因为我已经很久没有添加字体了。谢谢你。如果你想把它作为答案发布,那我会很高兴地接受它。 - Cody Harness
显示剩余2条评论
2个回答

3

请确保在应用程序的Info.plist文件中,也将粗体斜体版本添加到UIAppFonts(“应用程序提供的字体”)键下。


1
UIFont.italicSystemFont(ofSize: 15.0)
UIFont.boldSystemFont(ofSize: 15)

如果您想自定义标签的字体,就像系统字体一样。您可以尝试我的解决方案。它适用于Swift 3。


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