Ios 更改按钮图像时,按钮大小将更改。为什么?

Ios 更改按钮图像时,按钮大小将更改。为什么?,ios,objective-c,uibutton,uiimage,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

在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];
}
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];
}
按钮大小已更改。我想知道为什么会这样?我怎样才能修好它呢

我的意思是,例如,原始的按钮图像是iPad\u 012\u 01\u update.png,它显示得非常完美。当
need\u Update
值为
YES
时,按钮图像更改为
ipad\u 012\u 01\u update2.png
,但按钮大小也会更改

提前谢谢

总结 使用
背景图像
是防止不必要的尺寸变化的一个非常好的方法


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

背景图像将缩放以填充UIButton的边界,并显示在标题后面。前景图像不缩放,并显示在按钮标题旁边。所以试着设置一个按钮的背景图像

尝试以下内容

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];
}
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];
}

希望这有帮助

从外观上看,您的图像似乎超出了按钮的范围,因此对您来说,按钮大小似乎在变化

要测试这一点,请尝试将按钮的clipsToBounds设置为YES

它将剪辑任何超出按钮边界的内容


因此,您将能够以更好的方式对其进行分析,并据此决定如何前进。

您是否尝试设置背景图像?不,我没有。我需要吗?