2012-03-12 79 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尺寸的圖像以防止像素化。

相關問題