获取属性标签上的动态类型

问题描述 投票:3回答:1

目前我正在开发一个项目,我需要让整个应用程序使用动态类型,这意味着应用程序中的所有文本都可以通过手机设置应用程序调整大小。

所有标签在属性检查器中都有一个标记,称为“动态类型 - 自动调整字体”,勾选标签时可以动态调整大小。

请记住,我的应用程序是在iOS 10中,并且所有字体都必须是默认的系统字体,因此我可以应用文本样式(标题1,正文,标注等),然后允许动态调整文本大小。

现在问题是我有带有属性文本的标签。在我的情况下,我有一个包含2种不同颜色的标签,第二种颜色的文字带有下划线。没有选项可以使用属性标签获取动态类型,因此无法调整大小。

我的临时解决方案是创建2个不同的标签,每个标签都有自己的颜色但第二个问题需要强调。我不知道如何实现这一目标。我尝试在它下面添加一行(UIView是一个像素高),但该行不会调整动态文本大小,这意味着当我调整文本大小时,行保持不变。

上面你可以看到我的临时解决方案。文本大小确实用2个不同的标签调整,但下划线保持不变(UIView是一个像素高)。

有关如何实现这一目标的任何建议?非常感激。

ios objective-c uilabel accessibility nsattributedstring
1个回答
0
投票

将您的“联系人”和“我们”字样作为一个NSMutableAttributedString添加underlineStyle属性,如下所示:

    @IBOutlet weak var myLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        let myString = "Contact Us"

        let myText = NSMutableAttributedString(string:myString,
                                               attributes: [
                                                .font: UIFontMetrics(forTextStyle: .title1).scaledFont(for: UIFont(name:"HoeflerText-Black", size:18)!,
                                                .underlineStyle:NSUnderlineStyle.single.rawValue)
                    ])

        myLabel.attributedText = myText
    }

Dynamic Type与此片段一起使用可提供您希望的结果。 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.