2012-03-12 44 views
3

这可能是一个非常简单的问题,但我一直坚持这一个星期。我正在使用UIImageView来显示Dropbox品牌的PNG图像。我在Interface Builder中看到它是正确的,但很容易注意到iOS模拟器和实际设备(iPad)中的强烈像素化。我在这里一起附上IB的屏幕捕获与模拟器:UIImageView在iOS模拟器和设备上的PNG像素化

On the left the IB. On the right the simulator. Notice the pixelation.

我真的很感激任何提示。

在此先感谢!

+0

这是一个8位或24位的PNG? – 2012-03-12 18:16:42

回答

4

InterfaceBuilder是一个完全不同于iOS或甚至模拟器的环境。布局和其他应该翻译,但一切看起来应该总是判断(并因此设计)最终产品的方式。

它看起来像你的图像被略微拉伸。这有几个原因。首先要检查的是UIImageView上的调整大小掩码。这对于UIImageView自动调整大体上是不利的 - 正是出于这个原因。

顺便说一下,autoresizing是UIKit确保子视图在父视图更改大小时仍然适合/看起来不错的方式。你可以指定你想要一个子视图移动多少,也可以指定你想要展开多少。阅读关于它here

你想要做的是设计你的视图 - 回答这个问题:我希望这幅图像在最终产品中有多大? - 然后制作出实际的PNG大小(也会产生@ 2x变体,这是视网膜显示器尺寸的两倍)。然后,在IB中进行设计时,制作您的UIImageView,并确保将自动调整设置设置为禁止拉伸。

这应该解决您的问题。

+1

尽管您通常希望避免调整图像大小,但在某些情况下,设备旋转或其他更改会有意义。在这些情况下,iOS通常比屏幕截图做得更好。换句话说,你看到的那种文物通常只会出现在极端的情况下,比如或略微或大幅度地放大或缩小图像。或者,它可能是您的图像是8位PNG而不是24位PNG。 – 2012-03-12 18:24:52

2

检查以确保图像的大小与您的UIImageView的大小相匹配。如果图像恰好小于目标图像视图,它将伸展以填充它,这可能导致像素化。此外,如果您正在运行iPad的新5.1模拟器,它将默认使用新的视网膜屏幕,这意味着您将需要@ 2x尺寸的图像以防止像素化。

相关问题