swift NSAttributedString中的动态文本大小调整

wz3gfoph  于 2022-10-31  发布在  Swift
关注(0)|答案(2)|浏览(160)

我正在尝试在应用程序中支持 * 大字体辅助功能 *。有些地方我们使用NSAttributedString来设置UILabelattributedText
UILabel上,我们设置了adjustsFontForContentSizeCategory = true。另外,在属性中,我们使用UIFontMetrics来允许标签适应大小的变化。

UIFontMetrics(forTextStyle: .caption2).scaledFont(for: UIFont.systemFont(ofSize: 11))

出版日期:

当我运行应用程序时,UILabel按照设备当前的大小类别显示attributedText。但是,当我从设备的辅助功能设置中更改大小类别时,UILabel没有相应地更新。
如何解决此问题?

6pp0gazn

6pp0gazn1#

我希望这是你使用的正确方法,因为这绝对是我遵守的方法(而且它很有效)。
我在Interface Builder(Xcode 13.4.1) 中创建了一个空白项目,如下所示:

我将UILabel文本编码为NSAttributedString,以遵循您的模式,并为Dynamic Type特性添加一些其他内容:

class ViewController: UIViewController {

    @IBOutlet weak var myLabel: UILabel!

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        let myText = NSAttributedString(string: "hello C.A.P.T.I.O.N. 2")
        myLabel.attributedText = myText

        myLabel.adjustsFontForContentSizeCategory = true
        myLabel.font = UIFontMetrics(forTextStyle: .caption2).scaledFont(for: UIFont.systemFont(ofSize: 11.0))
    }
}

最后,我在iPhoneProMax(15.6.1)上得到了以下结果:

我不知道您的代码中包含了什么,但是,根据这一原理,您现在可以在NSAttributedString中使用动态文本大小调整

brtdzjyr

brtdzjyr2#

我遇到了同样的问题,我发现NSAttributedString中的settings .font导致标签不能根据辅助功能设置相应地调整大小。通过删除它并添加label.font属性,它工作得很好。

相关问题