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

Swift 标签不会调整字体大小以适应宽度,swift,label,uilabel,size,font-size,Swift,Label,Uilabel,Size,Font Size,这就是我的应用程序的外观,尽管我在ViewController类中输入了以下代码: @IBOutlet var label: UILabel! override func viewDidLoad() { super.viewDidLoad() label.text = "Hello World" label.adjustsFontSizeToFitWidth = true label.numberOfLines = 1 label.minimumSca

这就是我的应用程序的外观,尽管我在ViewController类中输入了以下代码:

@IBOutlet var label: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

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

您的文本数据不超过标签的宽度,这就是为什么标签与已设置的相同。 如果文本数据大于标签
宽度
,则它将根据
宽度
调整字体

请检查标签文本:“这是测试标签文本是否可调整的演示。您需要使用此演示数据进行测试”


标签
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()
结果如下:

通过这篇简单的文章,我可以让我的UILabel字体动态调整到适合其父字体的必要大小(请参阅链接以获取所有必需的代码!!)。我只需要做两个调整,添加行
label.baselineAdjustment=.alignCenters
label.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
属性。

可以更精确一些吗?那么如何解决另一个问题呢?将文本放入其容器中,不仅当文本较大时,而且当文本小于其容器大小时