改变uibutton的背景图像使框架变得巨大

时间:2015-04-17 20:53:11

标签: ios swift uibutton

我使用以下代码以编程方式更改uibutton的背景:

firstButton.setImage(UIImage(named: "drinks-sub-first"), forState: UIControlState.Normal)

麻烦是按钮不再受我在.xib文件中设置的约束的限制,现在占用整个屏幕。我究竟做错了什么?如何使按钮保持与更改背景图像之前相同的尺寸?

我也尝试过这种方法

var frame = firstButton.frame
firstButton.setImage(UIImage(named: "drinks-sub-first"), forState: UIControlState.Normal) //tried setBackgroundImage function as well
firstButton.frame = frame

3 个答案:

答案 0 :(得分:1)

您没有使用方法setImage()设置背景图像。该方法在UIButton上设置附件图像。

要设置按钮的背景图像,请使用以下方法:

setBackgroundImage(image: UIImage?, forState state: UIControlState)

答案 1 :(得分:1)

检查您为按钮设置的约束。您应该将宽度和高度设置为“小于或等于”您想要的任何值;你可能将它们设置为“大于或等于”。或者,如果您希望它们具有相同的宽度和高度,则将约束设置为“等于”该值。

答案 2 :(得分:0)

我是一个新手,但我在这里得到了很多帮助,我觉得有必要随时帮助我。查看有关使用按钮背景图像的快速教程:http://www.raywenderlich.com/78264/learn-to-code-ios-apps-with-swift-tutorial-5

从教程:

您可能会注意到此时按钮看起来有点挤压。这是因为您的硬编码宽度和高度约束小于图像本身。 (在你的情况下,我猜对了,但仍然......)

幸运的是,有一种简单的方法可以解决这个问题。所有视图都具有称为内在内容大小的内容,您可以将其视为自动约束,将其设置为所呈现元素的大小。对于图像,它将是图像本身的大小。

因此,您可以依靠图像的内在内容大小来适当调整图像视图的大小,而不是使用硬编码的宽度和高度约束。