2010-08-20 129 views
4

當前我試圖展現在我的iPhone應用程序中的簡單的表,我使用的UITableViewCell與風格UITableViewCellStyleValue1(圖像向左,細節標籤右鍵神韻:)。單元格都具有默認高度(50.0f)。在將圖像添加到單元格之前,我將圖像大小調整爲40x40,以便它不是單元格的總高度(我認爲這看起來很醜)。調整大小圖像不總高度

我這樣做與此代碼:

cell.imageView.image = [UIImage imageNamed:@"icon.png"]; 
cell.imageView.image = [RootViewController imageWithImage:cell.imageView.image scaledToSize:CGSizeMake(40, 40)]; 

這是非常漂亮和完美的作品。但我想在iPhone 4上(也就是更高分辨率的屏幕)完成這項工作。問題在於,iPhone 4上的所有內容都沒有問題,但圖像顯得非常像素化。

這樣做的原因是ofcourse在屏幕上,一切都被炸燬擴展到新的分辨率,還有圖像,所以圖像也許應該是這樣的80×80。但是當我將它們調整到80x80(原件是120x120)時,由於縮放比例的原因,它們看起來很大。

有沒有辦法真正讓我的圖片不是的TableCell的完整高度,但我希望他們在iPhone 4的分辨率更高我應該爲此創建一個完整的新景觀?

哎呀,第一個回覆後,我意識到,我自己寫的功能缺失:

+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize 
{ 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, [[UIScreen mainScreen] scale]); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

正如你所看到的,第一個回覆後,我試圖讓這個與方法的工作UIGraphicsBeginImageContextWithOptions但不知何故,這導致了一個空的形象。

回答

5

我假設你寫了 「imageWithImage:scaledToSize:」 吧?

我再假設你用 「UIGraphicsBeginImageContext(yourSize)」 這一呼籲之內。如果您的平臺是iPhone 4,請將其替換爲「UIGraphicsBeginImageContextWithOptions(yourSize,NO,2.0)」。

「2.0」定義點的比例因子(以點爲單位定義點的大小)。在視網膜前顯示一個點是1x1像素。在視網膜顯示上,一個點是2×2像素。

編輯: 請確保您的資源中有一個名爲「[email protected]」的高分辨率版本的「icon.png」。如果是視網膜顯示,這將自動加載。

+0

謝謝,這確實是一個很好的觀點。我將我的方法添加到第一個問題。不知何故,這導致一個空的圖像。 – 2010-08-20 09:34:39

+0

噢,需要@ 2x圖標嗎?或者它也可以沒有它的工作。我的圖像都是從網絡中提取的,我應該手動重命名它們,然後在iPhone 4上運行該應用程序。 – 2010-08-20 09:46:35

+0

好吧,白色圖像是我自己的愚蠢行爲。謝謝(你的)信息! – 2010-08-20 10:01:17