更改按钮图像时,按钮大小会更改。为什么呢?

时间:2015-08-12 07:05:17

标签: ios objective-c uibutton uiimage

在IB中,使用autoLayout可以很好地设置按钮大小和位置。但是当我尝试使用以下

更改按钮图像时
if (need_Update) {
[_updateButton setImage:[UIImage imageNamed:@"ipad_012_01_update2.png"] forState:UIControlStateNormal];
} 
else {
[_updateButton setImage:[UIImage imageNamed:@"ipad_012_01_update.png"] forState:UIControlStateNormal];
}

按钮大小已更改。我想知道为什么会这样?我怎么能解决它?

我的意思是,例如,原始按钮图像是iPad_012_01_update.png,它显示完美。当need_Update值为YES时,按钮图片更改为ipad_012_01_update2.png,但按钮大小也会更改。

提前致谢!

摘要

使用Background Image是一种防止不必要的尺寸更改的好方法!

此外,还有一个教训:如果您确实想使用button image而不是button background image,请确保两个按钮图像具有相同的分辨率!这将减少图像自身调整大小的机会。

3 个答案:

答案 0 :(得分:2)

尝试以下

if (need_Update) {
[_updateButton setBackgroundImage:[UIImage imageNamed:@"ipad_012_01_update2.png"] forState:UIControlStateNormal];
} 
else {
[_updateButton setBackgroundImage:[UIImage imageNamed:@"ipad_012_01_update.png"] forState:UIControlStateNormal];
}

希望这有帮助

答案 1 :(得分:0)

缩放背景图像以填充UIButton的边界,并显示在标题后面。前景图像未缩放,并显示在按钮标题旁边。因此,尝试设置按钮的backgroundImage。

UIButton image and background image, which one to use for custom image?

答案 2 :(得分:0)

从它的外观来看,你的图像似乎超出了按钮的界限,所以看起来按钮大小正在变化。

要测试此功能,请尝试将按钮的clipsToBounds设置为YES。

它将剪切超出按钮范围的任何内容。

因此,您将能够以更好的方式对其进行分析,并相应地决定您希望如何向前发展。