图像在运行时自动调整大小但不在界面生成器上

Posted

技术标签:

【中文标题】图像在运行时自动调整大小但不在界面生成器上【英文标题】:Image Automatically Resized In Run-time But Not On Interface Builder 【发布时间】:2014-11-14 20:58:35 【问题描述】:

好吧,现在这让我很苦恼。我有一个大小为 10x36px 的 PNG 图像。 当我尝试在我的任何视图中使用它时,它会调整大小。不是 frame 属性,这个属性保持不变。但从视觉上看,图像就不一样了。

真实的形象是这样的。 (抱歉,您几乎看不到它。那是因为它在白色前景上有白色背景)。

但是当我在模拟器中时(它也发生在设备上)它看起来像这样。

.

我没有使用约束(我关闭了 AutoLayout 以找到错误)。

我打印了该按钮的框架,它的宽度、高度、x 和 y 值与界面构建器中的值一样。我把它们打印在各处,也为了应对不同的事件(我知道,这不是原因。我只是绝望)。

这种情况只发生在这个 PNG 上,特别是导致我在相同视图中的其他 UIButton,但使用不同的图像,工作得很好。

这个错误的原因可能是什么?

编辑:

尝试作为背景图像它变得更好。但仍然不完美。

【问题讨论】:

我不明白你想要它是什么样子... 嗯,构成图像的那三条小线比模拟器中显示的要大。同意吗? 嗯,我不知道,但我对模拟器图像的唯一问题是它比标准图像更薄。我想大多数人都希望它有一个方形的方面。 在这种情况下,图像的高度会变小。请注意,这不仅仅发生在模拟器上。在我的 iPhone 上也是如此。 当您说您关闭了自动布局时,您的意思是您取消选中了 IB 中 SB 中的框吗?还有你只有一个SB吗? 【参考方案1】:

在 Photoshop/Pixelmator 中将 png 图像放在一个空的 36x36 png 图像中,以停止调整大小并保留原始比例。

或者尝试在 Interface Builder 中或以编程方式将视图内容模式设置为“aspect fit”:

yourImageView.contentMode = UIViewContentModeScaleAspectFit;

原因可能是 UIBarButtons 对图像的处理方式与 UIButtons 不同。 UIBarButtons 通常用于 UINavigationBars 或 UIToolbars,而 UIButtons 通常用于 View。

【讨论】:

【参考方案2】:

确保您使用的是按钮背景图片而不是按钮图片。

按钮背景图片覆盖整个按钮背景。

按钮图像将图像放置在背景的一部分上。

另外,使用 xcassets。它带有项目模板。如果你没有它(删除它),添加一个新的并创建一个图像集。一旦你这样做,添加你的图像。确保为图像集中的每个图像选择“渲染为原始图像”。

【讨论】:

【参考方案3】:

您链接到的 PNG 图像不是 10x36 像素,而是 10x30。哎呀?

【讨论】:

为什么这是一个答案? 如果您在尺寸不匹配的框架中显示图像,则会发生拉伸。 只有 6 个像素。 IMO,我的图像太小了,不能说它只缺少 6 个像素。它所缺少的远不止这些。 作为第一步,我会尝试使用尺寸与您的框架尺寸完全匹配的背景图像。 试过了。同样的事情。

以上是关于图像在运行时自动调整大小但不在界面生成器上的主要内容,如果未能解决你的问题,请参考以下文章

即使有约束,UIButton 图像也会自动调整大小

如何在浏览器宽度调整大小但保持相同高度时自动调整图像大小?

UIImageView 在我设置图像时移动或调整大小

使用垂直自动调整大小时视图向上移动

标签中的Python PIL图像自动调整大小

如何在界面生成器的导航控制器中调整子视图的大小