ios - 在 Swift 中使文本斜体没有“-Italic”字体文件
问题描述
如果我使用的自定义字体只有 -Regular 字体,我如何使文本斜体?
我使用此扩展使其斜体,但它在 fontDescriptor 部分崩溃:
func withTraits(traits:UIFontDescriptor.SymbolicTraits) -> UIFont {
let descriptor = fontDescriptor.withSymbolicTraits(traits)
return UIFont(descriptor: descriptor!, size: 0)
}
func bold() -> UIFont {
return withTraits(traits: .traitBold) }
func italic() -> UIFont {
return withTraits(traits: .traitItalic) }
用法:
let s = UIFont(name:"Archivo Black", size: 20.0).italic()
print("Output: ", s)
工具:
- 设备版本:iOS 12.3.1
- Xcode 版本:10.2.1
- macOS:10.14.5
解决方案
let descriptor = fontDescriptor.withSymbolicTraits(traits)
上面的行返回一个可选的字体描述符,这意味着它并不适用于所有字体。
我认为您需要在您的机器上为 font-family Archivo Black安装相应的字体样式(斜体) 。下载并安装Archivo Black 字体的斜体变体的.ttf文件。
您可以使用类似的方法来避免崩溃。
extension UIFont {
func withTraits(traits: UIFontDescriptor.SymbolicTraits) -> UIFont {
if let descriptor = fontDescriptor.withSymbolicTraits(traits) {
// Initialize a new instance of UIFont with desired symbolic trait if exists
return UIFont(descriptor: descriptor, size: self.pointSize)
}
// Fall back to default version of the font
return self
}
}
推荐阅读
- rtrt - 用于数组输入参数的 Rtrt 存根
- r - 如何改进 R 中的 survrec 图?
- css - 如何使用 Bootstrap 4 使帮助文本为 100% 宽度但输入字段不是
- android - facebook原生adview替换recyclerview的原始项目
- user-interface - 从连接读取更新多行条目
- python - 如何将 [PRIMARY] 上的 SqlServer 转换为 Sqlalchemy 模型?
- c# - 带有 SoundTouch BPMDetect 的 NAudio WaveIn 的 C# 示例
- python - 如何在熊猫中拆分和存储数据框中的数据
- c++ - OPENSSL 将二进制字节转换为 SHA256 C++
- random - 我想出了这两种方法来获得 5 个唯一的随机数。哪个更好/更有效?有没有其他更有效的方法?