iOS 等宽自定义字体

2023-12-14

我的 Xcode 7、iOS 9 目标项目中包含自定义字体。我想让字体变成等宽字体。我尝试了这个,但没有成功:

let originalFont = UIFont(name: "My Custom Font", size: 18)
let originalFontDescriptor = originalFont!.fontDescriptor()

let fontDescriptorFeatureSettings = [
    [
        UIFontFeatureTypeIdentifierKey: kNumberSpacingType,
        UIFontFeatureSelectorIdentifierKey: kMonospacedNumbersSelector
    ]
]

let fontDescriptorAttributes = [UIFontDescriptorFeatureSettingsAttribute: fontDescriptorFeatureSettings]
let fontDescriptor = originalFontDescriptor.fontDescriptorByAddingAttributes(fontDescriptorAttributes)
let font = UIFont(descriptor: fontDescriptor, size: 0)

topLabel.font = font

无论有或没有上述代码,标签都会以正确的自定义字体显示。只是上面的代码没有做任何事情。


我的以下答案只是将现有字体的数字(而不是整个字体)设置为等宽字体(如果字体支持)

至少我在找到这个线程时正在寻找使数字等宽。所以我希望它能有所帮助,尽管它回答了另一个问题。

这工作得很好,在 Swift 5 和 iOS14+13 上测试过:

(只要“您的字体支持等宽数字功能”.)

extension UIFont {

    var monospacedDigitFont: UIFont {
        let oldFontDescriptor = fontDescriptor
        let newFontDescriptor = oldFontDescriptor.monospacedDigitFontDescriptor
        return UIFont(descriptor: newFontDescriptor, size: 0)
    }

}

private extension UIFontDescriptor {

    var monospacedDigitFontDescriptor: UIFontDescriptor {
        let fontDescriptorFeatureSettings = [[UIFontDescriptor.FeatureKey.featureIdentifier: kNumberSpacingType, UIFontDescriptor.FeatureKey.typeIdentifier: kMonospacedNumbersSelector]]
        let fontDescriptorAttributes = [UIFontDescriptor.AttributeName.featureSettings: fontDescriptorFeatureSettings]
        let fontDescriptor = self.addingAttributes(fontDescriptorAttributes)
        return fontDescriptor
    }
}

然后你可以在任何标签上使用它,如下所示:

/// Label with monospacing activated
myLabel.font = myLabel.font.monospacedDigitFont

/// Label with monospacing not activated (default is proportional spacing)
myLabel.font = myLabel.font

