ios - 如何以编程方式设置字体大小以适应 swift 4 中的行数值

标签 ios swift fonts

我有两个名为 headingLabel 和 descriptionLabel 的 UILabel,它们的行数分别为 3 和 5。现在我希望文本的字体大小发生变化并适合 numberOfLines,其中文本根据收到的一些网络 json 数据而变化。

image for text in iphone5s image for text in iphoneX

 here is my code

    let headingLabel : UILabel = {
        let hl = UILabel()
        hl.translatesAutoresizingMaskIntoConstraints = false
        hl.text = "Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor"

        hl.textColor = .black
        hl.lineBreakMode = NSLineBreakMode.byWordWrapping
        hl.numberOfLines = 3;
        hl.sizeToFit()
        hl.clipsToBounds = true
        hl.font = hl.font.withSize(20)

        return hl
    }()

    let descriptionLabel : UILabel = {
        let dl = UILabel()
        dl.translatesAutoresizingMaskIntoConstraints = false
        dl.text = "Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolorLorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor"
        dl.textColor = .black
        dl.lineBreakMode = NSLineBreakMode.byWordWrapping
        dl.numberOfLines = 5
        dl.font = dl.font.withSize(18)
        dl.sizeToFit()
        dl.clipsToBounds = true
        dl.alpha = 0.8
        return dl
    }()

最佳答案

使用 Autoshrink 将文本调整到标签框架中。

Authoshrink 最小字号

enter image description here

Authoshrink with Minimum Font Scale

enter image description here

有关 UILabel 的 Apple 文档 - Autoshrink

确定标签是否在求助于截断之前调整文本的外观。选择最小字体比例并输入一个值以允许标签缩小字体大小以适合文本。启用 Tighten Letter Spacing 以允许标签减少字符间距。在运行时分别使用 minimumScaleFactor 和 allowsDefaultTighteningForTruncation 属性访问这些值。

关于ios - 如何以编程方式设置字体大小以适应 swift 4 中的行数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50623966/

相关文章:

ios - 如何向 AVPlayerLooper 添加平滑的淡入/淡出过渡?

swift - 未使用的变量和 '_'

html - 链接后插入空格

html - CSS + 字体 + 图片替换

ios - 启动屏幕的正确图标大小

ios - 如何从html5项目生成.ipa文件

objective-c - 带提示的导航栏-替换为图片

ios - 在 Xcode 崩溃报告中发现问题

ios - 如何从父 ios 应用程序调用 watchkit 扩展中的方法

css - 向 Twitter Bootstrap 添加新字体系列