【问题标题】:Getting dynamic type on attributed label在属性标签上获取动态类型
【发布时间】:2017-11-24 10:42:03
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: ios objective-c uilabel nsattributedstring dynamic-type-feature


    【解决方案1】:

    把你的“Contact”和“Us”字作为一个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 与此sn-p 一起使用可提供您希望的结果;

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 2017-01-15
      • 2013-01-04
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 2019-11-11
      相关资源
      最近更新 更多