Swift NSAttributedString 自定义字体
Swift NSAttributedString custom fonts
我已经阅读了不同的解决方案,但似乎没有任何效果。此代码创建一个零异常:
[NSFontAttributeName: UIFont(name: "Raleway-SemiBold", size: 16)!]
我已正确安装字体,它们在应用程序中正确显示(目标已设置)。
我试图在 plist
中添加应用程序提供的字体,但没有任何反应。我无法编辑数组中的项目:(they are item0 : string : Raleway-SemiBold.tff)
。
所以基本上我被卡住了...有时 Swift 和 Apple 环境对程序员来说很棒,其他时候(大部分时间),它们有很多错误并且需要很多解决方法才能达到预期结果。
非常感谢您的帮助。
你得到一个异常,因为 UIFont(name: "Raleway-SemiBold", size: 16)
returns nil
并且你用 !
.
强制展开它
而是使用条件展开:
if let font = UIFont(name: "Raleway-SemiBold", size: 16) {
let attributes = [NSFontAttributeName: font]
// do something with attributes
} else {
// The font "Raleway-SemiBold" is not found
}
您可以使用 UIFont
的 familyNames()
和 fontNamesForFamilyName(_:)
方法来获取所需的确切字符串。
Swift 4
if let font = UIFont(name: "Raleway-SemiBold", size: 16) {
let attributes = [NSAttributedStringKey.font: font]
// do something with attributes
} else {
// The font "Raleway-SemiBold" is not found
}
您只需输入正确的字体字符串名称即可。
不要写字体文件名。 (比如 bodoni-mt-bold.ttf 它是我从任何站点下载的文件名)。
按照下图找出准确的字体名称。
转到您的标签 select 并转到自定义字体,然后在其系列中查看自定义字体的名称。如果您的自定义字体名称在那里,那么复制该名称并将其作为字符串传递给您想要使用它的地方。 (请注意,您不能复制您必须在其他地方写的字体名称文本,然后再过去)
对于 Swift 3,这是对我有用的更新:
首先,您将设置字体,然后使用 NSFontAttributeName
:
创建一个 textAttribute
let font = UIFont(name: "Raleway-SemiBold", size: 16)
textAttribute = [NSFontAttributeName: font as Any, NSForegroundColorAttributeName: UIColor.black]
然后您可以将 textAttribute
应用于您的标签、文本字段等。
我已经阅读了不同的解决方案,但似乎没有任何效果。此代码创建一个零异常:
[NSFontAttributeName: UIFont(name: "Raleway-SemiBold", size: 16)!]
我已正确安装字体,它们在应用程序中正确显示(目标已设置)。
我试图在 plist
中添加应用程序提供的字体,但没有任何反应。我无法编辑数组中的项目:(they are item0 : string : Raleway-SemiBold.tff)
。
所以基本上我被卡住了...有时 Swift 和 Apple 环境对程序员来说很棒,其他时候(大部分时间),它们有很多错误并且需要很多解决方法才能达到预期结果。
非常感谢您的帮助。
你得到一个异常,因为 UIFont(name: "Raleway-SemiBold", size: 16)
returns nil
并且你用 !
.
而是使用条件展开:
if let font = UIFont(name: "Raleway-SemiBold", size: 16) {
let attributes = [NSFontAttributeName: font]
// do something with attributes
} else {
// The font "Raleway-SemiBold" is not found
}
您可以使用 UIFont
的 familyNames()
和 fontNamesForFamilyName(_:)
方法来获取所需的确切字符串。
Swift 4
if let font = UIFont(name: "Raleway-SemiBold", size: 16) {
let attributes = [NSAttributedStringKey.font: font]
// do something with attributes
} else {
// The font "Raleway-SemiBold" is not found
}
您只需输入正确的字体字符串名称即可。
不要写字体文件名。 (比如 bodoni-mt-bold.ttf 它是我从任何站点下载的文件名)。
按照下图找出准确的字体名称。
转到您的标签 select 并转到自定义字体,然后在其系列中查看自定义字体的名称。如果您的自定义字体名称在那里,那么复制该名称并将其作为字符串传递给您想要使用它的地方。 (请注意,您不能复制您必须在其他地方写的字体名称文本,然后再过去)
对于 Swift 3,这是对我有用的更新:
首先,您将设置字体,然后使用 NSFontAttributeName
:
textAttribute
let font = UIFont(name: "Raleway-SemiBold", size: 16)
textAttribute = [NSFontAttributeName: font as Any, NSForegroundColorAttributeName: UIColor.black]
然后您可以将 textAttribute
应用于您的标签、文本字段等。