UIFont - 如何获取系统细字体

Posted

技术标签:

【中文标题】UIFont - 如何获取系统细字体【英文标题】:UIFont - how to get system thin font 【发布时间】:2015-10-24 15:19:31 【问题描述】:

UIFont 有获取常规字体 (systemFontOfSize) 或粗体字体 (boldSystemFontOfSize) 的方法,但是如何通过情节提要获取“瘦系统字体”?

将“system-thin”传递给UIFont 构造函数不起作用,此构造函数仅适用于非系统字体。

【问题讨论】:

【参考方案1】:

你可以使用系统字体细细:

UIFont.systemFont(ofSize: 34, weight: UIFontWeightThin)

旧金山可用权重列表:

UIFontWeightUltraLight
UIFontWeightThin
UIFontWeightLight
UIFontWeightRegular
UIFontWeightMedium
UIFontWeightSemibold
UIFontWeightBold
UIFontWeightHeavy
UIFontWeightBlack

从 iOS 11 开始UIFontWeight* 已重命名为 UIFont.Weight.*。更多你可以在这里https://developer.apple.com/documentation/uikit/uifont.weight。

【讨论】:

仅适用于 ios 8.2 及更高版本,thnx【参考方案2】:

从 iOS 8.2 开始,您现在可以使用 UIFont.systemFontOfSize(_ fontSize: CGFloat, weight weight: CGFloat)

UIFont.systemFontOfSize(19, weight: UIFontWeightLight)

iOS SDK 提供了权重常量:

UIFontWeightUltraLight
UIFontWeightThin
UIFontWeightLight
UIFontWeightRegular
UIFontWeightMedium
UIFontWeightSemibold
UIFontWeightBold
UIFontWeightHeavy

当你想使用系统字体时,使用系统字体比基于字体名称创建字体更好,因为 iOS 可以在 iOS 上更改其系统字体(就像他们在 iOS 7 中使用 Helvetica Neue 时所做的那样,现在,旧金山在iOS 9)。

所以我的建议是包含您想要的字体的 TTF 文件,将该 ttf 文件用作自定义字体并在您的应用中使用自定义字体。

这就是我不喜欢 Apple 的特殊原因。 永远不要 按 Apple 说的去做。永远做我们想做的事。 Apple 不断改变 每个操作系统的默认字体。

【讨论】:

【参考方案3】:

此外,如果您想保持相同的字体大小并仅更改粗细,则使用目标元素字体大小。例如:

demoLabel.font = UIFont.systemFont(ofSize: demoLabel.font.pointSize, weight: UIFontWeightThin)

有了这个,你可以保持默认的标签字体大小,只是改变重量。

从 iOS 11 开始, UIFontWeightThin 已重命名为 UIFont.Weight.thin。更多你可以在这里https://developer.apple.com/documentation/uikit/uifont.weight。

【讨论】:

【参考方案4】:

Swift 4.2 / Swift 5.0

 label.font = UIFont.systemFont(ofSize: 15, weight: UIFont.Weight.thin)

【讨论】:

以上是关于UIFont - 如何获取系统细字体的主要内容,如果未能解决你的问题,请参考以下文章

iOS swift UIFont 字体名称大全,图解及使用方法

SwiftUI/UIKit 如何将 SwiftUI 字体转换为 UIKit UIFont?

如何创建具有特殊字体属性的灯光系统字体

如何从常规UIFont创建粗体UIFont?

Qt 中如何获取系统默认字体大小?

UIFont 可能的大小