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

时间:2018-05-05 20:42:06

标签: swift label uilabel size font-size

enter image description here

这是我的应用程序看起来的样子,虽然我在ViewController类中输入了这段代码:

@IBOutlet var label: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

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

3 个答案:

答案 0 :(得分:1)

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

  

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

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

答案 1 :(得分:0)

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

在游乐场试试这个:

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

结果如下: enter image description here

答案 2 :(得分:0)

通过遵循这篇简单的 gitconnected 文章(请参阅链接以获取所有必需的代码!!).我只需要进行两个调整,即添加行 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 属性。