更改按钮图像时,更改按钮大小。为啥?

Posted

技术标签:

【中文标题】更改按钮图像时,更改按钮大小。为啥?【英文标题】:When changing the button image, the button size is changed. Why?更改按钮图像时,更改按钮大小。为什么? 【发布时间】:2015-08-12 07:05:16 【问题描述】:

在 IB 中,按钮大小和位置已使用自动布局完美设置。但是当我尝试使用以下更改按钮图像时

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,请确保两个按钮图像具有相同的分辨率!这将减少图像自行调整大小的机会。

【问题讨论】:

您是否尝试设置背景图像? 不,我没有。我需要吗? 【参考方案1】:

尝试关注

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

希望对你有帮助

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

要对此进行测试,请尝试将按钮的 clipsToBounds 设置为 YES。

它会剪掉任何超出按钮边界的东西。

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

【讨论】:

以上是关于更改按钮图像时,更改按钮大小。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在按钮单击时更改图像视图大小[重复]

iOS - 如何在不调整大小和重新定位按钮视图的情况下更改按钮图像

当我更改视图时,为啥我的按钮首选项/参数会重置?

以编程方式更改浮动按钮图像大小

以编程方式更改条形按钮背景的图像大小?

第一次更改图像时 UIImageView 内存增加