标签不调整字体大小以适应宽度

Label does not adjust Font Size to fit width

尽管我在 ViewController class:

中输入了这段代码,但我的应用程序看起来是这样的
@IBOutlet var label: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    label.text = "Hello World"
    label.adjustsFontSizeToFitWidth = true
    label.numberOfLines = 1
    label.minimumScaleFactor = 0.1
}

您的文本数据不超过 label 宽度,这就是标签 text font 与已设置的相同的原因。 如果您的文本数据多于标签 width 那么它将根据 width.

adjust font

Please check with label text: "This is the demo to test label text is adjustable or not. You need to test it with this demo data"

您的标签 font 将根据宽度进行调整。

如果给定的文本大于标签的宽度,字体将会调整。

在操场上试试这个:

//: A UIKit based Playground for presenting user interface

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
 override func loadView() {
    let view = UIView()
    view.backgroundColor = .white

    let label = UILabel()
    label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)

    label.adjustsFontSizeToFitWidth = true
    label.numberOfLines = 1
    label.backgroundColor =  UIColor.lightGray

    label.text = "Hello World! How are you doing today? "
    label.textColor = .black

    view.addSubview(label)
    self.view = view
 }
}
 // Present the view controller in the Live View window
 PlaygroundPage.current.liveView = MyViewController()

结果如下:

按照这篇简单的 gitconnected 文章 (请参阅 link 了解所有需要代码!!)。我只需要进行两项调整,即添加 label.baselineAdjustment = .alignCenterslabel.numberOfLines = 1 行,这样我的标签创建现在看起来像这样...

let dynamicFontLabel: UILabel = {
    let label = UILabel()
    label.font = .systemFont(ofSize: 40)
    label.textAlignment = .center
    label.numberOfLines = 1;
    label.textColor = .black
    label.adjustsFontSizeToFitWidth = true
    label.baselineAdjustment = .alignCenters
    label.translatesAutoresizingMaskIntoConstraints = false
    return label
}()

label.baselineAdjustment = .alignCenters 属性 确保如果我的字体太大并且需要缩小,我的文本仍将在 UILabel 中保持垂直居中。我也只希望我的文本只跨越一行,所以如果你想要更多,你可以删除 label.numberOfLines = 1 属性.