为啥我的 UIButton 图像大小在模拟器和设备中不同?

Posted

技术标签:

【中文标题】为啥我的 UIButton 图像大小在模拟器和设备中不同?【英文标题】:Why is my UIButton Image size different in Simulator and Device?为什么我的 UIButton 图像大小在模拟器和设备中不同? 【发布时间】:2014-08-16 09:32:19 【问题描述】:

我创建了一个屏幕,上面有 2 个图像(150 x 150 像素),旨在占据大部分屏幕。这在模拟器中看起来不错,但是当我在设备上实际运行应用程序时,图像已经缩小到非常小。我假设设备大小是实际图像本身的大小。

我使用了非常高质量的图像,因此您不会注意到图像在模拟器上已被拉伸。

有什么东西可以用来确保我始终使用 150x150 尺寸吗?

非常感谢

乔恩

【问题讨论】:

你使用imageNamed吗?是否支持retina(扩展前带有@2x后缀的图片)?显示一些代码! 可能只是您的约束设置错误。您能否提供更多详细信息,您是否使用情节提要?自动布局?您是否使用任何代码设置 UIImageView 的框架,您的模拟器是 4 英寸,设备是 3.5 英寸?提供尽可能多的相关细节将使人们有可能向您展示您哪里出错了。 谢谢各位。我根本没有使用 any 代码。我只是将一个按钮拖到 Storyboard 中并为其分配了一个本地图像。我也没有设置带有@2x 后缀的图像。我正在使用 Autolayout,但我什么都没配置(即我使用的是默认值)。它似乎没有自动布局任何东西。当我旋转设备时,我只是失去了屏幕的底部,所以我认为它无论如何都不起作用。 【参考方案1】:

根据您的描述,这可以通过简单地为情节提要上的每个对象设置约束来解决。

为了给你一个例子来说明如何做到这一点,我在情节提要中添加了两个 UIImageView 对象。选择第一个对象并按下底部的约束按钮,如下图所示,您需要确保至少设置了 4 个约束。具体来说,检查 HEIGHT、WIDTH 并通过选择相应的支柱来选择到 LHS 的距离和到 TOP 的距离,这将变为突出显示的橙色(见图)

完成后,按底部的“添加 4 个约束”按钮。然后对第二个 UIImageView 对象重复此操作。

当正确设置约束(没有冲突)时,如果您选择对象,它们将可见,并且约束线将为蓝色(见下图)

按照这些步骤将对象添加到情节提要中,这将解决设备上图像被压扁的问题。进一步阅读配置自动布局约束将非常有用。

希望对你有帮助

【讨论】:

我将不得不消化这个。我目前正在使用按钮,所以界面有点不同。如果我使用 UIImages,那么我将不得不更改操作选择,因为它与按钮不同。我会告诉你我过得怎么样 - 谢谢。 @JonM 您是否在 UIButton 中设置图像?无论是什么对象,UIImageViews、UIButtons、UIlabels 等,它们都可以使用约束来设置,如上所述。如果您使用图像设置 UIButton,则使用上述方法将 UIButton 的图像设置为 setBackgroundImage:(而不是 setImage:) 也会有所帮助。 谢谢@Jeely。排序。我添加了宽度和高度约束,它在 iPhone 上的外观与在模拟器中完全一样。【参考方案2】:
    只需检查您的图像名称,因为设备区分大小写但模拟器不。更改图像名称后,如果它可以正常工作。 您可以添加 2x 版本的图像(如:yourImage@2x.png)。 从设备中删除已安装的应用,然后再次运行。

我想它会对你有所帮助。

【讨论】:

感谢 Monikanta - 但 '1' 是不可能的。我正在使用项目中包含的文件,只需将它们作为下拉菜单选择。不过,当我手动编码嵌入时,很高兴知道将来。

以上是关于为啥我的 UIButton 图像大小在模拟器和设备中不同?的主要内容,如果未能解决你的问题,请参考以下文章

界面生成器 UIButton 自定义背景图像在模拟器/设备上不起作用

如何修复 UIButton 的图像大小?

为啥 UIButton 在模拟器中这么大?

UIImages 不会根据设备大小调整大小

UIButton 的动画图像不快速显示

为啥我的应用程序图标没有出现在模拟器或设备上?