Ios 使用UILabel作为UIButton-swift的子视图自动调整文本大小

Ios 使用UILabel作为UIButton-swift的子视图自动调整文本大小,ios,swift,uibutton,uilabel,iosdeployment,Ios,Swift,Uibutton,Uilabel,Iosdeployment,我正在创建一个示例应用程序,它在UIButton和image上有一些文本,因为image和text是UIButton的子视图。我用不同的设备运行过,比如iphone5,iphonex,结果与我预期的不一样,因为如果用屏幕比iphonex小的设备运行,那么文本将浮在按钮外 到目前为止我所做的: lazy var myLabelButton: UILabel = { let label = UILabel() label.translatesAutoresizingMaskInto

我正在创建一个示例应用程序,它在
UIButton
image
上有一些文本,因为
image
text
UIButton
子视图。我用不同的设备运行过,比如
iphone5
iphonex
,结果与我预期的不一样,因为如果用屏幕比
iphonex
小的设备运行,那么文本将浮在按钮外

到目前为止我所做的:

lazy var myLabelButton: UILabel = {

    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.text = "titleName"
    label.textColor = .white
    label.font = UIFont(name: "SFCompactText-Regular", size: 14)
    label.adjustsFontSizeToFitWidth = true
    label.minimumScaleFactor = 0.5
    label.sizeToFit()
    return label
}()
我搜索了一些资源,他们让我应用这些功能:

label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5
label.sizeToFit()
以上三个功能都不起作用

以下是全部代码:

button.addSubview(myLabelButton)
NSLayoutConstraint.activate([
  myLabelButton.centerXAnchor.constraint(button.centerXAnchor),
  myLabelButton.centerYAnchor.constraint(button.centerYAnchor),
  myLabelButton.widthAnchor.constraint(button.widthAnchor)
])
有解决方法吗?

尝试在按钮本身而不是标签上使用sizeToFit()

比如说

button.setTitle("Hello world", for: .normal)
button.sizeToFit()

给你,我有办法了

    let label = UILabel()
    label.numberOfLines = 0
    label.textColor = .white

    let button = UIButton()
    button.backgroundColor = .blue

    view.addSubview(button)
    button.addSubview(label)

    label.text = Array(repeating: "Hello", count: 100).joined()

    button.translatesAutoresizingMaskIntoConstraints = false
    label.translatesAutoresizingMaskIntoConstraints = false

    // button constraint
    NSLayoutConstraint.activate([
        view.leadingAnchor.constraint(equalTo: button.leadingAnchor),
        view.trailingAnchor.constraint(equalTo: button.trailingAnchor),
        view.centerYAnchor.constraint(equalTo: button.centerYAnchor)
    ])


    // label constaint
    NSLayoutConstraint.activate([
        button.leadingAnchor.constraint(equalTo: label.leadingAnchor),
        button.trailingAnchor.constraint(equalTo: label.trailingAnchor),
        button.topAnchor.constraint(equalTo: label.topAnchor),
        button.bottomAnchor.constraint(equalTo: label.bottomAnchor)
    ])