Swift 3.0 - UIButton标签高度高度为零

时间:2017-07-14 10:47:14

标签: ios swift

我正在为我的应用中的页面添加一个简单的更新按钮。该按钮有一个imageView,应该有一个标题"立即更新"在视图之上。

在视图层次结构中,我可以看到UILabel是UIButton的子视图。但是打印UILabel的描述会返回框架

(250 20; 283 0).

这是我的代码

let updateButton = UIButton()
updateButton.frame = CGRect(x: centreX(parent: self.view, width: 150), y: 200, width: 150, height: 40)
updateButton.setImage(UIImage(named:"my-image"), for: .normal)

updateButton.setTitle("Update Now", for: .normal)
updateButton.titleLabel?.sizeToFit()
updateButton.titleLabel?.frame = updateButton.frame
updateButton.setTitleColor(UIColor.black, for: .normal)
self.view.addSubview(updateButton)

我想到了两行

updateButton.titleLabel?.sizeToFit()
updateButton.titleLabel?.frame = updateButton.frame

会改变标签框架的高度。我在这里缺少什么吗?

使用Swift 3.0和iOS 10

2 个答案:

答案 0 :(得分:2)

我认为您需要设置背景图像而不是如下图像

updateButton.setBackgroundImage(UIImage(named: "my-image"), for: .normal)

答案 1 :(得分:1)

我发现了这个问题。来自UIButton文档

  

提供标题字符串或图像;根据您的内容适当调整按钮大小。

这意味着只能设置其中一个属性。当我首先设置图像时,这就是显示的内容。这是我看不到标签的原因。

当我解决方法时,我有两个解决方案:

首先 - 使用标题并设置背景颜色

updateButton.setTitle("Update Now", for: .normal)
updateButton.setTitleColor(UIColor.white, for: .normal)
updateButton.backgroundColor = UIColor(patternImage: UIImage(named: "my-image")!)

这就是我用的。我不得不缩放背景图像以适应视图。

或者 - 创建一个结合立即更新文本的新图像

updateButton.setImage(UIImage(named:"my-new-image"), for: .normal)

我希望这有助于其他人。