为什么带有图像的按钮会使titleLable文本被切断?

Cap*_*ree 1 ios autolayout swift

我在下面有这个代码,它在代码中创建一个按钮,并将按钮置于其超级视图的中间:

let cameraButton: UIButton = {
        let button = UIButton()
        button.setImage(UIImage(named: "cam"), for: .normal)
        button.setTitle("Take Pic", for: .normal)
        button.setTitleColor(UIColor.black, for: .normal)
        button.translatesAutoresizingMaskIntoConstraints = false
        button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 0)
        return button
}()

override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        view.addSubview(cameraButton)
        cameraButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
        cameraButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
}
Run Code Online (Sandbox Code Playgroud)

一切正常(因为按钮位于视图中心的中心)但titleLabel文本由于某种原因被切断(如下图所示):

在此输入图像描述

我认为按钮具有固有的宽度和高度,那么为什么titleLabel会被切断呢?宽度是否应该根据其内部(imageView以及标签)扩展?有人可以建议我解决这个问题的方法吗?

Ell*_*len 5

尝试设置以下属性

        cameraButton.titleLabel!.numberOfLines = 0
        cameraButton.titleLabel!.adjustsFontSizeToFitWidth = true
        cameraButton.titleLabel!.lineBreakMode = NSLineBreakMode.byWordWrapping
Run Code Online (Sandbox Code Playgroud)

  • 我只用过`cameraButton.titleLabel!.adjustsFontSizeToFitWidth = true`.我希望所有内容都在同一行,所以我没有使用`numberOfLines = 0`,默认已经是1. (2认同)