2013-07-24 36 views
0

當前我正在爲我的UITableView附件視圖使用自定義圖像。我使用此自定義圖像將附件視圖設置爲圖像視圖。如果我使用cell-arrow.png(15x15像素),它看起來相當像素化。但是,如果我使用cell-arrow.png(100x100像素),然後在代碼中重新調整大小[見下文],那麼它看起來好多了。爲什麼是這樣?用iOS Retina顯示屏奇怪的重新調整大小和分辨率

後續問題:

似乎已經確定,使用一個100x100px圖像,然後調整其大小降低到15×15看起來在設備上更好的(特別是與視網膜,還沒有完全測試它是< 4.0)。 後續問題是我可以設置圖像的最大尺寸以便增加分辨率?例如,我測試了一個相同的確切cell-arrow.png圖像的1024x1024版本,它看起來與我重新調整100x100像素圖像的大小相同。

* 代碼用來重新大小的圖片:*

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 15.0f, 15.0f); 
    UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect]; 
    [myImage setImage:[UIImage imageNamed:@"cell-arrow.png"]]; 

    // cellArrowNotScaled ends up making the image look very pixelated 
    // UIImageView *cellArrowNotScaled = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cell-arrow15.png"]]; 

    cell.accessoryView = myImage; //cellArrowNotScaled; 
+0

您是否爲cell-arrow.png創建了另一個[email protected]圖像,它比原始圖像(30 x 30像素)大兩倍? – Lunayo

回答

2

在一般情況下,你應該使用的圖像,這正是它會在屏幕上使用的大小。否則,您會將圖像放大到軟件,並且最終會出現像素未對齊和銳利線條變模糊的情況。請記住,從iOS 4開始,UIKit中的所有測量值都在UIKit點中,其中Retina顯示1pt = 2px,而非Retina,1pt = 1px。

因此,對於您15pt×15pt圖像視圖,您將需要兩個圖像文件,如果你打算同時針對視網膜和非視網膜設備:

  • 細胞arrow.png,15px的×15像素的圖像
  • [email protected],一個30像素×30像素的圖像

然後調用[UIImage imageNamed:@"cell-arrow"](注意缺少的延伸 - UIKit的數字出來給你),以及OS將加載1x或2x版本適當。