(来源:https://blog.usejournal.com/proportional-vs-monospaced-numbers-when-to-use-which-one-in-order-to-avoid-wiggling-labels-e31b1c83e4d0)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 等宽自定义字体 的相关文章

  • 在 IOS9 中的 Cordova 应用程序上使用 JQuery/Javascript 的 window.history 问题

    我在 IOS9 测试版 下使用 Cordova 应用程序时遇到问题 我正在使用最新的 Cordova 和 JQuery 移动版本 window history 未更新 导致以下故障 window history go 1 无法返回页面 即使
  • 如何使用 Codable 解析此 JSON?

    我一直在尝试从我的中解析这个对象JSON并不断收到此错误 错误 类型不匹配 Swift Array Swift DecodingError Context codingPath debugDescription 本应解码数组 但找到了字典
  • 是否可以在 RealmSwift 中使用枚举?

    我想做这样的事情 enum WeekDay case Monday Tuesday Wednesday Thursday Friday Saturday Sunday class Person Object dynamic var birt
  • 具有多个嵌入 Segue 的 ContainerView

    有没有办法让单个 ContainerView 具有多个嵌入序列 目的是让 ContainerView 根据按下的按钮来容纳一些不同的 ViewController 一次只能看到一个 我想使用嵌入序列 以便在 Interface Builde
  • NSDateComponents 中的 sethours

    我正在尝试在 NSDateComponents 中设置小时 我编写了以下代码 NSCalendar calendar NSCalendar alloc initWithCalendarIdentifier NSGregorianCalend
  • 连续调用startRecordingToOutputFileURL:

    苹果文档 https web archive org web 20140814091047 http developer apple com library ios DOCUMENTATION AVFoundation Reference
  • UIViewController 加载时间慢(ClientState 慢警告)

    自从我将旧应用程序转换为 iOS 6 以来 我开始在控制台中收到以下消息 WARNING Slow defaults access for key ClientState took 0 023656 seconds tolerance is
  • iOS UITest:如何找到UITableViewCell的AccessoryView?

    你好我正在学习UITests now 我有个问题 如何检测accessoryView的点击tableViewCell 在UI测试中 下面是我的tableViewCell 我想要检测细节闭合配件视图水龙头 像这样 app tables cel
  • 我是否可以通过第三方支付网关为我的 iPhone 应用程序提供付款服务?

    所以我有一个 RESTful Api 服务 它有免费和付费的东西 任何人都可以利用我们的 API 创建 iPhone Andriod MSPhone 应用程序 不好的类比 假设我们正在为 Steam 创建一个聊天 api 服务 并且您可以为
  • iOS 中的 NSCachesDirectory 和 NSDownloadsDirectory 有什么区别?

    我想将下载的杂志保存到我的 iOS 应用程序中的一个目录中 它似乎NSCachesDirectory and NSDownloadsDirectory是合适的 我不知道它们之间有什么区别 以及哪一种适合下载杂志 任何建议表示赞赏 内存不足时
  • 图表无法在 Xcode 14 上编译

    我在图书馆中面临以下错误 Type 图表数据集 不符合协议 范围可替换集合 实例方法不可用 替换Subrange with 用于满足协议的要求 范围可替换集合 将其附加到扩展 ChartDataSet RangeReplaceableCol
  • 从 NSString 获取子字符串,直到到达特定单词

    假设我有这个NSString Country Address Tel number 我该如何获取之前的子字符串Tel 国家地址 然后我该如何获取后面的子字符串Tel 数字 使用 NSScanner NSString string Count
  • 从 UIImagePickerControllerReferenceURL 加载 UIImage

    我正在使用 UIImagePickerController 来允许用户从图像库中选择图像 然后我想在 sqlite 数据库中启动该文件的位置 以便稍后可以参考它 我一直在谷歌上搜索如何做到这一点 但我的结果相当简短 我知道我可以通过调用委托
  • 如何在 iPhone 应用程序中播放来自服务器的视频 URL

    实际上 我通过使用从服务器获取一个网址XMLParser 我想在我的应用程序中播放这个视频网址 现在我使用了 MPMoviePlayerController 但它不起作用 请帮忙 XML解析器 m id loadXMLByURL NSStr
  • 关系上的核心数据属性?

    我刚刚开始使用核心数据 我有一个Headache实体和一个Medication实体 头痛和药物之间存在多对多的关系 当您加重头痛时 您可以选择多种药物 我希望能够指定这些药物的数量 我对 MySQL 更熟悉 您可以在其中创建一个数据透视表
  • ios7 绘图时出现延迟

    我有一个应用程序 在其中我正在视图上绘制一些草图 到目前为止 在我安装之前它运行良好ios7 我的应用程序使用触摸移动方法来识别运动的变化 但是当我画一条线时 触摸方法被调用 但线不会更新 直到我触摸结束ios7 所以画起来有一点点滞后 它
  • Swift:转义闭包捕获非转义参数“onCompletion”

    我的 swift 有问题 我正在尝试发送 API 请求 然后检索数据 但收到以下错误消息 Swift 转义闭包捕获非转义参数 onCompletion 有谁知道我该如何解决这个问题 提前致谢 Code class RestApiManage
  • 在React-native中,如何更改NavigatorIOS的样式

    在react native中 如何更改NavigatorIOS的样式 例如背景颜色 谢谢你 var speedNews React createClass render function return
  • NativeScript:禁用 iOS WebView 缩放控件的方法?

    我正在尝试找出一种方法来防止用户通过捏合手势和双击来放大和缩小 iOS WebView tns ios 3 4 1 本质上禁用所有缩放 就像苹果之前使用的 html 元标记一样让用户决定是否要使用 iOS 10 及更高版本进行缩放 我找到了
  • 如何更改 Quarto pptx 中的字体格式

    我正在 R 中使用 Quarto 创建 pptx 要更改我尝试更改的默认字体格式mainfont范围 但是当我渲染它时 最终的 pptx 文件具有默认字体 Calibri 这是我的文件 YAML 将 Quarto 文件渲染为 pptx 时如

随机推荐

  • 处理我的 Android 应用程序中的文本视图链接单击

    我目前正在 TextView 中渲染 HTML 输入 如下所示 tv setText Html fromHtml a href test test a 显示的 HTML 是通过外部资源提供给我的 因此我无法随意更改内容 但我当然可以对 HT
  • 片段中的函数使模拟器崩溃

    当我将函数放入其中时发生错误onCreateView in menu1 Fragment java 提前抱歉 因为我也会放置我的日志 所以这可能会使我的帖子有点大 所以我会告诉你布局 我是新来的 很抱歉有很多问题 如果我不添加该函数 代码就
  • 记录有共同的基类吗?

    在 NET 类型系统中 所有引用类型都派生自System Object 所有值类型来自System ValueType我认为 是否也有一个共同的基类 record类型源自 如果没有 为什么不呢 是否还有一个所有记录类型派生自的公共基类 不
  • 投射给孩子

    我实际上想做的是投射一个构造的moneypunct to the punct facet in 这个问题无需编写复制构造函数 如下所示这个答案 但为了写一个最小 完整 可验证的示例假设我有这两个课程 class Parent public
  • Android Admob 空间不足,无法展示广告

    使用中提供的代码AdMob 网站 这是我的 xml
  • php 字符串像 python 的“””“””一样转义?

    你好 我想知道是否有一种简单的方法来转义 php 中的字符串 在Python中我使用 并且它们之间的所有内容都被转义 所以当使用特殊字符时它会被忽略 我有一些文本需要回显 手动转义所有内容都需要很长时间 php有内置类似的功能吗 thank
  • 尝试访问 Android 中的 SQLite 数据库时,如何修复 SQLiteOpenHelper.getDatabaseLocked 错误?

    我正在尝试从 Sqlite 数据库检索一些数据 但是当我尝试使用 getTaskSent 方法检索数据时 出现以下错误 谁能建议我解决以下错误 E AndroidRuntime 23159 at android database sqlit
  • Django AND .htaccess 重写/重定向,这可能吗?

    是否可以让 Apache htaccess 重写在到达 django 之前生效 我希望能够指定RewriteRules在优先于 django 的 htaccess 文件中 如果没有匹配的内容 则将其分派到 mod wsgi django 我
  • C 中 const 和 volatile 限定符的用法区别?

    我已经回答了问题 C 中 const 指针和 volatile 指针有什么区别 我理解的解释是 const 修饰符意味着此代码不能更改变量的值 但这并不意味着不能通过此代码之外的方式更改该值 然而 易失性表示 此数据可能会被其他人更改 因此
  • 重新启动游戏并重新实例化对象

    介绍 我正在用 C 创建一个小游戏 并想创建一个重新启动游戏的函数 首先我创建对象player 然后我有一个 if 语句来确定何时按下某个键来调用New 方法 My goal 在该方法中 我想重新实例化 Player 类的对象 因此所有变量
  • 将连接字符串中的排序规则属性设置为 SQL Server 2005

    我有一个 ASP Net Web 应用程序 其 web config 中包含 SQL Server 2005 的连接字符串 Data Source ABCSERVER Network Library DBMSSOCN Initial Cat
  • 找不到 Python Visual Studio 代码模块

    已安装 Python 3 7 6 并尝试在 Visual Studio Code 中编写代码 Using import pikepdf 让我犯以下错误ModuleNotFoundError No module named pikepdf 但
  • 如何使 pygame 窗口全屏显示而不隐藏任务栏

    我目前正在学习pygame 我已经设置了一个窗口并将其设置为全屏 import pygame WIN pygame display set mode 0 0 pygame FULLSCREEN pygame display set capt
  • 通过Java客户端连接Azure服务总线

    我正在尝试使用 AMQP 协议从 Java 客户端连接 Azure 服务总线 我按照以下链接中的说明进行操作 http azure microsoft com en us documentation articles service bus
  • Python pygame 需要帮助同时禁用多个按键

    我创建了一个Frogger游戏原型和我不想允许同时按下两个键进行移动 目前在我的事件函数中我有以下内容 for event in pygame event get check for closing window if event type
  • 来自多个源字段的自动映射器条件映射

    我有一个如下所示的源类 public class Source public Field Fields get set public Result Results get set 并有一个目标类 例如 public class Destin
  • numpy中如何计算两个矩阵的外积?

    我有两个矩阵 A 和 B 大小分别为 NxK 和 MxK 我希望计算大小为 NxMxK 的张量 C 使得 C i j k A i k B j k 如何在 numpy 中有效地实现这一点 所有维度都很大 因此循环不是一种选择 使用循环版本中迭
  • 在 VSCode 中设置 Python 远程调试

    我将远程 ubuntu 16 04 驱动器安装在本地系统 ubuntu 16 04 上 以便我可以通过在 vscode 中打开源文件来编辑源文件 另外 在集成终端中 我可以 ssh 到远程系统并使用安装在虚拟环境中的远程 python 解释
  • Chrome 中不同父元素的 z 索引

    有两个容器 其中一个是固定的并覆盖 100 的屏幕 第二个是相对的 包含可滚动的内容 问题是有四个元素彼此相对定位 如下所示 第一个在固定容器中 第二个在绝对容器中 第三个元素在固定容器中 第四个在绝对容器中 div class conta
  • iOS 等宽自定义字体

    我的 Xcode 7 iOS 9 目标项目中包含自定义字体 我想让字体变成等宽字体 我尝试了这个 但没有成功 let originalFont UIFont name My Custom Font size 18 let originalF