为啥一个带有图像的按钮会导致 titleLable 文本被截断?
Posted
技术标签:
【中文标题】为啥一个带有图像的按钮会导致 titleLable 文本被截断?【英文标题】: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()
,但这也没有解决问题。
您必须从情节提要或以编程方式调整按钮宽度、标题插图和图像插图。
【参考方案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
以上是关于为啥一个带有图像的按钮会导致 titleLable 文本被截断?的主要内容,如果未能解决你的问题,请参考以下文章