gpt4 book ai didi

ios - 如何为辅助功能的动态文本大小调整创建自定义 UILabel

转载 作者:行者123 更新时间:2023-11-30 10:55:46 27 4
gpt4 key购买 nike

我有一个自定义 UILabel 类,它使用用户通过“设置”>“常规”>“辅助功能”>“较大文本”选择的字体规范和大小自动缩放字体:

import UIKit

class AccessibilityLabel: UILabel {

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)

font = UIFontMetrics.default.scaledFont(for: font)
adjustsFontForContentSizeCategory = true
}
}

在我们现有的相当大的项目中,这非常有效。

它不起作用的地方是在代码中设置字体的地方。当在代码中设置字体时,它会删除缩放。我们可以检查并更改我们设置字体以缩放它的所有代码。也许这是最好/唯一的方法。

但我想知道是否有人知道我可以覆盖 UILabelfont 属性的方法,以便它在尚未缩放的情况下对其进行缩放,因此不会创建无限循环。基本上,这是一些我们不必遍历现有代码并更新多个位置的解决方案。只需在一处(在 UILabel 中)进行更改即可。

谢谢!

最佳答案

这是我在一个仅包含一个标签的空白项目{Xcode 11,iOS 13}中所做的:

class AccessibilityLabel: UILabel {

private var _font: UIFont?
override var font: UIFont? {
get { return _font }
set { _font = UIFontMetrics.default.scaledFont(for: newValue!) }
}

required init?(coder: NSCoder) {
super.init(coder: coder)

self.adjustsFontForContentSizeCategory = true
}
}

然后,我在 ViewController 中以编程方式更改了字体,如下所示:

//@IBOutlet weak var myLabel: AccessibilityLabel!
myLabel.font = UIFont(name: "NoteWorthy", size: 20.0)

...以获取不同大小文本的结果: enter image description here enter image description here enter image description here

如果我完全理解您的问题,我认为这个解决方案应该可以帮助您仅在一个地方自定义 UILabel,而无需遍历现有代码

...否则,如果有什么我误解的地方,请告诉我。

关于ios - 如何为辅助功能的动态文本大小调整创建自定义 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53964099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com