【问题标题】:Label does not adjust Font Size to fit width标签不调整字体大小以适应宽度
【发布时间】:2018-10-16 01:24:54
【问题描述】:

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

@IBOutlet var label: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

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

【问题讨论】:

  • 你能说得更准确点吗?

标签: swift label uilabel size font-size


【解决方案1】:

按照这篇简单的gitconnected 文章(请参阅链接以获取所有必需的代码!!),我能够让我的 UILabel 字体动态调整为必要的大小以适应其父级。我只需要进行两项调整,即添加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 属性。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 那么如何解决另一个问题?将文本实际放入其容器中,不仅是在它更大的情况下,而且在它小于其容器大小的情况下
    【解决方案3】:

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

    在操场上试试这个:

    //: 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()
    

    结果如下:

    【讨论】:

      猜你喜欢
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多