【问题标题】:Set label font with bold and italic使用粗体和斜体设置标签字体
【发布时间】:2016-08-10 15:53:03
【问题描述】:

我正在尝试使用NSMutableAttributedString 将标签的特定部分设置为粗体和斜体,但我只能选择其中一个。我使用的字体是 Clear Sans。将情节提要上的整个标签字体设置为Bold Italic 效果很好,但我只需要其中的一部分。所以我用了

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

为了确保它在那里,我找到了

Clear Sans
    ["ClearSans", "ClearSans-Bold", "ClearSans-Italic"]

出于某种原因,它不在此处,但在情节提要中。所以我尝试使用this answer,但它崩溃了,我假设与我没有找到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))

但所有这些都是使用 last 属性,这是我所期望的。

我可以使用其他方法来做到这一点,以便在标签的同一部分同时显示粗体和斜体吗?

编辑

我想在项目中包含我的字体,所以很明显我已经导入了它们。第二张图片是故事板上的字体列表。虽然被掩盖了,但家人实际上是Clear Sans

【问题讨论】:

  • 尝试下载Clear Sans Bold Italic字体。然后您应该可以使用ClearSans-BoldItalicfontsquirrel.com/fonts/clear-sans
  • 您不能只是通过实例化具有所需符号特征的 UIFontDescriptor 对象然后从该描述符实例化新字体来即时创建任意字体。您使用描述符描述的字体必须已经存在于系统中,无论是标准字体还是您手动添加的字体。因此,只需按照 kye 的说明下载粗斜体版本,将其添加到您的项目中并使用它的名称来实例化新字体。
  • @kye 我刚刚用我的字体文件夹的屏幕截图更新了这个问题。我已经在项目中使用了它(这就是它出现在故事​​板上的原因),但没有考虑将其包含在问题中。谢谢!
  • @Cody Harness 您是否在 UIAppFonts 键下的 info.plist 中添加了粗斜体版本?
  • @Russian 就是这样!我什至没有想到,我已经很久没有添加字体了。谢谢。如果您想将其发布为答案,那么我很乐意接受。

标签: ios swift fonts nsmutableattributedstring


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    UIFont.italicSystemFont(ofSize: 15.0)
    UIFont.boldSystemFont(ofSize: 15)
    

    如果你想自定义标签的字体喜欢喜欢系统。你可以试试我的解决方案。 它适用于 swift 3

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 2014-03-01
      • 2012-12-10
      • 1970-01-01
      相关资源
      最近更新 更多