【问题标题】:Why is a button with an image in it making the titleLable text cut off?为什么一个带有图像的按钮会导致 titleLable 文本被截断?
【发布时间】:2017-07-19 04:57:47
【问题描述】:

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

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
}

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

我认为按钮具有固有的宽度和高度,那么为什么 titleLabel 会在这里被截断?宽度不应该只是根据其中的内容(imageView 和标签)扩展吗?有人可以建议我解决此问题的方法吗?

【问题讨论】:

  • 如果您不想更改按钮框架,也可以设置字体大小。
  • 所以我已经为按钮指定了宽度和高度?
  • 请在给出图像和文本后尝试 cameraButton.sizeToFit()
  • 我在view.addSubview(cameraButton) 之后添加了cameraButton.sizeToFit(),但这也没有解决问题。
  • 您必须从情节提要或以编程方式调整按钮宽度、标题插图和图像插图。

标签: ios swift autolayout


【解决方案1】:

尝试设置以下属性

        cameraButton.titleLabel!.numberOfLines = 0
        cameraButton.titleLabel!.adjustsFontSizeToFitWidth = true
        cameraButton.titleLabel!.lineBreakMode = NSLineBreakMode.byWordWrapping

【讨论】:

  • 我只使用了cameraButton.titleLabel!.adjustsFontSizeToFitWidth = true。我希望所有内容都在同一行,所以我没有使用numberOfLines = 0,默认值已经是 1。
  • 帮助很大。谢谢!我也想成为同一行的文字,所以只用了cameraButton.titleLabel!.adjustsFontSizeToFitWidth = true
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 2012-01-18
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
相关资源
最近更新 更多