自动布局 3 uibutton 的内容图像不正确,宽度与屏幕宽度成比例

incorrect content image with autolayout 3 uibutton same width proportionaly to width screen

我有 3 个按钮,它们的宽度与屏幕宽度成比例, 并且没有约束错误,

(=leadingsuperview)button1(=HSpace)button2(=HSpace)button3(=trailingsuperview)

按钮 2 与按钮 1 的宽度相同

按钮 3 与按钮 1 的宽度相同

button1 中心垂直于 superview

按钮 2 和 3 居中垂直于按钮 1

button1 高度与其宽度成正比1:1比率

button2 和 3 等于 button1 的高度

结果:

3 个按钮具有正确的框架(我知道为什么它是正确的,因为我将背景颜色设置为黄色并且它的真实宽度相同)

但不正确的部分是,为什么只有第一个按钮图像较小,而其他按钮的图像尺寸正确。

已经在 interfacebuilder 中设置如下:

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentFill];
[btn setContentVerticalAlignment:UIControlContentVerticalAlignmentFill];

3个按钮相同属性,

但为什么只有第一个按钮的图像内容不正确,就像它出于某种原因的纵横比一样(我没有设置纵横比或其他任何设置)。

有关更多详细信息,请参见下面的这些图片:

在 interface-builder:

编译设备:

有人经历过吗?

ps: 对于 iOS >=8.4

您可能使用了 UIButton 的 image 属性 而不是 backgroundImage ,这与其他按钮不同。您可以通过这样的代码设置 backgroundImage;

[button setBackgroundImage:anImage forState:UIControlStateNormal]

或者,您可以使用 UIButton 的文件检查器在故事板上设置它。

我认为 Stack View 在这种情况下会做得更好。

在界面构建器中:

在属性检查器中:

button1 的高度与其宽度成正比1:1 button2 和 button3 没有任何约束

希望对您有所帮助:)

我找到了解决方案:

这是因为我有自定义 class 属性 在界面构建器的运行时构建。

我忘记删除第一个按钮自定义 属性,这解释了为什么只有第一个按钮不正确。